Read in this file.
The backend is built with Spring Boot and relies on Spring Beans for dependency injection.
Documentation for backend contributors is available under
documents/developer-guide.
Start with ArchitectureOverview.md for a summary of the system design and follow the other documents for specific topics such as testing or settings management.
- Node.js v20.0.0
- npm v7.24.0
- OpenJDK 21
- Maven 3.8.4
- PostgreSQL 12.0+
git clone https://github.com/aarch64-softdes/Group21-Ex-001
cd Group21-Ex-001This option requires Docker and Docker Compose to be installed on your system.
cd backend
docker-compose up -dThis will start a PostgreSQL database available at: jdbc:postgresql://localhost:5432/student-db with username root and password root.
If you already have PostgreSQL installed:
- Create a new database named
student-db - Run the provided schema creation script in postgresql interface
-
Navigate to the backend directory:
cd backend/src/main/resources -
Create a new file named
application-dev.ymlusing the template fromapplication.sample.yml:cp application.sample.yml application-dev.yml
-
Edit
application-dev.ymlto match your database configuration:spring: datasource: url: jdbc:postgresql://localhost:5432/student-db username: root password: root
cd backend
mvn spring-boot:runWarning
If you encouter an error related to Mojo..., go to backend/pom.xml and change the version of lombok to 1.18.38 or higher.
The API server should start on port 8080 (http://localhost:8080).
Open a new terminal window:
cd frontend
npm install
npm run devThe React development server should start on port 5173 (http://localhost:5173).
Open your browser and navigate to:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8080/api
Elasticsearch integration for advanced log management. To use this feature:
- Install Elasticsearch using the provided script:
curl -fsSL https://elastic.co/start-local | sh - Configure the connection in
application-dev.ymlwith your API key - Set
logging.controller.logger-type: ELASTICSEARCH
The system will create date-based indices (e.g., logs-2025-03-19) for easy log rotation and management.
After Elasticsearch is running and your application has generated some logs:
- Open Kibana at http://localhost:5601
- Navigate to Stack Management > Data Views
- Click "Create data view"
- Set the name to "Application Logs"
- Set the index pattern to
logs-*(matching the prefix in your config) - Select the timestamp field (@timestamp or timestamp)
- Click "Save data view to Kibana"
Now you can use Discover to search and filter your logs, or create visualizations and dashboards.
Important
- The system currently supports dynamic content translation. If the content of the selected language is not available, it will default to English.
- To add the content for a specific language, currently user need to choose the language in the application. The newly added content will be saved with the selected language. For example, if the user selects Vietnamese, the content will be saved in Vietnamese. If the user selects English, the content will be saved in English. The system will NOT automatically translate the content.
- Course creation:

- Course update:

- Course list:

- Course detail:

- Course enrollment:

- Invalid prerequisite enrollment:

- Modified courses which are out of duration:












