A self-hosted task manager with a web app, an Android app and real-time sync
Lists, smart views, sharing, natural language quick-add, offline queue and push
| Folder | What it is |
|---|---|
backend/ |
Bun + Hono + Postgres API, WebSocket sync, web push |
frontend/ |
React + Vite + Tailwind PWA |
android/ |
Native Kotlin app (Jetpack Compose, Room, Hilt) |
mcp/ |
MCP server so Claude Code can read and edit your tasks |
- Lists with icons and colors, plus smart views (today, week, overdue, assigned, all)
- Share a list with anyone, roles for owner, editor and viewer
- Quick-add that parses text like
report friday 5pm high priority - Recurring tasks via RRULE
- Real-time sync over WebSocket, offline queue that flushes on reconnect
- Web push and native Android push (FCM)
- Command palette, keyboard shortcuts, light and dark themes
- Personal API keys and outgoing webhooks for n8n, Zapier or your own scripts
- Import from Google Keep (Google Takeout export)
git clone https://github.com/Orang-Studio/OrangTask
cd OrangTask
cp backend/.env.example backend/.envFill in backend/.env, at minimum DATABASE_URL, REDIS_URL and SESSION_SECRET.
OAuth, email and push are all optional, the app runs without them.
docker compose up -dOr run it directly:
cd backend && bun install && bun run src/index.ts
cd frontend && bun install && bun run devnginx.example.conf has a reverse proxy config that handles the /ws upgrade.
Open android/ in Android Studio and run. For native push, drop your Firebase
google-services.json into android/app/ and apply the Google Services plugin.
Without it the app still builds, push is simply inert.
mcp/ is an MCP server that exposes your tasks over the personal API key. See
mcp/README.md for setup.
- Bun 1.1+ (or Node 18+)
- PostgreSQL 14+
- Redis 6+
- JDK 17 and Android SDK 34 for the Android app
MIT licensed
Made with Love ❤️