Skip to content
shravyataluka-codesPublic

About

AcadMate is a Spring Boot REST API for academic management that helps students track subjects, chapters, resources, and study progress in one place. Built with JWT authentication, MySQL, and a clean layered backend architecture.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

21 Commits

Folders and files

Repository files navigation

📚 AcadMate

Sacrified sem exams for this project hope it worth it

A REST API for academic management built with Spring Boot. Helps students organize subjects, track chapter progress, and manage study resources.

Status: Backend complete ✅ | Frontend in progress 🚧

Java Spring Boot


🚀 Features

  • JWT-based authentication (register/login)
  • Subject management with exam dates
  • Chapter tracking with progress status
  • Multi-format resource attachments (PDFs, videos, links, notes)
  • Secure user-specific data isolation

🛠️ Tech Stack

Backend: Java 17, Spring Boot 3.2.0, Spring Security, MySQL
Auth: JWT (JJWT), BCrypt
Build: Maven


⚡ Quick Start

1. Clone & Setup Database

git clone https://github.com/shravyataluka-codes/acadmate.git

cd acadmate

Create MySQL database

mysql -u root -p CREATE DATABASE acadmate;


**2. Configure `application.properties`**
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/acadmate
spring.datasource.username=YOUR_USERNAME
spring.datasource.password=YOUR_PASSWORD

3. Run

mvn spring-boot:run

Server runs on http://localhost:9090


📡 API Endpoints

Auth

  • POST /api/auth/register - Register user
  • POST /api/auth/login - Login (returns JWT)

Protected (requires JWT token)

  • POST /api/subjects/user/{userId} - Create subject
  • GET /api/subjects/user/{userId} - Get subjects
  • POST /api/chapters/subject/{subjectId} - Create chapter
  • GET /api/chapters/subject/{subjectId} - Get chapters
  • POST /api/resources/chapter/{chapterId} - Add resource
  • GET /api/resources/chapter/{chapterId} - Get resources

🧪 Quick Test

1. Register

POST http://localhost:9090/api/auth/register
Content-Type: application/json

{
  "username": "john",
  "email": "john@test.com",
  "password": "password123"
}

2. Login

POST http://localhost:9090/api/auth/login
Content-Type: application/json

{
  "username": "john",
  "password": "password123"
}
# Returns: {"token": "eyJhbGc...", "userId": 1}

3. Create Subject (use token)

POST http://localhost:9090/api/subjects/user/1
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "subjectName": "Mathematics",
  "semester": "Spring 2025",
  "examDate": "2025-05-15"
}

🏗️ Architecture

Controller → Service → Repository → MySQL
    ↓
   DTO (secure data transfer)
    ↓
JWT Filter (authentication)

Key Design:

  • Layered architecture for clean separation
  • DTO pattern prevents password exposure
  • HikariCP connection pooling

📊 Database Schema

users → subjects → chapters → resources
  ↓         ↓         ↓          ↓
 JWT    exam_date  progress   links/files

🚧 Roadmap

Current: Backend API ✅
Next:

  • React frontend
  • Deployment
  • ML study scheduler

👨‍💻 Author

Shravya Taluka - 2nd Year CSE Student
Building this to learn full-stack + ML development

GitHub


⭐ Star this repo if you find it useful!

About

AcadMate is a Spring Boot REST API for academic management that helps students track subjects, chapters, resources, and study progress in one place. Built with JWT authentication, MySQL, and a clean layered backend architecture.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages