Theme: Magical Potion Brewery
Entities:
- Wizards: Users who are magical potion brewers.
- Ingredients: Different magical ingredients required for potion-making.
- Potion Recipes: A collection of potion recipes, each specifying the required ingredients and steps.
- Brewery: The central location where wizards brew potions.
Functionality:
- Potion Brewing: Wizards can select a potion recipe and brew potions by combining the necessary ingredients.
- Ingredient Management: Allow wizards to gather and manage their stock of magical ingredients.
- Recipe Discovery: Wizards can discover new potion recipes by experimenting with different ingredient combinations.
- Potion Catalog: Maintain a catalog of all brewed potions, including their properties and effects.
- Wizard Profiles: Allow wizards to create profiles, track their brewing history, and showcase their most powerful potions.
- Potion Trading: Wizards can trade potions with each other, with potion properties affecting trade values.
- Leaderboard: Implement a leaderboard to showcase the most accomplished potion brewers.
Technologies:
- Kotlin: As the primary programming language.
- Spring Boot: To build the backend API.
- Spring Data JPA: For managing data related to wizards, ingredients, recipes, and potions.
- H2 Database: To store information about wizards, ingredients, recipes, and potions.
- Spring Security: Handle user authentication and authorization.
- JUnit and Mockito: For unit testing.
- Swagger: To document the API.
Target Technology/Concept:
Focus on building a RESTful API using Spring Boot, implementing secure user authentication and authorization for potion brewing and trading operations.
Project Architecture:
Build this project as a monolith since it's not overly complex and doesn't require microservices.
Challenges:
- Dynamic Recipe Discovery: Create a system for wizards to discover new potion recipes through experimentation.
- Potion Properties: Implement a system for defining and calculating the properties and effects of brewed potions.
- Ingredient Management: Design a way for wizards to gather, trade, and manage their stock of magical ingredients.
- Leaderboard Calculation: Design an efficient algorithm for calculating and updating the leaderboard based on wizards' achievements.
- User Authentication: Implement secure user authentication and authorization for different API endpoints.
This Magical Potion Brewery challenge offers a whimsical and creative theme that combines potion-making, experimentation, and trading within a magical world. Have fun building your Kotlin backend for this enchanting theme!