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