This is React.js-based frontend for e-Ratos (Embeddable Remote Automatised Teaching and Controlling System) project. It consists of multiple logical modules (within single entry point):
- Session
- Student
- Staff
All output .js files are supposed to be available as same-origin scripts due to LTI v1.0 limitations (all the logic handling authentication is implemented at the backend in Spring Security framework). So, make sure that proxy is set up properly to be available at the same URL as BE API:
- https://domain-name.com for FE
- https://domain-name.com/api for BE (API calls)
- Node.js (v20.12.2 LTS, for dev);
- Npm (v10.5.0);
- Parcel (v2.12.0+ Babel).
- React (v16.12.0);
- Redux (v4.0.4);
- Bootstrap (v4.3.1);
- Bootstrap tables
Make sure to set (.env at src/ root)
`# Define the profile. Allowed values: 'dev', 'prod',
E_RATOS_PROFILE=dev`
`# Define the base URL for the API or application. Allowed values: http://localhost:1234, https://www.e-ratos.xyz
E_RATOS_BASE_URL=http://localhost:1234`
This set-up populates some test data out of the box to redux storage.
Please, see proxy set-up for Parcel at .proxyrc.js The key idea is that for local development with BE server available at http://localhiost:8080 all you http requests were proxying to that URL from the default Parcel URL http://localhost:1234 not causing any CORS issues and preserving http session cookies at localhost;
For development: Launches index.html in browser and tracks changes in .js files
npm start
For debugging:
[Make sure to switch profile at .env file to 'dev' ]
Creates build in /dist folder with all the entry points not minimized for debugging
npm run dev
For production:
[Make sure to switch profile at .env file to 'prod' ]
Creates build in /dist folder with all the entry points minimized for production
npm run prod
- Prepare /dist folder for prod (make sure to set-up proper values in .env)
- Build Docker image from Dockerfile:
docker build -t e-ratos-frontend .
- Create a container from the image:
docker run -d -p 80:80 e-ratos-frontend
nginx.conf is required to respond to any of the app's URL paths, like /login, /staff, etc.
As described here: info
- Add QuestionFBSQ (normal, answered, checked, etc.) see Java abstraction;
- Add QuestionFBMQ (normal, answered, checked, etc.) see Java abstraction;
- Add QuestionMQ (normal, answered, checked, etc.) see Java abstraction;
- Add QuestionSQ (normal, answered, checked, etc.) see Java abstraction;
- Inside Scheme, add CRUD on Options;
- Inside Scheme, add CRUD on Gradings (3 types);
- Inside Scheme add student groups;
- Add students groups management (create group, add member, look-up student, etc.);
- Add mistake reports management (alerts about reports, fixing mistakes, etc.)
- Create this module;
- Add student results review across departments;
- Add student preserved sessions management;
- Add student starred questions management;
- Add student complaints management;
- Add student gamification panel (current status name, total points {weekly, monthly, total}, TOP-10 students weekly, all times, etc.)
Guys, please make sure to cross the finished items out.