LootLife is a Spring Boot application that gamifies personal task management by applying RPG mechanics to real-world productivity. Users create and complete tasks to earn experience points across different character attributes, creating an engaging system that makes productivity feel like playing a role-playing game
- Character Progression: Users gain levels and experience points
- Attribute System: Seven different stats (Strength, Intelligence, Wisdom, Charisma, Dexterity, Constitution, Luck)
- Task Difficulty Scaling: Tasks have different difficulty levels that affect XP rewards
- Mission Completion Tracking: Comprehensive statistics on completed tasks
-
Java 21 → Application runtime environment
-
Spring Boot 3.4.5 → Application framework and dependency injection
-
Spring OAuth2 Client – External authentication integration (OAuth2).
-
PostgreSQL → Primary data persistence
-
Spring Data JPA → Object-relational mapping (ORM)
-
Spring Security 6.x → Authentication and authorization
-
Spring OAuth2 Client → External authentication providers
-
JJWT 0.12.6 → JSON Web Token handling
-
MapStruct 1.6.3 → DTO to entity conversion
-
Lombok 1.18.32 → Boilerplate code reduction
-
Spring Mail → Email notifications
-
Thymeleaf → HTML template rendering
-
Maven → Dependency management and build tool
-
Angular 19.2.14
-
TypeScript 5.5.2
-
Tailwind CSS 4.1.11
Dual Authentication: Supports traditional username/password and OAuth2 (Google, GitHub) JWT Token Management: Secure token-based authentication with expiration handling Account Verification: Email-based account activation system Role-based Access Control: User roles and permissions management
Multi-Attribute Progression: Seven distinct character attributes that level independently Dynamic XP Calculation: Experience rewards based on task difficulty and completion Task Categorization: Tasks can affect multiple stat categories simultaneously Progress Tracking: Comprehensive statistics on missions completed and character growth
Flexible Task System: Support for both simple completion and quantitative progress tasks Difficulty Scaling: Four difficulty levels (Easy, Medium, Hard, Extreme) affecting rewards Deadline Management: Optional task deadlines with expiration handling Active/Inactive States: Task lifecycle management
RESTful API Design: Clean API endpoints for all operations Data Validation: Comprehensive input validation using Bean Validation Email Integration: HTML email templates for notifications PostgreSQL Integration: Robust data persistence with JPA/Hibernate MapStruct Integration: Efficient DTO mapping with compile-time code generation
Use the following command in your Git terminal: git clone https://github.com/SparkleCow/LootLife.git
Run docker-compose up -d to start the database.
If you have any custom configurations or modify attributes in the Docker Compose file, make sure to update the corresponding variables.
Run npm install to download all the Node modules used in the project.
Once the container is up and running, start the Spring and Angular services: Use mvn spring-boot:run for Spring and ng serve for Angular.