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.

- **Author**: Alex Wilkes <[adw4236@rit.edu](mailto:adw4236@rit.edu)>

# 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](https://github.com/FiTRSkills/ForkInTheCode/wiki/Source-Control-Setup)
    - **/workflows**: These files are configurations for [github actions](https://github.com/features/actions),
      a CI tool.
- **/client**: Contains the client side Node.JS project, see [Client Files](https://github.com/FiTRSkills/ForkInTheCode/wiki/Client-Side-Project-Structure)
  for more details.
- **/server**: Contains the server side Node.JS project, see [Server Files](https://github.com/sk6786/ForkInTheCode/wiki/Server-Side-Project-Structure)
  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](https://github.com/FiTRSkills/ForkInTheCode/wiki/FiTR-Core) For more details.