Skip to content

Repository files navigation

OrangTask

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

task.oranges.lt


What's in here

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

Features

  • 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)
  • GitHub trackers for issues, pull requests and security alerts, synced into a GitHub list
  • Scratchpads for plain notes with basic formatting

Self-hosting

git clone https://github.com/Orang-Studio/OrangTask
cd OrangTask
cp backend/.env.example backend/.env

Fill 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 -d

Or run it directly:

cd backend  && bun install && bun run src/index.ts
cd frontend && bun install && bun run dev

nginx.example.conf has a reverse proxy config that handles the /ws upgrade.

Android

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.

Translations

Community translations are managed in Weblate. English is the source locale for both clients. To pull a published locale into the web and Android trees:

cd frontend
WEBLATE_LOCALES=lt npm run i18n:pull

Claude Code integration

mcp/ is an MCP server that exposes your tasks over the personal API key. See mcp/README.md for setup.

Requirements

  • Bun 1.1+ (or Node 18+)
  • PostgreSQL 14+
  • Redis 6+
  • JDK 17 and Android SDK 34 for the Android app

GPL-3.0 licensed
Made with Love ❤️

About

\\ Self-hosted task manager with a web app, Android app and real-time sync

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages