Habitus App

fullstack
java
spring
react
postgres
  • Training Project for Java, Spring Boot, and React
  • A fullstack habit and goal tracking web application
  • Currently idle, but still in development

About the Project

Habitus started as a university project in the Webtech course. It is now a training ground for modern Java and Spring Boot features, also utilizing Lombok annotations. This project encapsulates the some of the Java knowledge gained throughout university. Although my current skills might be underrepresented, I aim to enhance and expand them through this project.

Features

The Habitus App will offer several features aimed at helping users track and achieve their habits and goals effectively:

  • Habit Tracking: Users can create, update, and delete habits.
  • Goal Setting: Set short-term and long-term goals and monitor progress.
  • Reminders: Receive notifications and reminders to stay on track.
  • Statistics: Visualize progress with charts and graphs.
  • Customization: Personalize habit tracking with custom tags and categories.

Technology

JavaSpring BootGradlePostgres

The backend is fully built in Java using Gradle and Spring Boot. It runs in a Docker container and uses a Postgres database. Additionally, there is a Keycloak instance running on a separate container and database.

The frontend, currently a work in progress, will be built in React. Previously, it was a mix of Thymeleaf and Vue, but the new version will be a single-page application (SPA) served by the backend.

Architecture

The application is designed with a robust architecture to provider (theoretical) scalability and maintainability:

  • Backend: Built with Java, Spring Boot, and Gradle, ensuring a strong and reliable server-side structure.
  • Frontend: Developed using React for a dynamic and responsive user interface.
  • Database: Utilizes Postgres for efficient and secure data management.
  • Containerization: Both the application and the database run in Docker containers, providing isolated and consistent environments.
  • Authentication: Uses Keycloak for secure and efficient user authentication and authorization.