- - POST - /auth/login
- - POST /user
- - GET /user (uses jwt for auth)
- - POST /map
- - POST /map/{mapId}/rate
- - GET /map/{mapId}
- - GET /map/bySlug/{slug}
- - GET /map/list - list of compaigns with queryParam
- - PUT /map/{mapId}
- - DELETE /map/{mapId}/photo
- - POST /photo
users have maps maps have one user
maps have many photos photos have one map
- set version of 3rd party packages
- set up error monitoring (datadog, ...)
- set up google sdk locally
- set up gcloud project, enable google app engine (GAE)
- deploy to GAE
-
set up SSL - set up postgres on google cloud
- set up env variable injection for GAE
- CI github hook (master push -> deploy)
- best way to access cloud sql db.
gcloud sql connect wargroovy-production -u postgres
- either remove chi/jwtauth or jwt/go
- split out handler code into multiple files per package (create, update, etc...)
- simplify nested conditionals in web response code (return a response?)
- set up level based logging. maybe logrus
- jwt middleware should return json instead of 40x + text
- finish protecting user actions with jwt
- clean up models/controller interactions. models should return fully completed response :)
- combine maps + campaigns
- add to campaign: download code, type
- do not return user email
- add to user: name
- change photos to separate table
- upload photos route
- change user/get to work based off of jwt. return not logged in without it. prevents people from scraping for users
- add slug field to maps. generate this on the server for use in url
- add finding map by slug
- can create user without username AND email (but fail if only one supplied not two)
- delete map photos
- delete map
- edit user
- api return correct status codes (20x, 40x)
- jwt set as cookie in response
- increment map view
- make work with draft-js data structure
- filter by type for map list
- return author for map info (userId -> username)
- log a billion times more
- add post rating api
- get map apis should return a user's vote on a map
- sort map list by rating
- list map apis should return aggregate score per map
- fix users should be able to override previous vote
- /map/tags get most popular tags
- map_tags for map_id, tag_name
- return tags per map, map list
- map list filter by tags
comments can nest max 2 levels (main thread, reply)
- post comment
- edit comment
- mapById, mapBySlug includes comments
- replace gorm with raw sql queries example
- set up db migrations. using goose
- discord w/ deploy / error integrations
- public issue repo on github
- ML model to flag images that are not associated with wargroove
- add map comments
- jwt auth the photo upload api (requires username/email-less user creation)
- delete user
[ ] image pipeline to create thumbnails and upload images to gloud bucket-
connect GAE and domainprobably wait on this. frontend and backend prob separate services -
continous integration (circle CI, drone, ...)
PGDATABASE=production gcloud sql connect wargroovy-production -u postgres
gcloud app deploy
cd functions && gcloud functions deploy RedditBot --runtime go111 --env-vars-file .env.yaml --trigger-http
cd web && gin -p 4000 -a 8080 -t ../ -d . run main.go
runs the proxy on port 3000 (main app on 8080)