Monorepo for omscentral.com containing the following projects:
To install top-level dependencies:
npm ci
Before proceeding, follow the instructions in project-specific READMEs in the order above (graphql, server, then client).
Formats all source code and package.json.
Tests services.
Starts services in development mode w/hot-reload.
Builds services.
Starts services in production mode. Note: You must run npm run build
first.
Runs cypress integration tests that enforce correct behavior. Requires the application to be up with npm run dev
or npm start
first.
When finished, users created during tests may be cleaned up using this script.
OMSCentral is a web application written primarily in TypeScript.
This section provides a high level summary of the current architecture:
- The client is a React single-page-application (SPA) that allows users to see anonymous reviews.
- Authenticated users may also publish, edit, or delete reviews that they own.
The following is a short list of technologies used, ordered by category:
- React library is used for building the user interface.
- material-ui is used as a React UI framework.
- react-hook-form is used for creating forms.
- sentry is used for error reporting and logging.
- graphql is a query language used to communicate between the client and the server.
- apollo is a graphql client library.
- Firebase is used for deployment.
- cypress is used for writing tests.
Please refer to client/package.json file for the most up-to-date list of dependencies used with version numbers mentioned.
- Persists course reviews and semester information to the database (see persistence section below).
- Updates the statistics for courses (e.g average workload, minimum rating etc.).
The following is a short list of technologies used, ordered by category:
- Node.js based express
- bluebird is used for access to synchronization primitives like promises in JavaScript.
- winston is used for logging.
Please refer to server/package.json file for the most up-to-date list of dependencies used with version numbers mentioned.
- Courses, semesters, reviews, etc. is stored in postgres (relational database).
- Server reads and writes to postgres database using objection js and knex js.
- User authentication is a security layer, allowning users to register for an account.
- After his/her credentials are verified at time of login, the user can modify review data after.
- Identity as a Service (IaaS): Firebase.
- Third party dependencies are installed using npm.