- About the Repo
- Getting Started
- Running the Tests
- Code Structure
- Tech
- Deployment
- Contributors
- License
This repo shows the development state of the final project for COMP4004.
Despite being available on github, this repository is intended as a read-only resource and has been licensed as such. Permissions are not given to use or modify this software.
Running this code requires some dependencies:
This code's development environment was setup using linux and was not developed with windows support in mind, although not tested it is also likely functional in MacOS. If you are required to run this repository, it is highly recommended you do it with a linux distribution and or virtual machine.
If you are running docker using windows you may find unexpected errors
After cloning the repo to your local machine enter the root directory and run make install
.
Having completed this, in the root directory run make up
.
This runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
Tests in this repository can be found in three forms:
- backend tests
- frontend tests
- acceptance tests
And can be run in the following ways:
Manual testing for ensuring feature compatibility can be done by starting the app as normal with make up
and logging into one of the available accounts.
Administrator: [email protected] Student: [email protected] Professor: [email protected]
All accounts on this application make use of the password supersecret
As this is not a production version of the application, all new accounts are also created with the password supersecret, to test new accounts simply use given e-mail plus this password.
Functionality is built to allow for various passwords however for testing purposes it was left in this state.
Enter the frontend/
directory and run the command npm run test
Start the project by running a shell in the root directory of the project and running make up
Once the project is running, open a new shell, enter the backend/
directory and run the command npm run testLocal
Feature files can be found in the directory backend/features
This code is ran using selenium
and as such, the test suite requires a viewable browser window. While running the test suite ensure adequate space on your monitor for selenium to interact.
We choose to utilize selenium for this project as it was required for the project to utilize cucumbe
scenarios
Start the project by running a shell in the root directory of the project and running make up
Once the project is running, open a new shell, enter the backend/
directory and run the command npm run bdd
Explained here are the most important points of the code structure, where to find configs, etc.
.
├── backend
| ├── config
| ├── features
│ | ├── bddTest
│ | | ├── share-objects # Commonly utilized testing objects
│ | | ├── step-definitions # Definitions corresponding to steps outlined in Cucumber feature files
│ | └── ...
| ├── public # Static assets that are deployed as-is
| ├── scripts # Utility scripts used by package.json build scripts
| ├── src # Code directory for backend container
│ | ├── db # Database structure related files
| | | ├── config # Database configuaration files, detailing usernames, passwords, host, etc.
| | | ├── migrations # Files to initialize and update table schemas
| | | ├── schemas # Files outlining the structure of table columns and values
| | | ├── seeders # Files utilized to initialize database tables with seed data
| | | ├── utils # Common utitlity files utilized by several other files
| | | ├── database.js # File used to initialize database and connection to database it
| | | ├── seedData.js # Sample data used to populate database upon initialization
| | | ├── tableNames.js # Object that outlines the names of the tables within the database
│ | ├── services # Code directory detailing project services and their accompanying tests,
hooks, and db related files
│ | ├── utils # Common utitlity files utilized by several other files
│ | ├── app.js # Main app file starting and handling node server.
│ | ├── authentication.js # Initilization file for authentication service
│ | └── ...
| ├── test # Code directory containing general backend tests
| ├── .editorconfig # Configuration maintaining coding styles
| ├── .eslintrc.json # Airbnb Eslint configs/rules
| ├── .gitignore # Files that should not be posted to git (ex. npm modules)
| ├── .sequelizerc # Configuration file for sequelize module
| ├── Dockerfile # Backend container configuration
| ├── package.json # Frontend code dependencies, configurations, build scripts, and metadata
| ├── selenium-cucumber-js.json # Configuration file for selenium-cucumber-js module
| ├── yarn.lock # Specific dependency versions
│ └── ...
├── frontend
| ├── public # Static assets that are deployed as-is
| ├── src # Code directory for frontend container
│ | ├── Components # Non-page level react components (ex. login form)
│ | ├── Pages # React component pages (ex. admin, student)
│ | ├── Server # Directory containing client-side feathers initialization
│ | ├── Utils # Reusable functions and globals
│ | ├── App.jsx # Main app file composing the entire application
│ | ├── AppRouter.jsx # File outlining the routes existing in the application
│ | └── ...
| ├── .eslintrc.js # Airbnb Eslint configs/rules
| ├── .gitignore # Files that should not be posted to git (ex. npm modules)
| ├── Dockerfile # Frontend container configuration
| ├── jsconfig.json # Project config (enables absolute path imports)
| ├── package.json # Frontend code dependencies, configurations, build scripts, and metadata
| ├── yarn.lock # Specific dependency versions
│ └── ...
├── .gitignore # Files that should not be posted to git (ex. npm modules)
├── Makefile # Project build management commands
├── docker-compose.yml # Container runner and configurations
└── ...
Frontend:
Backend:
Database:
DevOps:
Testing:
Linting and Formatting:
This website is currently not deployed.
As this code is currently unlicensed, no permissions are given to use or modify this software.