Skip to content

πŸ“ˆπŸ“ Collaborative workspaces for exploring the world of math

Notifications You must be signed in to change notification settings

visalrotanak/vmt

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Virtual Math Teams (VMT) Build Status License: AGPL v3 PRs Welcome

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.

License

  • 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

Installation (Technologies used)

To provide the colloaboration infrastructure, this application uses a combination of:

Setup for local Development

  1. Fork this repo (instructions)
  2. $ npm install
  3. $ cd client && npm install cd back up to root...
  4. cp .enx.example .env
  5. $ npm run start-dev This will start the react development server on port 3000 and the express server on 3001
  6. We utilize prettier for formatting.

Deployment

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 Rebase Workflow

  1. git checkout master
  2. git pull --rebase upstream master
  3. git push origin master
  4. git checkout -b feature-branch
  5. git add/git commit (on feature branch)
    • To close an issue, add 'closed #[github issue number]' to commit message
  6. git pull --rebase upstream master (on feature branch)
  7. git push origin feature-branch
  8. Submit pull request (your feature branch to upstream master)

More Work to do (Pull Request not accepted)

  • Go to Step 5 in Git Rebase flow.

Pull Request Accepted?

  1. git checkout master
  2. git pull --rebase upstream master
  3. git push origin master

Totally done

  1. git checkout master
  2. git branch -d feature-branch

Troubleshooting

  • git remote -v to see remote origins
  • git remote add upstream https://github.com/mathematicalthinking/encompass.git
  • if existing upstream git remote rm upstream

Styleguide

We use Prettier Add the VS code extension and configure it to format on save.

Testing

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.

Project structure

Frontend (client)

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.

πŸ“ Routes

There are two primary routes. / for guest users and /myVMT for logged in users.

πŸ“ Containers

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).

πŸ“ Layout

The layout directory is for organizing...layouts. Each file roughly corresponds to a page.

πŸ“ Components

The shared/reusable UI parts of the app live here

Backend (root)

πŸ“ Routes

πŸ“ Controllers

πŸ“ Models

πŸ“ Middlerware

Sockets.js

Additional notes

This project was bootstrapped with this template refer to its README for additional information regarding the directory structure.

Helpful links

Desmos API Geogebra API

About

πŸ“ˆπŸ“ Collaborative workspaces for exploring the world of math

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 89.6%
  • CSS 10.1%
  • Other 0.3%