A comprehensive web-based Learning Management System (LMS) built with Java, JSP, and MySQL. Academia provides a complete platform for managing courses, users, and enrollment with role-based dashboards for administrators, teachers, and students.
- Project Structure
- Features
- Technology Stack
- Prerequisites
- Installation
- Database Setup
- Running the Application
- User Roles & Functionality
- UI Highlights
- Future Enhancements
- Database Schema
Academia/
βββ .classpath
βββ .project
βββ .settings/
βββ build/ # Compiled classes
βββ src/
β βββ main/
β βββ java/
β β βββ nazmul/
β β βββ AddCourseServlet.java # Admin creates courses
β β βββ AuthFilter.java # Authentication filter
β β βββ Course.java # Course model
β β βββ CourseDAO.java # Course database operations
β β βββ DatabaseUtil.java # Database connection utility
β β βββ DeleteCourseServlet1.java # Admin deletes courses
β β βββ EditCouraseServlet1.java # Admin edits courses
β β βββ EnrollCourseServlet.java # Student enrolls in courses
β β βββ HomeServlet.java # Landing page servlet
β β βββ LoginServlet.java # User authentication
β β βββ RegistrationServlet.java # User registration
β β βββ RoleFilter.java # Role-based access control
β β βββ UpdateProfileServlet.java # Profile updates
β β βββ User.java # User model
β β βββ UserDAO.java # User database operations
β β βββ ViewCourseStudentsServlet.java # Teacher views students
β βββ webapp/
β βββ WEB-INF/
β β βββ web.xml # Web application config
β βββ adminDashboard.jsp # Admin interface
β βββ home.jsp # Landing page
β βββ login.jsp # Login page
β βββ logout.jsp # Logout handler
β βββ register.jsp # Registration page
β βββ studentDashboard.jsp # Student interface
β βββ teacherDashboard.jsp # Teacher interface
β βββ viewStudents.jsp # View enrolled students
βββ README.md
| Feature | Description |
|---|---|
| π€ User Registration | Create accounts with role selection (Admin/Teacher/Student) |
| π Secure Login | Session-based authentication with role verification |
| π‘οΈ Access Control | Role-based filters ensure users only access authorized pages |
| π¨βπΌ Profile Management | Update personal information, email, and credentials |
|
|
|
|
|
|
|
|
|
| Category | Features |
|---|---|
| π± Responsive Design | Works seamlessly on desktop, tablet, and mobile devices |
| β¨ Glassmorphism | Modern frosted glass effect cards with backdrop filters |
| π¬ Smooth Animations | Fade-in effects, hover transitions, micro-interactions |
| π Dynamic Backgrounds | Animated gradient backgrounds unique to each role |
| π¨ Color-Coded Roles | Admin (Purple), Teacher (Blue), Student (Blue-Purple) |
| π€ Modern Typography | Clean fonts with proper hierarchy and spacing |
| πΌοΈ Icon Library | Font Awesome 6 icons throughout the interface |
- Java Servlets: Server-side logic and routing
- JSP (JavaServer Pages): Dynamic page rendering
- JDBC: Database connectivity
- MySQL: Relational database management
- HTML5: Semantic markup
- CSS3: Modern styling with custom properties and animations
- Bootstrap 5.3: Responsive grid system and components
- Font Awesome 6: Icon library
- JavaScript: Client-side interactivity
- Apache Tomcat: Servlet container (recommended version 9.x or 10.x)
- Java EE: Web application framework
- Eclipse IDE: Primary development environment
- Maven (optional): Dependency management
- MySQL Workbench: Database administration
Before running this project, ensure you have the following installed:
-
Java Development Kit (JDK): Version 8 or higher
-
Apache Tomcat: Version 9.x or 10.x
- Download from Apache Tomcat
-
MySQL Server: Version 5.7 or higher
- Download from MySQL
-
IDE: Eclipse IDE for Java EE Developers (recommended)
- Download from Eclipse
-
MySQL Connector/J: JDBC Driver for MySQL
- Should be placed in
WEB-INF/libor added to project classpath
- Should be placed in
git clone https://github.com/Nazmul1005/Academia.git
cd AcademiaUpdate the database credentials in src/main/java/nazmul/DatabaseUtil.java:
private static final String URL = "jdbc:mysql://localhost:3306/Academia";
private static final String USER = "your_mysql_username";
private static final String PASSWORD = "your_mysql_password";Download MySQL Connector/J and add it to:
src/main/webapp/WEB-INF/lib/directory- Or add it to your project's build path in Eclipse
- Open Eclipse IDE
- Go to
FileβImportβExisting Projects into Workspace - Select the cloned Academia directory
- Click
Finish
Open MySQL Workbench or MySQL command line and run:
CREATE DATABASE Academia;
USE Academia;CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
role ENUM('admin', 'teacher', 'student') NOT NULL,
full_name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
course_code VARCHAR(20) UNIQUE NOT NULL,
course_name VARCHAR(100) NOT NULL,
teacher_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (teacher_id) REFERENCES users(id) ON DELETE SET NULL
);CREATE TABLE enrollments (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT NOT NULL,
course_id INT NOT NULL,
enrolled_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
UNIQUE KEY unique_enrollment (student_id, course_id)
);INSERT INTO users (username, password, role, full_name, email)
VALUES ('admin', 'admin123', 'admin', 'System Administrator', 'admin@academia.edu');INSERT INTO users (username, password, role, full_name, email)
VALUES
('teacher1', 'pass123', 'teacher', 'Dr. John Smith', 'john.smith@academia.edu'),
('teacher2', 'pass123', 'teacher', 'Dr. Sarah Johnson', 'sarah.johnson@academia.edu');INSERT INTO users (username, password, role, full_name, email)
VALUES
('student1', 'pass123', 'student', 'Alice Brown', 'alice.brown@student.academia.edu'),
('student2', 'pass123', 'student', 'Bob Wilson', 'bob.wilson@student.academia.edu');INSERT INTO courses (course_code, course_name, teacher_id)
VALUES
('CSE101', 'Introduction to Computer Science', 2),
('CSE201', 'Data Structures and Algorithms', 2),
('MATH101', 'Calculus I', 3);-
Configure Tomcat Server in Eclipse:
- Go to
WindowβPreferencesβServerβRuntime Environments - Click
Add, selectApache Tomcat v9.0(or your version) - Browse to your Tomcat installation directory
- Click
Finish
- Go to
-
Add Project to Server:
- Right-click on the project β
Run AsβRun on Server - Select your configured Tomcat server
- Click
Finish
- Right-click on the project β
-
Access the Application:
- Open your browser and navigate to:
http://localhost:8080/Academia_nazmul/ - Or:
http://localhost:8080/Academia_nazmul/home
- Open your browser and navigate to:
-
Build the WAR file:
# If using Maven mvn clean package # Manual build # Copy all files to Tomcat's webapps directory
-
Deploy to Tomcat:
cp Academia.war $TOMCAT_HOME/webapps/ -
Start Tomcat:
cd $TOMCAT_HOME/bin ./catalina.sh run # Linux/Mac catalina.bat run # Windows
Access Level: Full system control
Capabilities:
- Create, edit, and delete courses
- Assign teachers to courses
- View all users (admins, teachers, students)
- System-wide statistics and overview
- Manage course catalog
Dashboard Features:
- Total courses, teachers, and students count
- Course management table with actions
- User directory with role filters
- Quick actions for common tasks
Access Level: Course and student management
Capabilities:
- View assigned courses
- See enrolled students in each course
- Access student contact information
- Update personal profile
- Monitor course enrollment
Dashboard Features:
- "My Courses" section with course cards
- Student list for each course
- Course statistics (student count)
- Profile management
Access Level: Course enrollment and learning
Capabilities:
- Browse available courses (marketplace)
- Enroll in courses with one click
- View enrolled courses (learning journey)
- Track course progress
- Update personal profile
Dashboard Features:
- Course marketplace with available courses
- Enrolled courses with progress indicators
- Quick enrollment actions
- Statistics on enrolled and available courses
erDiagram
users ||--o{ courses : "teaches"
users ||--o{ enrollments : "enrolls"
courses ||--o{ enrollments : "has"
users {
int id PK
varchar username UK
varchar password
enum role
varchar full_name
varchar email UK
timestamp created_at
}
courses {
int id PK
varchar course_code UK
varchar course_name
int teacher_id FK
timestamp created_at
}
enrollments {
int id PK
int student_id FK
int course_id FK
timestamp enrolled_at
}