Skip to content

A tool to help users track their daily habits, either via the command line or a web interface. Syncs data between both.

License

Notifications You must be signed in to change notification settings

Sherida101/Rhythmo

Repository files navigation

Rhythmo

πŸ“š Table of Contents

Overview

Rhythmo is a Full-stack habit tracker that helps you build and maintain good habits. It features a command-line interface (CLI) built with Go, a web application powered by Java Spring Boot and PostgreSQL, and a REST API for seamless integration between the two.

The CLI allows you to manage your habits directly from the terminal, while the web app provides a user-friendly interface for tracking your progress.

Objectives

This project serves as a learning resource for developers looking to explore the following:

βœ… Writing clean, idiomatic Go code
βœ… Building a full REST API with Spring Boot
βœ… Designing a dual-mode application (CLI and web)
βœ… Structuring multi-language projects
βœ… CI/CD with GitHub Actions

Prerequisites

  • Go 1.24+
  • Java 17+
  • Maven
  • PostgreSQL
  • Docker

Setup: Your First Go + Java Project

1. Clone the Repository

git clone https://github.com/Sherida101/Rhythmo.git
cd Rhythmo

2. Install Dependencies

Go CLI

cd cli
go mod tidy

Java Web App

cd web
./mvnw clean install

3. Set Up Database

  • Create a PostgreSQL database named rhythmo
  • Run the SQL scripts in ./scripts/init.sql to set up the initial database schema.
  • Update the database connection settings in web/src/main/resources/application.properties if needed.

Running the App

CLI

cd cli
go run main.go

See CLI documentation for details on how to use the CLI.

🌐 Web

cd web
./mvnw spring-boot:run

Using VSCode

  1. Open VS Code command palette: Ctrl + Shift + P β†’ Debug: Select and Start Debugging or click the dropdown next to the green β–Ά Run button (upper-left)

  2. Pick: Run Rhythmo Go CLI or Run Rhythmo Spring Boot Web App

  3. The app will start running, and you can access it at http://localhost:8080 in your web browser.

  4. To stop the server, press Ctrl + C in the terminal or click the red square stop button in the debug panel.

Using Makefile

The project includes a Makefile for easy management of tasks. Here are some common commands:

# Build & run Java web app
make run-web

# Run Go CLI
make cli

# Build Go CLI binary
make build-cli

# Start everything with Docker
make docker-up

# Stop Docker services
make docker-down

API Usage

The REST Client extension can be used to test the API endpoints directly from the VSCode editor. See API documentation for details on how to use the REST API.

Project Structure

See architecture.md for a detailed overview of the project structure.

Want to Build Project from Scratch?

Check out the guides:

Contributing & License

Contributions are welcome! Please read the CONTRIBUTING.md for guidelines on how to contribute to this project.

If you find any issues or have suggestions, feel free to open an issue.

The project is open-sourced under the MIT License. You can use, modify, and distribute this project as long as you include the original license.


Support

developer | "Buy Me A Coffee"

If you like this project, please consider supporting the developer. There are no advertisements nor in-app purchases.

Your support will help keep the project free and updated. Thank you!

Star ⭐ the repository if you like what you see πŸ˜‰.

Connect with Me

Sherida Providence | YouTube YouTube: @Sherida Providence

AaliyahProvidence | LinkedIn LinkedIn: @Aaliyah Providence

Sherida101 | GitHub GitHub: @Sherida101

About

A tool to help users track their daily habits, either via the command line or a web interface. Syncs data between both.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published