Reminders

July 29, 2026 ยท View on GitHub

A simple and intuitive web application for managing your daily reminders.

๐Ÿš€ Live Demo: https://jumperck.github.io/Reminders

Features

  • User-friendly Interface: Easily create, edit, and delete reminders with a clean and intuitive UI.
  • Persistent Storage: Reminders are stored securely, ensuring you never lose your important tasks.
  • Customization: Customize your reminders with different colors, tags, and priority levels.
  • Reminders Notification: Receive timely reminders to stay on top of your tasks.

Learning Project

As a learning project, the code here may not follow best practices at all times as it's a process of learning and improving. Feedback and suggestions are always welcome!

Prerequisites

Before you begin, ensure you have the following installed on your system:

Required

  • Docker (v20.10 or higher) - Install Docker
  • Docker Compose (v2.0 or higher) - Usually included with Docker Desktop
  • Git - For cloning the repository

Optional (for local development without Docker)

Port Requirements

Make sure the following ports are available on your system:

  • 5000 - .NET API instance
  • 5001 - Go API instance
  • 5002 - C++ API instance
  • 5050 - MVC application
  • 3000 - React application
  • 9999 - Nginx load balancer
  • 5432 - PostgreSQL database
  • 8545 - Ganache blockchain node

Quick Start

Get the application running in 3 simple steps:

# 1. Clone the repository
git clone https://github.com/jumperck/Reminders.git
cd Reminders

# 2. Set up environment variables
cp .env.example .env
# Edit .env and replace YOUR_PASSWORD_HERE with a secure password

# 3. Start all services with Docker Compose
docker compose --profile all up -d

# Wait a few minutes for all services to build and start...

Access the Applications

Once all containers are running:

# Check container status
docker compose ps

# View logs
docker compose logs -f

# Stop all services
docker compose --profile all down

Architecture

One REST contract, three interchangeable API implementations behind an Nginx load balancer, two frontends, and a dedicated migrations runner that prepares the database before any API starts. A local Ganache node backs the smart contract integration.

flowchart LR
    subgraph Clients
        react[React app :3000]
        mvc[MVC app :5050]
        flutter[Flutter app]
    end

    nginx[Nginx load balancer :9999]

    subgraph "API implementations"
        dotnet[.NET API :5000]
        goapi[Go API :5001]
        cpp[C++ API :5002]
    end

    migrations[Migrations runner]
    pg[(PostgreSQL :5432)]
    ganache[Ganache node :8545]

    react --> nginx
    mvc --> nginx
    flutter -.-> nginx
    nginx --> dotnet
    nginx --> goapi
    nginx --> cpp
    dotnet --> pg
    goapi --> pg
    cpp --> pg
    dotnet --> ganache
    migrations --> pg

The migrations runner executes once per deployment and must complete before the APIs start. PostgreSQL is the default provider; SQL Server is supported as an alternative with its own migration set.

The Flutter mobile app (src/app/flutter/reminders_app, dashed above) is in progress and will consume the same REST API; see its README for on-device testing.

Architecture and workflow decisions are recorded as ADRs: see the ADR index.

Project Status

Coverage Status

Build Status

Pull Request Checks

.NET - Build & Test

Go - Build & Test

React - Build & Test

Flutter - Analyze & Test

Blockchain - Hardhat Tests

Infrastructure Check

Deployment & Testing

Deploy to GitHub Pages

Cypress E2E Tests

.NET Code Coverage

Docker Hub

Reminders MVC:

Docker Hub - Reminders MVC)

Reminders API:

Docker Hub - Reminders API)

Testing

The project has unit tests (React/Jest), Flutter widget tests, smart contract tests (Hardhat), .NET integration tests, and end-to-end tests (Cypress) covering the core reminder workflows. Run ./run-tests.sh from the repository root for the automated suite, or see CONTRIBUTING.md and the Cypress Testing README for how to run each suite individually.

Migrations are applied by a dedicated runner service before the APIs start - see CONTRIBUTING.md for how that works and how to troubleshoot it.

See CONTRIBUTING.md for general troubleshooting (ports in use, database connection issues, slow first build).

Contributing

We welcome contributions! Please read CONTRIBUTING.md for details on:

  • Setting up your development environment
  • Project structure and architecture
  • Database migration guidelines
  • Testing requirements
  • Pull request process

Support

If you encounter any issues or have suggestions, we encourage you to open an issue on the GitHub Issues page.

Project Planning

WhereWhat
Project boardBacklog and sprint execution (Backlog, Todo, In Progress, Done)
Roadmap viewPlan on a timeline by sprint
MilestonesIssues grouped into planned releases
Product docsVision and PRDs

Release roadmap

ReleaseThemeProgress
v5.1.0Audit hardeningprogress
v6.0.0Redesignprogress
v6.1.0Observability and release automationprogress
v6.2.0Demo and AI integrationsprogress
v6.3.0Agentic workflow automationprogress
v7.0.0Polyglot APIs and experimentsprogress
v8.0.0Cloud deploymentprogress

Progress updates follow GitHub's sharing project updates guide.