Skip to content

apesafe/dedun

Repository files navigation

Dedun

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.

Features

  • 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

Tech Stack

  • 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

Getting Started

Prerequisites

  • Node.js 18+
  • Supabase CLI
  • A Supabase project
  • API keys for: OpenAI, Deepgram, Telegram Bot, Postmark (optional)

1. Clone and install

git clone https://github.com/apesafe/dedun.git
cd dedun
npm install

2. Configure environment

cp .env.example .env.local

Edit .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

3. Set up the database

Link to your Supabase project and push migrations:

npx supabase link --project-ref your-project-ref
npx supabase db push

4. Set Edge Function secrets

npx supabase secrets set \
  OPENAI_API_KEY=sk-... \
  TELEGRAM_BOT_TOKEN=... \
  TELEGRAM_WEBHOOK_SECRET=... \
  DEEPGRAM_API_KEY=... \
  POSTMARK_API_KEY=... \
  POSTMARK_WEBHOOK_SECRET=...

5. Deploy Edge Functions

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-jwt

6. Set up Telegram webhook

curl "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>"

7. Run locally

npm run dev

Open http://localhost:3000.

Deploy to Vercel

Set the same NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY environment variables in your Vercel project settings, then deploy.

Project Structure

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

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages