Skip to content
sajadjanatPublic

About

Lightweight self-hosted team and project management. Persian/English, shadcn/ui, one Docker container, Tauri clients and iPhone PWA.

Resources

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English · Persian · Arabic · Simplified Chinese

TaskOrbit — transparent sunlit Mercury wordmark

TaskOrbit

Keep projects, sprints and team work in one clear orbit.

Lightweight self-hosted project management, built with React, shadcn/ui and Tauri.

Web and server checks Version 0.2.2 Tauri 2 shadcn/ui MIT license

Download · Features · Quick start · Updates · Docker

TaskOrbit English Kanban workspace

Actual application screens captured with disposable example projects and fictional accounts. No personal project data is shown.

Mobile layout in 0.2.2

Bottom navigation, full-width status columns, collapsible filters and bottom-sheet forms make small screens easier to use. Task and team lists become cards, with Light/Dark glass themes and locale-aware direction.

Mobile board in Light mode Mobile board in Dark mode

Why TaskOrbit?

See what is planned, who owns the next step, and what is ready to ship. TaskOrbit brings projects, sprints and work items together in a compact interface, on a server you control. Start with one application container and SQLite, then connect from your browser, desktop, Android or the iPhone PWA.

TaskOrbit is an independent, MIT-licensed application for team project management. The current release is an early preview; implemented features and remaining work are documented below.

Part of the Orbit family

Every member of the Orbit family has a celestial symbol and a mission. These symbols tell our story of the role each application plays in managing work.

For GitOrbit, we chose a black hole: a symbol of a powerful center drawing scattered projects, repositories and workspaces into one shared environment, where they can be seen and managed together.

For TaskOrbit, we chose Mercury: the smallest planet in our solar system, with the fastest orbital speed around the Sun. To us, this combination expresses TaskOrbit's purpose: a lightweight, fast application that helps teams coordinate tasks, plan projects and sprints, and keep moving forward. The sunlight in its symbol also reflects Mercury's proximity to the Sun. These planetary facts are documented by NASA; their connection to our work is our brand interpretation.

The Orbit family will grow. Each new application will have its own celestial symbol and personality, chosen for its mission: tools with different roles and a shared goal of bringing order to the world of work.

Features

Features What it does
Projects & workspaces Multiple workspaces and projects, project identifiers, colors and archiving.
Sprints Sprints with goals, dates, planned/active/completed states and progress.
Work views Kanban with drag-and-drop, searchable list and due-date timeline.
Task details Task descriptions, priorities, assignees, sprint/module assignment, estimates, due dates and labels.
Task relationships Subtasks, related items and blocking dependencies with cycle prevention.
Collaboration Live updates across connected clients, comments, activity history and attachments up to 10 MB each (20 per task).
Project knowledge Modules, plain-text project documents and shared saved filters.
Team administration Instance administrator, user creation/deactivation/password reset, workspace administrator/member/viewer roles.
Language & appearance English, Persian, Arabic and Simplified Chinese, RTL and LTR, local fonts and light/dark appearance.
Web & iPhone PWA Web app and iPhone/iPad PWA with an offline connection screen. Editing requires connectivity.
Native clients Tauri clients for Windows, macOS, Linux and Android, with a user-supplied self-hosted server URL.
Small server footprint One server container and a persistent SQLite volume. No Redis, message queue or separate database service.
App & server updates Signed desktop updates, Android APK checks, web/PWA reload notices, and optional one-click server upgrades with backup and rollback.
Team workflows Global search (Ctrl/⌘ K), assignment/comment/deadline inbox, recurring tasks, bulk editing, localized project templates and sprint capacity/workload reports.
Project transfer JSON project export/import and CSV task import with preview, reference validation and atomic rollback. Workflow guide.
Password recovery Optional SMTP email reset links; clear administrator assistance when email is not configured. Setup.

The interface and README are available in English, Persian, Arabic and Simplified Chinese. Each README shows actual previews in its own language.

Explore project progress, the light theme and task details

