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)
- .NET SDK 8.0 - Download .NET
- Node.js 18+ and npm - Download Node.js
- PostgreSQL 13+ - For local database development
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:
- React App: http://localhost:3000
- MVC App: http://localhost:5050
- API (via Load Balancer): http://localhost:9999
- .NET API: http://localhost:5000
- Go API: http://localhost:5001
- C++ API: http://localhost:5002
# 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
Build Status
Pull Request Checks
Deployment & Testing
Docker Hub
Reminders MVC:
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
| Where | What |
|---|---|
| Project board | Backlog and sprint execution (Backlog, Todo, In Progress, Done) |
| Roadmap view | Plan on a timeline by sprint |
| Milestones | Issues grouped into planned releases |
| Product docs | Vision and PRDs |
Release roadmap
| Release | Theme | Progress |
|---|---|---|
| v5.1.0 | Audit hardening | |
| v6.0.0 | Redesign | |
| v6.1.0 | Observability and release automation | |
| v6.2.0 | Demo and AI integrations | |
| v6.3.0 | Agentic workflow automation | |
| v7.0.0 | Polyglot APIs and experiments | |
| v8.0.0 | Cloud deployment |
Progress updates follow GitHub's sharing project updates guide.