• Skip to primary navigation
  • Skip to main content
  • Skip to footer
Code The Dream School
Code the Dream Labs Logo

Code The Dream School

Main hub for class materials for Code the Dream’s classes

  • Code the Dream Home

Search Code The Dream School

Node/Express Final Project: Full Stack

Developing Your Own Express Application

For the final project, you will each design and develop your own Express application.  You will have two weeks to complete the project.  As that is a short time for a fully functional application, the applications will have to be relatively simple, with only a few features implemented.

For students who would like to become interns with Code the Dream, the final project is very important, because it is the best indication of how well you would succeed as an intern.

Goal of the Application

The goal of the project is to showcase what you have learned during class. You will have the opportunity to demonstrate your knowledge and creativity. You are required to create an Express application from scratch. A proposal for what your application will do is required to be submitted before you start working on the project.

Before You Start

Please discuss your proposal with us.  You will fill out a form to describe your proposal, saying what you would like to do.  We will evaluate the proposal to make sure:

  • That it is doable in the allotted time.  If the project seems too complicated, we may suggest that it be limited to just a few features.
  • That it demonstrates the skills you have learned in the class series so far.  It should not be so simple that it doesn’t show key skills.  
  • That it gives you an opportunity to demonstrate creativity, which is important for a developer.

You may find that you want to use some concepts, technologies, or npm packages we didn’t cover, which is worth some extra points so long as it doesn’t get too hard.

Although you will need to keep your final project simple, think about an application you might want to create eventually. Perhaps you could implement some subset or feature of this future application.

Be Careful with Your MongoDB Password

Do not include the MongoDB URI in your code, even temporarily. Use the dotenv NPM package so that it can be stored in a .env file. Be sure you have a .gitignore file so that the .env file and the node_modules directory are not delivered to Github or Render.com

Requirements for the Project (Rubric)

  1. Create a full Node/Express application from scratch using the MongoDB database. It must contain the following elements: 

Models & Controllers

  1. At least two Mongoose data models. One of these must be a User data model, as you need to implement logon.
  2. Implement user registration and logon. Authentication must use JSON Web Tokens. Passwords must be stored hashed.
  3. Model attributes should use several different data types (number, string, boolean, date, array etc.).
  4. Include validation of your attributes to prevent the creation of invalid records.
  5. For any models beside the User model, implement all the CRUD (create, read, update, delete) operations in your controllers.
  6. Bonus: implement some non-CRUD operations (like sorting, paging, etc.).
  7. Implement routes and controller operations so that registration, logon, and all CRUD operations can be performed via APIs.
  8. Implement access control middleware so that at least the create/update/delete operations require authentication. You can have unauthenticated read operations if you choose.
  9. Implement error handling middleware so that appropriate status codes and error messages are returned to the caller if errors occur.
  10. Test registration, authentication, and all CRUD operations using Postman.
  11. Bonus: implement some automated tests using Chai.

Front End

  1. Implement a front end for your application. Students who have learned React should implement the front end in React. Other students should implement the front end using HTML, JavaScript, and CSS. If the front end is not React, it should be served up from the public directory of the same Express instance that hosts the back end.
  2. In the front end, implement support for registration, logon, and logoff operations.
  3. Implement views for the CRUD operations for each model:
    • Index – view to list all the records for that model, including buttons or links for show, edit, and delete.
    • New – form to create a new record
    • Edit – form to update an existing record
    • Show – view to see a specific record
  4. Form controls should include several types of input fields, which might include inputs, textareas, dropdowns, checkboxes, and radio buttons.
  5. Links or buttons should be provided to help the users navigate the application.
  6. Style your application by adding CSS to make the application attractive. Consider the inclusion of images, color, fonts, and other CSS styling.

Deployment

  1. Include security protections for your back end.
  2. Deploy the back end to Render.com.
  3. Students with React front ends will deploy the front end separately.

Bonus

  1. Do something extra.  This could be the implementation of a more complicated data model, or use of additional npm packages, callouts from the back end to other public APIs, or whatever your creativity inspires.

Reuse of Code

Some of the function of this project is implemented in the jobs-api project of the class. You can reuse code from that project to assist you, but your Mongoose data models must be different, to support different data.

Submission

You should submit a link to a Github repository which contains your application. It is highly encouraged that you use git branches to implement each feature. This is so that if you make a mistake, it does not ruin the work you have done up to that point. We will share a link to a form before the due date which you can use to submit your link. You should also submit a link to the front end for your application.

Presentation

Each student will present their application in a Zoom meeting.  You will only have 5 minutes for each presentation, but we will have reviewed your application with you ahead of time.

Footer

Copyright © 2025 Code the Dream School | All Rights Reserved | Privacy Policy