TaskOrbit English project overview

TaskOrbit English light theme

TaskOrbit English task details

Download

TaskOrbit 0.2.2 → GitHub Releases

Platform Package / access Update method
Windows x64 TaskOrbit_0.2.2_x64-setup.exe Signed in-app updater
macOS Apple Silicon TaskOrbit_0.2.2_aarch64.dmg Signed in-app updater
macOS Intel TaskOrbit_0.2.2_x64.dmg Signed in-app updater
Linux x64 DEB / AppImage Signed in-app updater
Android arm64 taskorbit-android-arm64.apk Signed APK; user-approved installation
Web / iPhone / iPad Browser / Add to Home Screen Reload after server upgrade

Quick start

  1. Start your server with Docker using the instructions below.
  2. Create the first administrator and workspace. There is no default password.
  3. Create accounts in Instance admin, then add members and roles in Team.
  4. Create a project and sprint, then add work items with assignees, priorities and due dates.
  5. Follow the work using Board, List or Timeline.
  6. Connect devices to the same HTTPS server; choose your language and light or dark mode.

Self-host locally (one container)

git clone https://github.com/sajadjanat/taskorbit.git
cd taskorbit
docker compose up -d --build

Open http://localhost:4310. Create the first administrator and workspace. There is no default password. Public registration closes after this account is created. Workspace administrators can use Team → Create user to create an ordinary login and membership together, or Add member for an existing email. Share initial passwords privately; invitation emails are not sent. A workspace is the permission boundary: all its members can see its projects. Settings → Appearance provides persistent Light/Dark choices with glass surfaces; Persian and Arabic filters follow RTL direction.

To use the published multi-architecture image instead of building from source:

docker compose -f compose.image.yaml up -d

The public image is ghcr.io/sajadjanat/taskorbit:v0.2.2 for Linux amd64 and arm64. For HTTPS with this image, combine compose.image.yaml with compose.https.yaml and set the same TASKORBIT_DOMAIN described below.

SQLite, attachments and account data persist in taskorbit-data. Do not use docker compose down -v unless you intend to delete them.

Updates

The instance administrator can check releases in Admin. To enable one-click server installation with database backup and automatic rollback, run docker compose -f compose.image.yaml -f compose.updates.yaml up -d after pulling the images. This adds one updater container (two total, or three with Caddy). Desktop 0.1.3+ clients have a signed updater on the local connection screen; use the Connection → Server connection and updates… menu. Android offers the newer signed APK and requires installation approval. Web/iPhone PWA offers reload after your server is upgraded. Versions before 0.1.3 require one manual installation. See the update guide.

Public server with HTTPS (two containers)

Point a domain at the server, permit inbound ports 80 and 443, and create a .env:

TASKORBIT_DOMAIN=tasks.example.com
docker compose -f compose.yaml -f compose.https.yaml up -d --build

The second container is Caddy, which obtains TLS certificates and proxies to TaskOrbit. Alternatively, use your existing reverse proxy and only the TaskOrbit container; set APP_ORIGIN=https://tasks.example.com and NODE_ENV=production. The origin must match the URL used by your browser. The application binds to loopback on the Docker host by default. Do not expose first-run setup until the owner is ready to create the administrator.

Install on your devices

Download native clients from Releases. On first launch, enter your own HTTPS server root URL, for example https://tasks.example.com, then sign in. Later launches connect automatically to the remembered server. Use Connection → Server connection and updates… to change it and Back to workspace to return. The connection screen does not store passwords. HTTP is permitted only for localhost development. Live collaboration works across clients connected to an upgraded server.

On iPhone/iPad, open your server in Safari → Share → Add to Home Screen. The installed PWA uses the same server and accounts. A secure HTTPS origin is required. The PWA caches only public icons and an offline screen; authenticated work data is not stored in the service-worker cache. No offline synchronization is included yet.

Windows installers and macOS apps are not code-signed/notarized in the preview. Android APKs require the repository's persistent release signing key; do not substitute a new key for each release. An App Store / Play Store listing is not included.

