Skip to content

jrogozen/wargroovy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wargroovy

handlers

/auth

  • - POST - /auth/login

/user

  • - POST /user
  • - GET /user (uses jwt for auth)

/map

  • - 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

/photo

  • - POST /photo

relationships

users have maps maps have one user

maps have many photos photos have one map

deployment todo

  • 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

MVP todo

  • 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

ratings feature

  • 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

tags feature

  • /map/tags get most popular tags
  • map_tags for map_id, tag_name
  • return tags per map, map list
  • map list filter by tags

map_comments feature

comments can nest max 2 levels (main thread, reply)

  • post comment
  • edit comment
  • mapById, mapBySlug includes comments

future todo

  • 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

punt

  • [ ] image pipeline to create thumbnails and upload images to gloud bucket
  • connect GAE and domain probably wait on this. frontend and backend prob separate services
  • continous integration (circle CI, drone, ...)

helpful commands

connect to production sql

PGDATABASE=production gcloud sql connect wargroovy-production -u postgres

deploy app

gcloud app deploy

deploy gcloud functions

cd functions && gcloud functions deploy RedditBot --runtime go111 --env-vars-file .env.yaml --trigger-http

local dev

cd web && gin -p 4000 -a 8080 -t ../ -d . run main.go

runs the proxy on port 3000 (main app on 8080)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published