AcadLink is a modern academic collaboration platform that enables students to share and manage educational materials while connecting with peers.
Quick Start »
Features
·
Database Design
·
API Docs
- Secure user authentication and profile management
- Material upload and organization with privacy controls
- Folder-based content management
- Peer collaboration and material sharing
- Advanced search capabilities for materials and users
- Email verification system with OTP functionality
- Java Version: 21
- Framework: Spring Boot 3.4.1
- Security: Spring Security with JWT
- Database: MySQL 8
- Cache: Redis (for OTP verification)
- Documentation: Swagger/OpenAPI
- Testing: JUnit 5, Mockito
- Code Quality: SonarQube, JaCoCo
- Spring Boot Starter Web
- Spring Boot Starter Data JPA
- Spring Boot Starter Security
- Spring Boot Starter Mail
- Spring Boot Starter Data Redis
- JWT for authentication
- Lombok for code reduction
- Vavr for functional programming
- SpringDoc for API documentation
- JWT-based authentication
- Stateless security model
- CSRF protection (disabled for JWT API)
- Password encryption using BCrypt
- Secure file storage
- Privacy controls for materials and folders
- Email verification with time-limited OTP codes
The database schema is designed to efficiently manage users, materials, folders, and peer relationships. Here's a visual representation of our database structure:
- Users: Stores user profiles and authentication details
- Folders: Manages folder hierarchy and privacy settings
- Materials: Handles material metadata and storage paths
- Peer Relationships: Tracks peer connections and request status
AcadLink provides comprehensive API documentation with the following features:
- Swagger UI: Available at
/v1when the application is running - Markdown Documentation: Complete API reference in Markdown format
The API is organized into the following sections:
- Public Endpoints (Sign Up, Sign In, Username Check)
- Email Verification (OTP verification and resend functionality)
- Profile Management (User profile operations)
- Folder Management (Create, update, and manage folders)
- Materials Management (Upload, update, and organize materials)
- Find Materials (Search and discover materials)
- Peer Management (Connect with other users)
- Interactive API Docs: Complete API reference with examples
- Swagger Specification:
swagger.json- OpenAPI 3.1.0 specification - Database Schema:
acadlink_schema.sql- Complete database structure
Here are some screenshots of our API interface and documentation:
- Java 21 or later
- Maven
- MySQL 8
- Redis 6 or later
-
Clone the repository
git clone https://github.com/mr-majed7/AcadLink.git cd AcadLink/backend/acadlink -
Configure the application
- Copy
example_application.ymlfrom the root directory tosrc/main/resources/application.yml - Update the configuration values in
application.ymlwith your environment-specific settings - Make sure to set proper values for:
- Database credentials
- Redis connection settings
- Email settings
- JWT secret
- Storage path
- Sonar token (if using SonarQube)
- Copy
-
Start Redis Server
# On Ubuntu/Debian sudo systemctl start redis-server # On macOS with Homebrew brew services start redis # On Windows redis-server
-
Build and Run
mvn clean install mvn spring-boot:run
backend/
acadlink/
src/
main/
java/com/majed/acadlink/
resources/
test/
java/com/majed/acadlink/
pom.xml
java/com/majed/acadlink/: Source code (API, service, domain, config, etc.)resources/: Configuration files (application.yml)test/java/com/majed/acadlink/: Test casespom.xml: Maven build file
- Comprehensive unit testing with JUnit 5
- Mockito for mocking dependencies
- SonarQube integration for code quality
- JaCoCo for code coverage reporting
- Automated test execution with Maven
AcadLink uses SonarCloud for continuous code quality monitoring. The project's code quality is automatically analyzed on every push to the main branch, ensuring:
- Code quality metrics
- Code coverage tracking
- Code smells detection
- Security vulnerability scanning
You can view the detailed analysis on our SonarCloud dashboard.
Majedul Islam
Backend Developer | CS Undergrad
GitHub • LinkedIn
Interesed in backend systems, Java/Spring Boot.




