Backend application for practicing Finnish matriculation exams
Yoprep is a Spring Boot REST API that helps students prepare for Finnish matriculation exams (ylioppilaskirjoitukset) by providing a structured collection of past exam questions.
- User Management: REST API for user registration and authentication
- Question Database: Structured storage of exam questions with metadata
- HTML Parser: Automated extraction of questions from YLE Abitreenit using JSoup
- Flexible Data Model: JSON-based question storage for handling various question types
- Progress Tracking: (Planned) Track user progress and performance
Backend Framework
- Java 21
- Spring Boot 4.0.0
- Spring Data JPA
- Spring Security
Database
- H2 (Development)
- PostgreSQL (Planned for production)
Libraries & Tools
- Maven - Build tool
- Lombok - Boilerplate reduction
- JSoup - HTML parsing
- Jackson - JSON processing
The application follows a layered architecture pattern:
Controller Layer (REST endpoints)
↓
Service Layer (Business logic)
↓
Repository Layer (Data access)
↓
Database
- Dependency Injection: Constructor-based injection for better testability
- Repository Pattern: Spring Data JPA repositories for database operations
- DTO Pattern: Separation of database entities and API responses (planned)
src/main/java/com/anteteno/yoprep/
├── controller/ # REST API endpoints
├── service/ # Business logic
├── repository/ # Data access layer
├── model/ # JPA entities
└── config/ # Spring configuration
src/main/resources/
└── application.properties
POST /api/users- Create a new userGET /api/users- Get all usersGET /api/users/{id}- Get user by IDDELETE /api/users/{id}- Delete user
POST /api/questions- Create questionGET /api/questions- Get all questionsGET /api/questions/exam/{examCode}- Get questions by exam codeGET /api/questions/subject/{subject}- Get questions by subject
- Java 21 or higher
- Maven 3.6+
# Clone the repository
git clone https://github.com/yourusername/yoprep.git
cd yoprep
# Run with Maven Wrapper
./mvnw spring-boot:run
# Or build and run JAR
./mvnw clean package
java -jar target/yoprep-0.0.1-SNAPSHOT.jarThe application will start on http://localhost:8080
H2 console is available at http://localhost:8080/h2-console
Connection details:
- JDBC URL:
jdbc:h2:mem:yoprepdb - Username:
sa - Password: (empty)
./mvnw test./mvnw clean installExam questions are sourced from YLE Abitreenit, a public service by Finnish Broadcasting Company (YLE) for exam preparation.
- User entity and REST API
- Question entity and database model
- HTML parser for YLE Abitreenit
- Question REST API (CRUD operations)
- User progress tracking
- Authentication & Authorization (JWT)
- Question search and filtering
- PostgreSQL migration
- Frontend (React planned)
This project demonstrates:
- Modern Spring Boot application development
- RESTful API design
- Layered architecture and separation of concerns
- Dependency injection patterns
- JPA/Hibernate for data persistence
- Web scraping and data extraction
- JSON data modeling
This project is for educational purposes.
Ante Tenoranta - GitHub