Giter VIP home page Giter VIP logo

refeed-rampage's People

Contributors

dependabot[bot] avatar matthewkmayer avatar

Stargazers

 avatar

Watchers

 avatar  avatar

refeed-rampage's Issues

Load testing?

Should we load test?

A big win is probably not creating a new DynamoDB client on every request that hits the DB.

Backend instrumentation?

Should we be concerned with backend instrumentation? Specifically performance things like response fulfillment time.

Get a baseline before changing things in the name of performance.

Implement happy path tests for frontend

The frontend is requiring some refactors to apply better patterns. To ensure we don't break existing behavior we need to bulk up our tests to be able to ensure we don't miss something.

Add authentication

First pass: store creds in the database and expose a new endpoint for signing in, returning a JWT.

Later we should try github auth or twitter or something so we don't have to manage creds.

First pass checklist:

  • add login endpoint to backend with hardcoded user/pw
  • save bits returned in session/local storage
  • return a JWT after login ( https://github.com/Keats/jsonwebtoken )
  • send auth header on requests
  • auth with JWT on backend - in memory store at first, then dynamodb for session storing?

Goal: 3 minute build and test

Let's keep our entire build time down to three minutes.

We're at ~5.5 for the longest step of the parallel jobs right now.

Test after deploy

We should run smoke tests after deployment has completed. This is from #13 .

First step could be verifying the tag was released. Requires #29 and #28 .

Deployment plans

This should be usable on the web.

First step is deploying the frontend. We can see about deploying the backend to Lightsail or other easy to deploy setup.

the checklist

  • spin up lightsail instance
  • set up perms for Dynamodb and verify with aws cli
  • set up VPS with nginx, let's encrypt, etc...
  • make new ssh key
  • have deployments on tags push something to the instance like a text file
  • do real deployments with backend and frontend
  • post test deploys (another ticket?) #31

Back button doesn't work on meal detail or edit page

Navigate to meal list page. Click a meal. Click back. See nothing happens.

It should go back to meal list page.

Same behavior with editing a meal: back button doesn't go back to meal list.

This should be an automated test. ๐Ÿ‘

Use JWTs as intended

parent ticket for doing JWTs right

Work to do:

  • backend: login should return the session jwt and refresh jwt (refresh jwt in an httponly cookie)
  • backend: new endpoint: /refresh should take only the refresh jwt and give a new one
  • backend: reject expired JWTs
  • backend: reject refresh JWT used as auth
  • frontend: handle new login bits of two tokens
  • frontend: see if session jwt has or will expire soon and get a new session token via refresh token (should work after not having the tab open for 15m)

Resources:

original ticket

Right now we're using JWTs as long lived instead of issuing a 15 minute token and a refresh token. We should do the right thing with keeping the refresh token around and using that.

See #39 for info on how the JWTs should be used.

Add backend throttling?

Should we keep people from steamrolling things? Especially the backend, when we don't have auth yet.

nginx to reverse proxy and host html?

We could use nginx as a reverse proxy to the backend service and to serve html.

A stepping stone to go from running "serverless" on ECS Fargate to Lambda functions instead of the warp backend and S3/Cloudfront instead of nginx.

Make a TCK for backend mocking

A technology compatibility kit (TCK) is a service that acts like another service, but is mocked and is faster.

For the frontend behavior tests, we can replace the real backend with https://github.com/gomicro/duty . To ensure it works the same as the backend, we'll run the same backend tests against it to catch any drift.

This should help achieve #9 .

Make frontend errors cleaner/clearer

Right now we dump the entire error message to the page. We should display what went wrong without lots of detail that's not meaningful.

Dump full error to console and state what went wrong and what could maybe be done. "Couldn't reach the API, please try again."

Add paging

We'll need support in the backend and frontend.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.