--- trigger: always_on --- # Project Context: University Schedule System ## Project Overview This project is a university scheduling system website. - **Role**: Educational platform for managing schedules. - **Language**: Mixed (Java Backend + Web Frontend). - **Public URL**: https://magistr.zuev.company ## Directory Structure & Responsibilities The project follows a specific folder structure. You must adhere to these paths: - **`backend/`**: Contains the **Java** backend application source code. - When working on API or server logic, focus here. - **`frontend/`**: Contains the frontend source code. Note the strict role separation: - `frontend/admin/`: Code specific to the **Administrator** interface. - `frontend/teacher/`: Code specific to the **Teacher** interface. - `frontend/student/`: Code specific to the **Student** interface. - *Constraint*: Do not mix logic between these folders unless creating a shared utility. - **`db/`**: Database configuration and data. - `db/init/init.sql`: The SQL script responsible for **creating and initializing** the database schema (tables, initial data). - **Root Files**: - `compose.yaml`: The Docker Compose configuration. This file defines the services (backend, db, frontend servers) and how they run together. - `.env`: Environment variables. Contains sensitive config (DB passwords, ports, API keys). ## External Dependencies (Parent Directory) Some infrastructure components are located outside the project root: - **`../caddy-proxy/`**: Located one level up relative to the project root. - **Role**: Reverse proxy handling traffic for `magistr.zuev.company`. - **`Caddyfile`**: Configuration for routing and SSL. - **`compose.yaml`**: A separate Docker Compose file specifically for the proxy service. ## Workflow Guidelines 1. **Database Changes**: If you need to modify the database schema, you must update `db/init/init.sql` so the changes persist when the container is rebuilt. 2. **Configuration**: If adding new configuration parameters, add them to `.env` and reference them in `compose.yaml` or the application code. 3. **Routing/Proxy**: If there are issues with the domain or external access, check the configuration in `../caddy-proxy/Caddyfile`. ## Language Preference - **Always answer in Russian**: This is a strict requirement from the user. All explanations, comments, and interactions must be in Russian unless specifically asked otherwise.