- [] Create an app that renders pages for the routes below using the provided wireframes.
- [] We recommend working on the pages in the order the routes are listed.
- [] Work on the nav bar (listed in More Comfortable below) in the wireframes after finishing other Base requirements.
- [] Render HTML using EJS templates server-side.
- [] Store data in JSON files on the backend.
- [] Style the app with Bootstrap or an equivalent CSS library.
- [] Make pages responsive, i.e. usable and attractive in mobile and desktop layouts. Work on mobile layouts first to avoid clutter in mobile layouts.
- [] Use the JavaScript Date object to record when users create each new sighting report in a standardised format.
- [] Render this create time in the sighting view.
- [] Note that sighting report create time is distinct from the alleged sighting time.
- [] When creating and editing sightings, run server-side logic that validates user input and rejects invalid input.
- [] Abstract data validation functions so they can be reused for both creating and editing sightings.
- [] Implement a navbar using Bootstrap or a similar CSS library to navigate between pages in our app.
- [] Use EJS partials (see 3.2.3: EJS Partials) to re-use navbar code from a single EJS template.
- [] If input validation fails for any sighting input, use Bootstrap form validation styles to let the user know what input was invalid.
- [] Use a combination of server response data, EJS conditionals, and Bootstrap validation CSS classes to implement validation UI.
[] Abstract the DELETE HTTP method's logic into a delete function in our JSON file storage module. GET, POST, and PUT methods' logic should already be handled by read, add, and edit functions in jsonFileStorage respectively.
[] Validate the user can't submit a sighting on a date in the future.
[] Use Moment to format sighting creation date in "X days ago" format. https://momentjs.com/docs/#/displaying/fromnow/ [] Use Moment to format sighting date in "Monday, September 12th, 1997" format.
[] Add a visit counter to the home page that keeps count of all home page visits (including repeat visits) via cookies. See 3.5.1: Cookies for a refresher.
[] Update the visit counter with the following. [] The counter only increments for each user once a day. [] The counter increments for visits to any page on the site.
[] Allow the user to select "favourite" sightings. [] Store the list of favourite sightings for a given user in a cookie on the user's browser. [] When that user visits the home page, render a list of links to that user's favourite sightings.
[] Deploy this UFO app on a new AWS EC2 instance.