Virtual Math Teams (VMT) provides a collaboration infrastructure for visual math and geometry tools, such as Geogebra and Desmos. To provide this infrastructure, this version uses React.js and Redux.js, express and sockets.io. see 'Installation' below.
- For non-commercial uses, this application is licensed under the AGPL license.
- Any use of VMT for commercial purposes is subject to and requires a special license to be negotiated with Mathematical Thinking.
- See VMT license details
To provide the colloaboration infrastructure, this application uses a combination of:
- Fork this repo (instructions)
$ npm install
$ cd client && npm install
cd back up to root...- cp .enx.example .env
$ npm run start-dev
This will start the react development server on port 3000 and the express server on 3001- We utilize prettier for formatting.
To deploy this project to staging or production go to the root level directory and run
$ ./deploy.sh <username> <environment>
where enviornment = production || staging
This can only be done by the core contributors.
git checkout master
git pull --rebase upstream master
git push origin master
git checkout -b feature-branch
git add/git commit
(on feature branch)- To close an issue, add 'closed #[github issue number]' to commit message
git pull --rebase upstream master
(on feature branch)git push origin feature-branch
- Submit pull request (your feature branch to upstream master)
- Go to Step 5 in Git Rebase flow.
git checkout master
git pull --rebase upstream master
git push origin master
git checkout master
git branch -d feature-branch
git remote -v
to see remote originsgit remote add upstream https://github.com/mathematicalthinking/encompass.git
- if existing upstream
git remote rm upstream
We use Prettier Add the VS code extension and configure it to format on save.
We utilize Cypress for end to end testing
To run the tests restart the server in test mode npm run test
A cypress window will open allowing you to run one or all the integration tests.
There are one million and one ways to structure a react app. I've found the following structure to work well enough.
App.js serves as the entry point of the application and exposes the Redux store and react-router to the rest of the application.
There are two primary routes. /
for
guest users and /myVMT
for logged in users.
Containers come in one of two forms. Either they inject props into a component from the redux store. Or they manage shared local (i.e. non-redux) state for two or more react components (or they do both).
The layout directory is for organizing...layouts. Each file roughly corresponds to a page.
The shared/reusable UI parts of the app live here
This project was bootstrapped with this template refer to its README for additional information regarding the directory structure.