grocerer

module
v0.0.0-...-33b12f9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2021 License: MIT

README

grocerer

Build Status Go Report Card License

NOTE: No longer maintained.

A RESTful API for

Prerequisites

For building and running:

  • docker
  • make
  • python3

For development:

  • go
  • golint
  • ./scripts/git/install-git-hooks.py

Make commands

make             # Print help
make build       # Build the container
make build-nc    # Build the container without caching
make clean       # Clean the project
make lint        # Run gofmt, golint, and go vet
make push        # Push the container to Docker Hub
make run         # Run the container
make stop        # Stop and remove the running container
make test        # Run the small (unit) tests
make test-large  # Run the large (end-to-end) tests

Backlog

* create tasks to convert project to AWS Lambda (reduce costs of EC2 instance)
* add AUTH header
* add check for "master" branch in pre-push hook
* add code coverage with codecov.io (e.g. [![Coverage](https://codecov.io/gh/etcd-io/etcd/branch/master/graph/badge.svg)](https://codecov.io/gh/etcd-io/etcd))
* add git pre-push hook to search for "DONTMERGE" messages
* add git pre-push hook to search for WIP commits
* add godoc (e.g. [![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/etcd-io/etcd))
* add goimports to pre-commit.py
* add persistence of OurGroceries authentication cookie so tests do not re-login unnecessarily
* change GetList to use ourgrocer.Client
* change makefile with reference from https://vincent.bernat.ch/en/blog/2019-makefile-build-golang
* change push.sh to push.py for cross platform building
* change test package to <package>_test (https://medium.com/@benbjohnson/structuring-tests-in-go-46ddee7a25c package myapp_test; import ("github.com/benbjohnson/myapp"); func Test(t *testing.T) { ok(t, myapp.Function()) } )
* change to automatically sync of README on Github to the description on Docker Hub
* change to deploy to AWS EBS from travis-ci
* change to use a credentials helper for Docker username & password (https://docs.docker.com/engine/reference/commandline/login/#credentials-store)
* create a Dockerfile for development environment (i.e. `make dev` presents shell ready to edit and build: `/go/src/ $ go build`)
* fix "leftover" containers being created from make build
* fix volume mounting on WSL/Linux (https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly refer to "Running Windows 10 18.03+ or Newer" or "Running Windows 10 17.09")
* implement RuneReader inteface for io.Reader to use with regexexp.FindReaderIndex
* HttpsWithNoAPIGateway: call http.ListenAndServeTLS (https://blog.cloudflare.com/exposing-go-on-the-internet/ If I set up HTTPS for a single instance EBS, then the golang server itself must handle the HTTPS traffic.)
* HttpsWithNoAPIGateway: create a .ebextensions/lets-encypt.yaml (https://gist.github.com/tony-gutierrez/198988c34e020af0192bab543d35a62a https://medium.com/@jameshamann/ssl-certificates-with-rails-aws-elastic-beanstalk-and-lets-encrypt-8b047d527a60 https://hackernoon.com/easy-lets-encrypt-certificates-on-aws-79387767830b https://go-to-hellman.blogspot.com/2015/11/using-lets-encrypt-to-secure-elastic.html https://www.reddit.com/r/aws/comments/81udoh/https_for_eb_with_single_instance_ec2/ https://gist.github.com/syamn/8a37d3f0c050d0f9a9d5a0ddab9cb816 https://github.com/SammyHam/LetsEncrypt-SSL-config-for-Elastic-Beanstalk)
* HttpsWithNoAPIGateway: integrate the .ebextensions deployment with travis-ci (Create a zip file with the layout of: - .ebextensions/lets-encrypt.yaml - Dockerrun.aws.json)
* RemoveOpenAPIGen: add generate_swagger.py (switch the generation to generate the openapi.yaml from the Golang code's comment annotations https://devopstree.com/how-to-implement-swagger-api-server-for-golang-step-by-step-guide/)
* RemoveOpenAPIGen: commit the generated go-server code (once the server api is finalized, use the go-server code generated by opeanapi-generator as a basis for my code.  E.g. main.go, routers.go, model_version.go)
* RemoveOpenAPIGen: create a build Dockerfile (create a single Dockerfile based off the Dockerfile generated from openapi-generator)
* RemoveOpenAPIGen: extract Dockerfile.generate to OneNote
* RemoveOpenAPIGen: move main.go to /cmd directory
* RemoveOpenAPIGen: remove openapi-generator
* RemoveOpenAPIGen: replace import 'sw "./go"' with 'sw github.com/adammansfield/ourgroceries-rest-api/

Directories

Path Synopsis
internal
go
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL