https://github.com/arifozcan35/shadowise-api
Shadowise API is a Spring Boot application that automatically generates quiz questions, flashcards, and summaries from user-uploaded PDF documents using artificial intelligence. It is designed to optimize the learning processes of students and educators.
https://github.com/arifozcan35/shadowise-api
api artificial-intelligence docker-compose java jwt mongodb spring-boot spring-security
Last synced: 9 months ago
JSON representation
Shadowise API is a Spring Boot application that automatically generates quiz questions, flashcards, and summaries from user-uploaded PDF documents using artificial intelligence. It is designed to optimize the learning processes of students and educators.
- Host: GitHub
- URL: https://github.com/arifozcan35/shadowise-api
- Owner: arifozcan35
- Created: 2025-07-26T18:52:46.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-10-07T08:06:14.000Z (9 months ago)
- Last Synced: 2025-10-07T10:10:07.723Z (9 months ago)
- Topics: api, artificial-intelligence, docker-compose, java, jwt, mongodb, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 342 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π Shadowise API
AI-powered intelligent learning platform RESTful API service.
## π About The Project
Shadowise API is a Spring Boot application that automatically generates quiz questions, flashcards, and summaries from user-uploaded PDF documents using artificial intelligence. It is designed to optimize the learning processes of students and educators. I developed this project within the scope of BTK Hackathon 2025.
## β¨ Features
### π Authentication & Authorization
- JWT-based secure authentication
- User registration and login system
- Refresh token support
- Role-based access control
### π Project Management
- Create and manage projects
- File upload and organization
- Project-based content organization
- Dashboard statistics
### π€ AI-Powered Content Generation
- **PDF Processing**: Upload and process PDF files
- **Automatic Summarization**: Generate AI-powered summaries from documents
- **Quiz Generation**: Create multiple-choice questions
- **Flashcard Creation**: Generate question-answer cards
- Customizable parameters (number of questions, word limit, etc.)
### π Content Management
- Quiz management and score tracking
- Flashcard collections
- Note-taking system
- File download and viewing
## π οΈ Technologies
### Backend
- **Java 21** - Programming language
- **Spring Boot 3.2.4** - Application framework
- **Spring Security** - Security and authentication
- **Spring Data MongoDB** - Database access
- **Spring Cloud OpenFeign** - Microservice communication
### Database
- **MongoDB** - NoSQL document database
### Libraries & Tools
- **JWT (JSON Web Token)** - Token-based authentication
- **Lombok** - Code optimization
- **MapStruct** - DTO mappings
- **SpringDoc OpenAPI** - API documentation (Swagger UI)
- **Docker** - Containerization
## π¦ Installation
### Requirements
- Java 21 or higher
- Maven 3.6+
- MongoDB 4.0+
- Docker (optional)
## π Usage
### API Documentation
After running the application, you can explore the API via Swagger UI:
```
http://localhost:8080/swagger-ui.html
```
### Main Endpoints
#### Authentication
- `POST /api/auth/sign-up` - Register new user
- `POST /api/auth/sign-in` - User login
- `POST /api/auth/refresh-token` - Refresh token
- `POST /api/auth/logout` - Logout
#### Project Operations
- `GET /api/projects/my-projects` - List user's projects
- `POST /api/projects/create-with-files` - Create project with files
- `GET /api/projects/{id}` - Get project details
- `PUT /api/projects/{id}` - Update project
- `DELETE /api/projects/{id}` - Delete project
#### AI Operations
- `POST /api/ai/upload-pdf` - Upload PDF
- `POST /api/ai/generate-summary` - Generate summary
- `POST /api/ai/generate-questions` - Generate quiz questions
- `POST /api/ai/generate-flashcards` - Generate flashcards
#### Quiz Operations
- `GET /api/quiz` - List quizzes
- `POST /api/quiz` - Create quiz
- `GET /api/quiz/{id}` - Get quiz details
- `PUT /api/quiz/{id}/score` - Update score
#### Flashcard Operations
- `GET /api/flashcard` - List flashcards
- `POST /api/flashcard` - Create flashcard
- `GET /api/flashcard/{id}` - Get flashcard details
## π Project Structure
```
src/main/java/tr/shadowise_api/
βββ client/ # External API clients
βββ config/ # Configuration classes
βββ controller/ # REST Controllers
βββ core/ # Core response structures
βββ dto/ # Data Transfer Objects
βββ entity/ # MongoDB Entities
βββ exception/ # Custom exceptions
βββ payload/ # Request/Response payloads
βββ repository/ # MongoDB Repositories
βββ service/ # Business logic services
βββ utils/ # Utility classes
```
## π Security
- JWT-based authentication
- Password encryption (BCrypt)
- CORS configuration
- Role-based authorization
- Data security with soft delete
## π Environment Profiles
The application includes profiles for different environments:
- **dev** - Development environment
- **prod** - Production environment
Profile selection:
```bash
java -jar app.jar --spring.profiles.active=prod
```
## π Contact
- **Developer**: Arif Γzcan
- **Email**: zcanarif@gmail.com
- **GitHub**: [@arifozcan35](https://github.com/arifozcan35)