Skip to content

mukhrr/tasker

Repository files navigation

Tasker

Task tracking tool for open-source developers. Track proposals, assignments, PRs, reviews, and payments across GitHub repositories — with an AI agent that automatically detects status changes.

Features

  • Notion-style table — Inline-editable task board with 12-status workflow, custom columns, and status group tabs
  • AI-powered sync — LangGraph.js agent analyzes GitHub activity (issues, PRs, reviews, comments) and suggests status updates using Claude
  • GitHub OAuth — Sign in with GitHub, auto-link repos
  • Custom columns — Add your own text, date, number, URL, or select fields
  • Encrypted credentials — API keys and tokens stored with AES-256-GCM at rest
  • Auto-sync — Scheduled sync via GitHub Actions cron (every 6 hours)
  • Chrome extension — View and update task statuses directly on GitHub issue and PR pages. On PRs, automatically detects linked issues from the description and bulk-updates their statuses

Tech Stack

  • Framework: Next.js 16 (App Router, Turbopack)
  • Database & Auth: Supabase (PostgreSQL, RLS, OAuth, Realtime)
  • AI Agent: LangGraph.js + @langchain/anthropic (Claude)
  • UI: shadcn/ui (Base UI) + Tailwind CSS 4
  • Language: TypeScript 5, React 19

Getting Started

Prerequisites

  • Node.js 18+
  • A Supabase project
  • GitHub OAuth app configured in Supabase Auth

Setup

  1. Clone the repo:
git clone https://github.com/your-username/tasker.git
cd tasker
  1. Install dependencies:
npm install
  1. Copy the environment file and fill in your values:
cp .env.example .env.local
  1. Apply database migrations:
npx supabase db push
  1. Run the dev server:
npm run dev

Open http://localhost:3000.

Environment Variables

Variable Required Description
NEXT_PUBLIC_SUPABASE_URL Yes Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY Yes Supabase anonymous key
SUPABASE_SERVICE_ROLE_KEY Yes Supabase service role key (server-only)
ENCRYPTION_KEY Yes 32-byte hex string for AES-256-GCM encryption
CRON_SECRET Yes Bearer token for cron endpoint auth

Generate an encryption key:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

GitHub Actions (Auto-Sync)

The cron workflow at .github/workflows/sync-cron.yml calls /api/cron/sync every 6 hours. Add these as GitHub repo secrets:

  • CRON_SECRET — matches your env var
  • APP_URL — your deployed URL (e.g., https://tasker.vercel.app)

Task Statuses

Tasks follow a 12-status workflow grouped into three phases:

To-do In Progress Complete
In Proposal Assigned Paid
Promising Reviewing Wasted
Got C+ Changes Required Regression
Update Proposal Awaiting Payment
Merged

The AI agent detects transitions by analyzing GitHub events (assignments, PR reviews, merges, payment-related comments).

Browser Extension

The extension/ folder contains a Chrome extension (Manifest V3) that adds Tasker status widgets directly to GitHub.

  • On issues — adds a status widget in the sidebar to view/update the task status
  • On PRs — adds a status button in the header row. Parses linked issue references (#NNNNN) from the PR description and lets you bulk-update all tracked issues at once

Extension Setup

cd extension
npm install
npm run build

Then load extension/dist as an unpacked extension in Chrome (chrome://extensions → Developer mode → Load unpacked).

Project Structure

src/
├── app/
│   ├── (dashboard)/        # Protected routes (tasks, settings)
│   ├── auth/               # Login, signup, OAuth callback
│   └── api/                # sync, settings, cron endpoints
├── components/
│   ├── task-table/         # Notion-style table + cell editors
│   └── ui/                 # shadcn/ui components
├── hooks/                  # use-tasks, use-custom-columns
├── lib/
│   ├── agent/              # LangGraph sync agent (graph, prompts, runner)
│   ├── supabase/           # Client, server, middleware
│   ├── encryption.ts       # AES-256-GCM encrypt/decrypt
│   ├── github.ts           # GitHub API wrapper
│   └── status.ts           # 12-status config and helpers
└── types/                  # TypeScript interfaces

extension/
├── src/
│   ├── background/         # Service worker (auth, task CRUD, batch updates)
│   ├── content/            # Content script + StatusWidget (issue/PR modes)
│   ├── popup/              # Extension popup (HTML/CSS/TS)
│   └── shared/             # Types, messages, constants
├── icons/                  # Extension icons (16, 48, 128)
└── manifest.json           # Manifest V3 config

License

MIT

About

AI Agent that manages your open source tasks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors