Chapter X

Milestones

Class Project Milestones!

Subsections of Milestones

Express Starter Project

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 1 - Express Starter Project

Follow the instructions in the Example Project to build a project using Node.js and Express that includes the following features:

  1. A working GitHub Codespace containing Node.js
  2. A bare-bones Express application
  3. Update the Express application from CommonJS to ES Modules
  4. Application logs with Winston and Morgan
  5. Install other useful Express libraries like compression and helmet
  6. Install and configure Nodemon
  7. Install and configure dotenvx
  8. Create code documentation with JSDoc and OpenAPI comments
  9. Enable linting and formatting with ESLint and Prettier

Effectively, just follow along with the example project and submit the resulting repository. This will be the starting point for the rest of the milestones!

Add a Database

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 2 - Add a Database

Building from the previous milestone, expand upon the starter project by adding the following features:

  1. Create an SQLite database
  2. Install and configure the Sequelize ORM and the Umzug migration tool
  3. Configure an automated process to migrate and seed the data on application startup
  4. Create database migrations, seeds, and models matching the database diagram given below

Database Diagram

Database Diagram Database Diagram

Seed Data

Seed data is stored in CSV files that can be downloaded from Canvas. See Seeding from a CSV File for an example of how to read data from a CSV file when seeding the database.

RESTful API

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 3 - RESTful API

Building from the previous milestone, expand upon the starter project by adding the following features:

  1. Build a full RESTful API to manage the communities, counties, metadata, and documents. The RESTful API should faithfully implement the Open API specification given below.
    1. Notice that the /api/v1/documents/{id}/upload API path handles file uploads! We haven’t covered that in these examples, but there are some prior examples in this class to build upon.
    2. Pay special attention to the example inputs and outputs for each route. Your JSON should exactly match the structure of those examples. Note that some fields may be hidden in associated objects that are included.
  2. Each API endpoint should include full unit tests, with an explicit goal to test both successful and unsuccessful operations performed by that endpoint.
  3. All functions, files, and exported objects should be documented using JSDoc and Open API following the examples given.

Database Diagram

Database Diagram Database Diagram

Open API Specification

Tip

You can download this specification file by clicking the link below, and then edit the servers section to test it using your server. You can use the Open API Editor to see a cleaner view of this JSON file.

The OpenAPI specification looks best using the light theme. You can adjust the textbook theme in the left sidebar at the bottom of the textbook page.

Authentication

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 4 - Authentication

Building from the previous milestone, expand upon the starter project by adding the following features:

Vue.js Starter Project

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 5 - Vue Starter Project

Follow the instructions in the Example Project to build a project using Vue.js that includes the following features:

Effectively, just follow along with the example project and submit the resulting repository. This will be the starting point for the rest of the milestones!

Vue.js CRUD App

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 6 - Vue.js CRUD App

Building from the previous milestone, expand upon the starter project by adding the following features:

Vue.js Components

This set of milestones is all about building a RESTful API and interface for the Lost Kansas Communities project.

Milestone 6 - Vue.js CRUD App

Building from the previous milestone, expand upon the starter project by adding the following features: