Multi-channel task capture with AI-powered organization. Forward a Telegram message, send an email, or use a voice memo — Dedun turns it into an organized task on your Kanban board.
- Kanban board with drag-and-drop (todo / doing / done)
- Telegram bot — text, voice, and forwarded messages become tasks
- Email capture — forward emails to your personal inbound address
- iOS Voice Shortcut — "Hey Siri, capture task" via Shortcuts app
- AI processing — extracts title, tags, and due dates from any message
- Customizable AI prompt — tweak extraction rules per message type
- Dark mode — toggle in the header, persists across sessions
- Realtime — board updates live when tasks arrive from any channel
- Frontend: Next.js (App Router), Tailwind CSS v4, shadcn/ui, @dnd-kit
- Backend: Supabase (Postgres, Auth, Realtime, Edge Functions)
- AI: OpenAI (task extraction), Deepgram (voice transcription)
- Integrations: Telegram Bot API, Postmark (inbound email), iOS Shortcuts
- Node.js 18+
- Supabase CLI
- A Supabase project
- API keys for: OpenAI, Deepgram, Telegram Bot, Postmark (optional)
git clone https://github.com/apesafe/dedun.git
cd dedun
npm installcp .env.example .env.localEdit .env.local with your Supabase project URL and anon key:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
Link to your Supabase project and push migrations:
npx supabase link --project-ref your-project-ref
npx supabase db pushnpx supabase secrets set \
OPENAI_API_KEY=sk-... \
TELEGRAM_BOT_TOKEN=... \
TELEGRAM_WEBHOOK_SECRET=... \
DEEPGRAM_API_KEY=... \
POSTMARK_API_KEY=... \
POSTMARK_WEBHOOK_SECRET=...npx supabase functions deploy ingest-telegram --no-verify-jwt
npx supabase functions deploy ingest-email --no-verify-jwt
npx supabase functions deploy ingest-voice --no-verify-jwt
npx supabase functions deploy process-task --no-verify-jwtcurl "https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook" \
-d "url=https://<YOUR_PROJECT_REF>.supabase.co/functions/v1/ingest-telegram" \
-d "secret_token=<YOUR_TELEGRAM_WEBHOOK_SECRET>"npm run devOpen http://localhost:3000.
Set the same NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY environment variables in your Vercel project settings, then deploy.
src/
app/ # Next.js App Router pages
components/ # React components (board, settings, tasks, UI)
lib/ # Supabase clients, server actions, hooks
types/ # TypeScript interfaces
supabase/
functions/ # Edge Functions (Telegram, email, voice webhooks)
_shared/ # Shared utilities (AI processor, Supabase client)
migrations/ # Database schema migrations
MIT