This project scrapes and processes data from the school website (Vulkan Optivum) using Node.js every hour. Its UI is built with React and MUI.
This app was designed specifically for my school (ZST Radom). Some edge cases that exist in other schools might not be handled. The default configuration for my school is included for easy deployment.
The frontend of the application is a Single Page Application built with React and MUI.
- Chips for groups and advanced classes
- Dark mode
- Displays metadata about a plan
- Searchable categories
- Warns when the plan is stale
- Capable of deriving teacher and classroom plans only from class plans
- Click on any teacher, room, or class to redirect to its plan
- Dynamic URL routing
- Single Page Application
- Users can hide unnecessary columns
- Highlights the current lesson
- The title of the website changes when you change the plan
- Accessible from a single IP address
- 95 Lighthouse performance score
- Built with TypeScript, React, and MUI
- Uses Vite
- Uses Node.js v20
- Uses Docker
To run this project locally for production, you need to execute docker-compose up --build
.
To run this project for development, you need to:
- Serve the website for scraping on port 3000.
- In
backend/
, runnpm start
and thenpython ./serve_output.py
. - In
frontend/
, runnpm dev
.
Alternatively, you can use the Restore Terminals VSCode extension. (The configuration used for development is in this repository.)