Development

Requires Node.js 22.18+:

npm ci
npm run dev

Visit http://localhost:5173 and set APP_ORIGIN=http://localhost:5173 for the development API. For a built local server:

npm run build
npm start

PORT defaults to 4310, HOST defaults to 127.0.0.1, and DATABASE_PATH defaults to data/taskorbit.sqlite.

npm test
npm run build
npx playwright install chromium webkit
npm run test:e2e

Tests use temporary databases and do not touch data/. On machines where the Playwright browser download is unavailable, run PLAYWRIGHT_CHANNEL=chrome npx playwright test --project=chromium against installed Chrome (PowerShell: $env:PLAYWRIGHT_CHANNEL='chrome'). The WebKit mobile run is a browser-engine check, not a claim of physical iPhone testing.

For desktop development, install the Tauri prerequisites, then npm run desktop. Build on the target OS with npm run desktop:build -- --bundles nsis (Windows), --bundles dmg (macOS), or --bundles deb,appimage (Linux). Android needs Java 17, Android SDK/NDK and npx tauri android init followed by npx tauri android build --apk --target aarch64.

Backup and operations

The admin JSON export contains work data and user metadata, but excludes password hashes, sessions and attachment bytes. It is not a complete restore backup. For a complete backup, stop TaskOrbit, archive its /data volume, then start it again. See operations. The SQLite file holds attachment blobs, so backing up only the file while the server is actively writing is unsafe unless using SQLite's backup API.

The Compose resource settings cap the application at 512 MB and one CPU; these are limits, not measured idle-memory claims. SQLite WAL makes this suitable for a small team on one server instance. Do not run multiple replicas over a shared/network-mounted database file.

Release and scope

Tag v0.2.2 triggers verification, native packaging, a multi-architecture server image and a draft release. Publication occurs only after all platform jobs succeed. See release notes and roadmap for implemented and remaining features.

Stack: React, TypeScript, Vite, Tailwind, genuine shadcn/ui source components, Express, Node's SQLite API and Tauri 2. Font: Vazirmatn (OFL). The Mercury wordmark and app icon use warm solar lighting, with stone/charcoal surfaces and gold accents throughout both UI themes. Brand artwork was generated from the owner's GitOrbit reference; see brand details.

License

MIT. Generated component sources and bundled dependencies retain their original licenses. See third-party notices.

How it works

Browser / iPhone PWA ─┐
Tauri desktop/Android ├── HTTPS ── TaskOrbit API + web UI ── SQLite volume
                     ┘                     │
                              optional Docker updater
                           backup → replace → health / rollback
Location Purpose
src/App.tsx Projects, sprints, task views and administration.
src/components/ui/ shadcn/ui source components.
src/components/updates.tsx Client/server update panels and web version notice.
server/app.mjs Authentication, roles and work-management API.
server/db.mjs SQLite schema and persistence.
server/upgrade-engine.mjs Docker replacement and rollback.
src-tauri/src/lib.rs Server connection and guarded native updates.

Contributing

Report a bug or propose a feature. Include the version, platform and steps to reproduce, without private project data. Keep the compact interface and all four README files consistent, and run the relevant checks before opening a pull request.


Maintained by sajadjanat. UI built with shadcn/ui, native clients powered by Tauri.

AI agents through MCP

Connect Codex, Cursor, Claude Code, Claude Desktop or another compatible agent to your own server. Open Settings → AI integrations · MCP, create a personal read-only or write token, copy the generated configuration, then restart the agent and ask it to list your workspaces. Remote HTTP and a local stdio bridge are available; no extra server container is needed. Current workspace permissions and task/page version conflicts still apply. Setup and troubleshooting. The versioned stdio package is included in GitHub Releases. OAuth-only hosted connectors require a compatible token/stdio client in this release.

About

Lightweight self-hosted team and project management. Persian/English, shadcn/ui, one Docker container, Tauri clients and iPhone PWA.

Resources

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages