Getting Started with Your App Development
Required Tools for Development
Backend (Spring Boot)
- Docker - Container platform
- JDK 17+ - Java Development Kit
- Maven - Build tool
- IntelliJ IDEA - IDE
Frontend (Next.js)
- Node.js (v18+) - JavaScript runtime
- Visual Studio Code - Code editor
- npm or yarn - Package manager
Install and Run the Project
Step 1: Clone the Source Code
git clone https://github.com/nguyen-anh-hao/HHKT-Ex-TKPM.git
cd HHKT-Ex-TKPM
Step 2: Install and Run Backend
- Start Docker & database:
cd server
docker-compose up -d
💡 After the container runs successfully, seed the database using the .sql files in src/main/resources/db
.
- Run the Spring Boot application:
- Open the project in IntelliJ IDEA
- Find and open the
BackendApplication.java
file - Click the Run button or use the terminal:
mvn spring-boot:run
Step 3: Install and Run Frontend
- Install dependencies:
cd client
npm install
- Run the Next.js application:
npm run dev
Step 4: Access the Application
- Frontend: http://localhost:3000
- Backend API: http://localhost:9000
- Swagger UI: http://localhost:9000/swagger-ui.html
Source Code Structure
Frontend (client/)
client/
├── src/
│ ├── app/ # Main features
│ │ ├── class-management/ # Class management
│ │ ├── course-management/ # Course management
│ │ ├── enroll-class/ # Class enrollment
│ │ ├── reference-management/# Reference management
│ │ ├── status-rules-configuration/ # Rules configuration
│ │ ├── student-management/ # Student management
│ │ └── transcript/ # Transcript
│ ├── components/ # UI components
│ ├── interfaces/ # TypeScript interfaces
│ └── libs/ # Utilities
│ ├── api/ # API calls
│ ├── hooks/ # Custom hooks
│ ├── services/ # Business logic
│ ├── stores/ # State management
│ ├── utils/ # Helper functions
│ └── validators/ # Form validation
Backend (server/)
server/
├── src/
│ ├── main/
│ │ ├── java/org/example/backend/
│ │ │ ├── common/ # Shared utilities
│ │ │ ├── config/ # Configuration
│ │ │ ├── controller/ # API endpoints
│ │ │ ├── domain/ # Entities
│ │ │ ├── dto/ # Data transfer objects
│ │ │ │ ├── data/ # Data DTOs
│ │ │ │ ├── request/ # Request DTOs
│ │ │ │ └── response/ # Response DTOs
│ │ │ ├── mapper/ # Object mapping
│ │ │ ├── repository/ # Data access
│ │ │ ├── service/ # Business logic
│ │ │ │ ├── Import/ # Import services
│ │ │ │ ├── export/ # Export services
│ │ │ │ └── impl/ # Service implementations
│ │ │ └── validator/ # Data validation
│ │ └── resources/
│ │ ├── config/ # Configuration files
│ │ ├── db/ # Database scripts
│ │ └── application.yml # Main config
│ └── test/ # Unit tests
Main Features
Student Management
- View student list
- Add, edit, delete students
- Manage detailed information
Category Management
- Faculty
- Program
- Student status
- Email domain
Course Management
- Add, edit, delete courses
- Manage detailed information
Class Management
- Create and manage classes
- Assign lecturers
- Manage class schedules
Class Enrollment
- Register/unregister for classes
- View class schedules
- Manage grades
Transcript
- View transcript
- Enter grades
- Calculate GPA
Rules Configuration
- Status transition rules
- Grading rules
- Enrollment rules
Multi-language Support (v6.0)
- Support for multiple languages
- Easy language switching