Required theory

  • What are (Rest) APIs and how are they used
  • What is htmx and how do I adapt my API for it
  • How do you use gradle

Your stack:

  • javalin
  • vuejs for frontend (not normal vue, see the integration above)
  • htmx to reduce the frontend work as much as possible (optional, but recommended)
  • jetbrains xodus as the database
  • styling of your choice (e.g. vanilla css, bootstrap, scss, tailwind), but styling is not a priority at all for now
  • jdk 17 + gradle
  • IntelliJ, else you’re gonna have a bad time

Project requirements

  • Products from the database are displayed on the website, organized and sortable by categories
    • important fields: image, description, price, stock
    • they can have dynamic attributes like color and size (always a selection)
    • once a product is bought, the stock decreases
  • Users need to register with email and password (you don’t have to send an actual email) to complete their checkout
    • they can log in any time to see their past orders
  • Some users are admins, meaning they can
    • see all users and their order history
    • create, edit and delete products and their attributes
    • manage stock