A personal Getting Things Done (GTD) application built with .NET 10, React 19, and Entity Framework Core. Uses PowerSync for offline-first real-time synchronization. Available as a web app (PWA) or native desktop app (Electron).
- Architecture Principles - Architectural decision-making framework and principles
- Inbox Vision - Universal inbox philosophy and integration goals
- Testing Guidelines - Testing best practices, especially for the IDbContextFactory pattern
- Quick Reference - Development workflow, commands, and patterns
- Build the solution:
dotnet build - Run migrations: The app automatically applies migrations on startup
- Run the app: Press F5 in VS Code to start both backend and frontend with hot reload
- Backend API:
http://localhost:5272(or HTTPS on 7027) - Frontend dev server:
http://localhost:3000 - Frontend proxies
/apirequests to the backend
- Backend API:
cd frontend
# Development (with hot reload)
npm run dev:electron
# Build for your platform
npm run build:win # Windows (.exe)
npm run build:mac # macOS (.dmg)
npm run build:linux # Linux (.AppImage, .deb)The Electron app includes:
- System tray with inbox count badge
- Global quick capture shortcut (Ctrl/Cmd+Shift+Space)
- Window state persistence
src/OpenGTD/- .NET 10 Backend (API)Features/- Feature folders using Vertical Slice Architecture (each slice self-contained)Shared/- BaseEntity, Priority, Exceptions, PersistenceInfrastructure/- DI setup, migrationsWeb/- Program.cs, API endpoints, Middleware
frontend/- React 19 Frontendsrc/components/- Shared UI componentssrc/features/- Feature-specific components and hookssrc/lib/powersync/- PowerSync setup for offline-first syncelectron/- Electron main/preload processes (tray, shortcuts, window management)
tests/OpenGTD.Tests/- Unit tests (TUnit, Testcontainers PostgreSQL)
See CLAUDE.md for detailed architecture documentation and development workflow.