## 2 week project
Build any sort of content management system (CMS). i.e. something that stores data in a database, which a user is able to access and add to.
Suggestion: **a blogging platform**
### User stories:
> As a user I can **go to the home page and see all of the public blog posts**, without having to log in.
> As a user I can **register on the site, and log in.**
> As a logged in user I can **go to a page which shows all of my posts**
> As a logged in user I can **submit new posts and mark them as public or private**
### Basic Requirements for version 1
- At least one issue with plan for the app.
- This should be psuedo code of a users journey through the app - explanation of what happens at each end point.
- The server is built using express
- The website is mostly **server side rendered** so use handlebars to show the blog posts and other pages.
- The data is stored in a postgres SQL database
- The user's passwords are hashed in the database
- A cookie containing a JWT should be made when a user logs in
- You can only reach the `add-post` page when logged in (i.e. it is secured)
- The design uses `flexbox` or `grid` for layout
- There are tests for all of the non secured routes on the server
- There are unit tests for all pure functions.
- there is an eslint config file in the repo
- there is a lint script in the `package.json`
- The site is hosted on Heroku
- The repo is linked to travis, and travis runs both the `lint` script and the `test` script
### Stretch goals for version 2
- There is server side validation
- There is client side validation
- There are database tests on a mock database
- Write supertest tests for the routes on your server that require a cookie...
- Use error handling in express - https://thecodebarbarian.com/80-20-guide-to-express-error-handling