- Google Authentication Login
- Google Class Sync
- Google Classroom Integration
Can register google account with the Strapi Backend as a classroom manager, view for listing google classrooms to add to Code Sparks, and can add user/mentor information to create a classroom from a google course.
Run the CASM application as normal following the README below, can sign in with google at the user login. Make sure you run yarn/npm install on the front and back end to install additional packages.
To be able to access the Google API you need to create a Google Cloud Project and enable the all the scopes for accessing the Google Classroom API. Under the credentials tab, you need to generate an Oauth2 web client key and set the Authorized JavaScript Origins
to the client URI ex. localhost:3000
and the server ex. localhost:1337
. Copy your client id and client secret as you will need that for later.
Once created, you then need to create a .env file for both the frontend client and the server to store your client keys that you created for the google project.
For the client directory your .env should look like this
VITE_CLIENT_ID=<Your Client ID from google>
and the .env in the server directory should look like this
CLIENT_ID=<Your Client ID from google>
CLIENT_SECRET=<Your Client secret from google>
REDIRECT_URL=postmessage
If properly set up, you should be able to use google to sign in.
Computation and Science Modeling through Making
Cloud-based programming interface
client is the frontend of the application. It is powered by React and Blockly.
server is the web server and application server. It is powered by Node and Strapi.
compile is an arduino compiler service. It is an unofficial fork of Chromeduino.
The project is divided into three conceptual environments.
The development environment is composed of five servers. The first one is run with the Create React App dev server. The later four are containerized with docker and run with docker compose.
-
casmm-client-dev
- localhost:3000 -
casmm-server-dev
- localhost:1337/admin -
casmm-compile-dev
-
casmm-db-dev
- localhost:5432The first time the db is started, the init_db.sh script will run and seed the database with an environment specific dump. Read about Postgres initialization scripts here. To see how to create this dump, look here.
-
casmm-compile_queue-dev
casmm-client-dev
- Follow the client setup
- Run
yarn start
from/client
casmm-server-dev
, casmm-compile-dev
, casmm-db-dev
, and casmm-compile_queue-dev
-
Install docker
-
Run
docker compose up
from/
Grant permission to the scripts and server directories if you are prompted
The staging environment is a Heroku app. It is composed of a web dyno, compile dyno, Heroku Postgres add-on, and Heroku Redis add-on.
casmm-staging
- casmm-staging.herokuapp.com- The web dyno runs
server
- The compile dyno runs
compile
- The web dyno runs
casmm-staging
is automatically built from the latest commits to branches matching release/v[0-9].[0-9]
. Heroku runs the container orchestration from there.
The production environment is a Heroku app. It is composed of a web dyno, compile dyno, Heroku Postgres add-on, and Heroku Redis add-on.
casmm
- www.casmm.org- The web dyno runs
server
- The compile dyno runs
compile
- The web dyno runs
casmm
is automatically built from the latest commits to master
. Heroku runs the container orchestration from there.
All three components of the application have their own dependencies managed in their respective package.json
files. Run npm outdated
in each folder to see what packages have new releases. Before updating a package (especially new major versions), ensure that there are no breaking changes. Avoid updating all of the packages at once by running npm update
because it could lead to breaking changes.
This is by far the largest and most important dependency we have. Staying up to date with its releases is important for bug/security fixes and new features. When it comes to actually upgrading Strapi make sure to follow the migration guides!
All of the deployments and releases are handled automatically with GitHub Actions. The workflows implement custom Actions that live in the auto repo.
We will follow this git flow for the most part — instead of individual release branches, we will have one to streamline staging deployment
Locked for direct commits — all commits must be made from a non-protected branch and submitted via a pull request with one approving review
- master - Production application
Commits can be made directly to the branch
- release - Staging application
- develop - Working version of the application
- feature/<
scaffold
>-<feature-name
> - Based off of develop- ex. feature/cms-strapi
- hotfix/<
scaffold
>-<fix-name
> - Based off of master- ex. hotfix/client-cors
Before submitting a pull request, rebase the feature branch into the target branch to resolve any merge conflicts.
- PRs to master should squash and merge
- PRs to all other branches should create a merge commit