A modern, full-stack university management system featuring AI-powered assistance, role-based access control, and seamless data visualization.
York Academic Portal is a comprehensive web application designed to digitize and streamline administrative processes for educational institutions. It bridges the gap between students, faculty, and administrators through a unified interface.
Key highlights include an AI Assistant (powered by Google Gemini) that helps users retrieve information intelligently, and a robust RESTful API backend that ensures data integrity and security.
- 👥 Role-Based Management: Distinct portals and permissions for Students, Employees, and Administrators.
- 🤖 AI-Powered Support: Integrated Google Gemini AI (
AiService) to provide intelligent responses to user queries and automate support. - 📊 Data Visualization: Dynamic dashboards for Department and Employee log management.
- 🔒 Secure Authentication: Robust login system with session management.
- 📡 RESTful Architecture: Clean separation of concerns with a Spring Boot backend and Vue.js frontend.
- Framework: Java Spring Boot (Web, AOP)
- Database: MySQL & MyBatis (Persistence Layer)
- AI Integration: Google Gemini API
- Tools: Maven, Lombok
- Framework: Vue.js 3 (Composition API)
- Build Tool: Vite
- Styling: CSS3, Modern UI Components
- State Management: Vue Reactive System
Follow these steps to set up the project locally.
- JDK 17 or higher
- Node.js (v16+) & npm
- MySQL Database
- Create a MySQL database named
academic_portal. - Import the schema and initial data:
mysql -u root -p academic_portal < academic-portal/portal.sql
Navigate to the backend directory:
cd academic-portal
Configuration:
- Open
src/main/resources/application.yml. - Update your MySQL username/password.
- Ensure your
AiService.javahas a valid API Key.
Run the application:
# Using Maven wrapper (if available) or your IDE
mvn spring-boot:run
The backend server typically runs on http://localhost:8080.
Open a new terminal and navigate to the frontend directory:
cd vue-academic-portal
Install dependencies and run:
npm install
npm run dev
Access the application at http://localhost:5173 (or the port shown in terminal).
Project2026/
├── .gitignore # Git configuration (Ignores logs, target/, node_modules/)
├── academic-portal/ # Backend (Spring Boot)
│ ├── src/main/java/ # Controllers, Services, AI Logic
│ ├── src/main/resources/ # Config (application.yml), Mappers
│ └── portal.sql # Database initialization script
│
├── vue-academic-portal/ # Frontend (Vue 3 + Vite)
│ ├── src/ # Components, Views, Assets
│ ├── package.json # Frontend dependencies
│ └── vite.config.js # Build configuration
│
└── README.md # Project Documentation
- Implement JWT (JSON Web Token) for stateless authentication.
- Containerization using Docker.
- Enhance AI features to include personalized course recommendations.
Jiyuan (Johnny) Wang
This project was developed for academic purposes and demonstrates full-stack development capabilities.