Type | Link |
---|---|
prod | https://proj-happycows.dokku-06.cs.ucsb.edu/ |
qa | https://proj-happycows-qa.dokku-06.cs.ucsb.edu/ |
This is a full rewrite of the application HappyCows, a project sponsored by Mattanjah de Vries, Distingished Professor of Chemistry at UC Santa Barbara.
The application is a simulation game that gives players (typically students in Prof. de Vries' courses) an opportunity to learn about the Tragedy of the Commons.
This rewrite uses the new tech stack being developed for CMPSC 156. This tech stack uses:
- Spring Boot (Java) for the backend
- React (JavaScript) for the frontend
- Spring Security plus Google OAuth for authentication/authorization
- This last point is what distinguishes this tech stack from the one currently in use (as S21) for the three legacy code apps in CMPSC 156: the current apps use Auth0 with JWTs as the authentication/authorization mechanism.
The GitHub actions script to deploy the Storybook to QA requires some configuration; see docs/github-actions.md for details.
If these repos are not yet setup, see the setup steps in docs/storybook.md
.
A description of how the game is played and what scheduled actions are run are given under docs/gamePlay.md
Before running the application for the first time,
you need to do the steps documented in docs/oauth.md
.
Otherwise, when you try to login for the first time, you will likely see an error such as:
- Open two separate terminal windows
- In the first window, start up the backend with:
mvn spring-boot:run
- In the second window:
cd frontend npm install # only on first run or when dependencies change npm start
Then, the app should be available on http://localhost:8080
If it doesn't work at first, e.g. you have a blank page on http://localhost:8080, give it a minute and a few page refreshes. Sometimes it takes a moment for everything to settle in.
If you see the following on localhost, make sure that you also have the frontend code running in a separate window.
Failed to connect to the frontend server... On Heroku, be sure that PRODUCTION is defined. On localhost, open a second terminal window, cd into frontend and type: npm install; npm start";
On Heroku, you'll need to set the following configuration variable:
- Using the Heroku CLI:
heroku config:set PRODUCTION=true --app <heroku app name>
- Or set it on the Heroku Dashboard:
You'll also need to follow the OAuth set up instructions here: docs/oauth.md
.
If you get the following message on Heroku, it probably means that you failed to setup the PRODUCTION
environment variable.
Failed to connect to the frontend server... On Heroku, be sure that PRODUCTION is defined. On localhost, open a second terminal window, cd into frontend and type: npm install; npm start";
To access the swagger API endpoints, use:
-
cd into frontend
-
use: npm run storybook
-
This should put the storybook on http://localhost:6006
-
Additional stories are added under frontend/src/stories
-
For documentation on React Storybook, see: https://storybook.js.org/
- On localhost only: http://localhost:8080/h2-console See also: docs/h2-console.md
- On Heroku, with CLI:
-
Use:
heroku psql --app app-name-here
-
Note that this requires that you have the psql CLI tool installed on your system.
-
This does work on CSIL, but you may need
heroku login -i
in order to login on CSIL -
Example:
[pconrad@csilvm-03 ~]$ heroku psql --app demo-spring-react-example › Warning: heroku update available from 7.59.1 to 7.59.2. --> Connecting to postgresql-tapered-84555 psql (13.4, server 13.5 (Ubuntu 13.5-2.pgdg20.04+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. demo-spring-react-example::DATABASE=>
-
- On Heroku, without CLI:
- Cheatsheet of
psql
commands: https://www.geeksforgeeks.org/postgresql-psql-commands/