Skip to content

Project Structure

Jacob Canedy edited this page Feb 4, 2025 · 1 revision

This page provides an overview of the file structure of the project. This includes why files exist, what they are used for, if they are safe to edit, and any other information about specific files. This is not to be confused with architecture that is generally a bit more abstract.

Structure overview

This project consists of 3 Node.JS projects, two nested within another.

  • Top-level project
    • Client side project (React)
    • Server side project (Express)

The top-level project contains any information that is common to sub-projects, as well as the build process for production.

Top Level Files and Folders

  • /.github: Any configurations that are specific to github, if source control changes, this folder should be modified to the equivalent, see Source Control Setup
    • /workflows: These files are configurations for github actions, a CI tool.
  • /client: Contains the client side Node.JS project, see Client Files for more details.
  • /server: Contains the server side Node.JS project, see Server Files for more details.
  • /node_modules: Dependencies installed by Node.JS. You should not edit anything in this folder.
  • /package.json: Node.JS configurations.
  • /package-lock.json: Ensures everyone working on the project has the same dependency versions. You should not need to edit this because it is automatically generated by npm.
  • .gitignore: Any files listed here are not checked into the repository.
  • README.md: Displays underneath the files on github.

Challenges with current structure

Having the client and server so separated means that if there is common code (e.g.) error checking / input validation, it will be more difficult to import that code into both modules. A third sub-project called "common" or "core" may need to be created. See Common Code For more details.

Clone this wiki locally