How georgiuslab/notebase works
Notebase is a backend for sharing and discovering study materials, with an API gateway in front of a Spring backend. The visible upload workflow requests a presigned URL, uploads to S3 outside the application, then confirms and saves the material. Users can search and retrieve materials and like them; separate services handle user profiles and faculty data. The tree also shows tag, subject, reporting, and audit domains, but their detailed behavior is unsampled. Relationships below are limited to calls visible in excerpts or references in the source index.
Main entry points: S3Service.java S3 service · MaterialController.java Material API · MaterialService.java Material service · LikeService.java Like service
Components 26
API gateway
- API gateway
api-gateway/src/main/java/chemilabi/trade/api_gateway/ApiGatewayApplication.java
Materials and likes
- Material API
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/MaterialService.java - Like service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/LikeService.java - Material repository
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/MaterialRepository.java - Like repository
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/LikeRepository.java
Users and storage
- S3 service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/aws/S3Service.java - User API
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/UserController.java - User service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/UserService.java - User repository
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/UserRepository.java
Academic catalog
- Faculty API
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/FacultyController.java - Faculty service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/FacultyService.java - Faculty repository
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/FacultyRepository.java - Subject service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/SubjectService.java - Tag service
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/TagService.java
Domain records
- Material record
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/model/Material.java - Material response
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/dto/MaterialResponseDto.java - Presigned URL
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/dto/PresignedUrlResponseDto.java - User record
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/model/User.java - User summary
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/dto/UserSummaryDto.java - Faculty record
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/model/Faculty.java - Subject record
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/model/Subject.java - Subject response
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/dto/SubjectResponseDto.java - Reports and audit
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/model/Report.java
Other components
- API client
- AWS S3
Connections 25
- API client → API gateway: sends requests
- API client → Material API: calls API
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material API → S3 service: requests upload URL
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material API → S3 service: verifies upload
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material API → Material service: confirms and queries
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material API → Like service: toggles like
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/MaterialController.java - Material service → Material repository: reads and saves
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/MaterialService.java - Material service → Like repository: checks likes
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/MaterialService.java - Material service → S3 service: creates download URL
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/MaterialService.java - Material service → Material response: maps results
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/MaterialService.java - Like service → Material repository: updates counts
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/LikeService.java - Like service → Like repository: checks and saves
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/LikeService.java - Like service → User repository: looks up user
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/LikeService.java - Material repository → Material record: persists
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/MaterialRepository.java - S3 service → AWS S3: signs and verifies
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/aws/S3Service.java - S3 service → Presigned URL: returns URL data
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/aws/S3Service.java - API client → User API: calls API
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/UserController.java - User API → User service: delegates profile work
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/UserController.java - User service → User repository: reads and saves
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/UserService.java - User service → S3 service: creates avatar URL
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/UserService.java - User repository → User record: persists
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/UserRepository.java - Faculty API → Faculty service: delegates queries
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/controller/FacultyController.java - Faculty service → Faculty repository: queries faculty
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/FacultyService.java - Faculty service → Subject response: maps subjects
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/service/FacultyService.java - Faculty repository → Faculty record: persists
notebase-backend/src/main/java/chemilabi/trade/notebase_backend/repository/FacultyRepository.java