Meltype
This is Japanese input that melts the wall between half-width and full-width, like thawing snow.
AI translation
Tudu - a friendly todo app with a brush-stroke feel. Track tasks, lists and focus sessions.
ProductivityTypeScript · PLpgSQLGitHub @MojolaoluwaOlanusiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Tudu is a Kanban-based task workspace built with PERN. Features: Drag & drop board, sub-tasks, shared lists, real-time sync, natural language task creation.
Loading the full README. The saved excerpt is shown below.
Tudu - Advanced PERN Stack Todo Application
A senior-level, feature-rich todo application with a friendly, brush-stroke aesthetic. Tudu includes advanced features like real-time collaboration, AI-powered task breakdown, Kanban board, Pomodoro timer, and a responsive header layout tuned for mobile and desktop.Read the full README ↗The fast, offline-first Kanban for people tired of Trello's limits and Jira's chaos. Built as a PERN app (Postgres + Express + React + Node), self-hostable, and open source under AGPL-3.0.
Tudu is a personal and small-team task manager with a real Kanban board,
natural-language input, a built-in Pomodoro timer, and personal plus team
analytics. It has one paid tier (Pro) with a working Paystack integration,
template marketplace, public API, and self-hosting licence. There is no
enterprise tier today; see docs/ENTERPRISE.md for what is planned.
| Area | Feature |
|---|---|
| Tasks | CRUD, subtasks, categories (work / personal / study), priorities, due dates |
| Boards | Kanban, custom columns, WIP limits, column drag reorder, multi-card drag |
| Input | Natural-language parsing ("Buy milk tomorrow 9am #personal urgent") |
| AI | Task breakdown with Gemini, Groq, or local Ollama (free + Pro HD tiers, credit metered) |
| Focus | Pomodoro timer with background-safe countdown + focus stats |
| Time | Time tracking with manual entries, billable flag, weekly reports (Pro) |
| Analytics | Personal + team dashboards, CSV / JSON export (team is Pro) |
| Collaboration | Workspaces (admin / member / viewer), invitations, shared lists by email |
| Integrations | GitHub (OAuth + PR-to-card + HMAC webhooks), Slack (OAuth + /tudu create) |
| Public API | Read (Free) and write (Pro) at /api/v1, personal access tokens, 100 req/min |
| Webhooks | Outbound task events, Standard Webhooks signature, 6-attempt retry |
| Marketplace | Publish free or paid templates, rent, refund within 14 days, version + sync |
| Billing | Paystack subscriptions (Pro monthly / yearly), AI credit bundles |
| Self-hosting | Ed25519-signed licence files, instance-wide Pro, offline verification |
| PWA | Install prompt, offline cache, browser push notifications |
| UX | Command palette (Cmd/Ctrl+K), keyboard shortcuts, undo (soft delete), dark mode |
| Landing | Real marketing pages: /docs, /help, /pricing, /changelog, /blog, /status |
Screenshots are in docs/screenshots/. Representative set:
list.png - the list view with filters and recent activityboard.png - Kanban board with custom columns and WIP badgesanalytics.png - the personal analytics dashboardmarketplace.png - template marketplacemobile.png - mobile list view(Add these files before merge; the README expects them to exist.)
Prerequisites: Node 18+, Postgres 15+, a Google and/or GitHub OAuth app (optional but recommended), and one AI provider key (Gemini / Groq / Ollama) if you want AI breakdown.
# 1. Clone
git clone https://github.com/MojolaoluwaOlanusi/Tudu.git
cd Tudu
# 2. Backend
cd backend
npm install
cp .env.example .env
# Edit .env: DATABASE_URL, JWT_SECRET, SESSION_SECRET are the minimum.
# Add GEMINI_API_KEY (or GROQ_API_KEY, or leave blank for AI disabled).
npm run migrate
npm run dev # http://localhost:5000
# 3. Frontend (new terminal)
cd ../frontend
npm install
cp .env.example .env
npm run dev # http://localhost:5173
For every environment variable, OAuth setup, Paystack, email, push, and
Slack/GitHub walkthroughs, see docs/SELF_HOSTING.md.
A single Express API with a Postgres pool, a Socket.io server layered onto the same HTTP server, and a Vite/React SPA. Real-time updates are pushed to per-user Socket.io rooms; the SPA applies them to a React Query cache.
flowchart LR
Browser[React SPA] -->|HTTPS| API[Express API]
Browser -->|WebSocket| Socket[Socket.io]
API --> PG[(PostgreSQL)]
Socket --> PG
API --> Paystack
API --> AI[Gemini / Groq / Ollama]
API --> GH[GitHub]
API --> Slack
API --> Resend[Resend email]
API --> WebPush[Web Push]
Exact versions in backend/package.json and frontend/package.json.
Backend - Express 4, pg (raw SQL, no ORM), Passport (Google +
GitHub), JWT (jsonwebtoken), bcryptjs, Socket.io, express-rate-limit,
Helmet, Zod (request validation on /api/v1), chrono-node, date-fns,
@octokit/rest, web-push, resend.
Frontend - React 18, Vite 5, TypeScript 5, Zustand (state), React
Query 5 (server state), React Router 6, @dnd-kit (drag and drop),
Chart.js (SVG charts for analytics), Socket.io-client, Framer Motion,
Tailwind CSS 3, vite-plugin-pwa, @paystack/inline-js,
canvas-confetti.
Deployment - Vercel (frontend), Render (backend + cron), Neon (Postgres). Nothing about the app requires these three; they are the maintainer's defaults.
backend/ Express API + Socket.io + migrations + tests
frontend/ Vite + React SPA + tests + e2e
docs/ User-facing docs (self-hosting, marketplace, API, growth)
docs/ Internal reference (visual system, UI inventory, future work)
.github/ Issue + PR templates, CI, Dependabot
# Backend
cd backend
npm run test:unit # mocked, no DB
npm run test:integration # against real Postgres (uses DATABASE_URL)
# Frontend
cd frontend
npm test -- --run # vitest
npm run build # tsc + vite build
# E2E (needs backend on :5000 and `npx playwright install chromium`)
npm run test:e2e
Frontend - frontend/vercel.json has the SPA rewrite. Set
VITE_API_URL and VITE_SOCKET_URL in the Vercel dashboard.
Backend - backend/render.yaml defines a web service + a daily
reminders cron. DATABASE_URL, JWT_SECRET, and SESSION_SECRET are
the minimum; OAuth / AI / Paystack / email / push / Slack add more.
Database - any Postgres 15+ works. Run npm run migrate once
against the target.
Full details in docs/SELF_HOSTING.md.
docs/SELF_HOSTING.md - complete install guide, env vars, deployment
docs/MARKETPLACE.md - publishing, buying, renting, refunds, payouts
docs/API_AND_WEBHOOKS.md - public API endpoints and outbound webhooks
docs/ENTERPRISE.md - planned enterprise features (not shipped)
docs/LAUNCH_AND_GROWTH.md - positioning, playbooks, SEO, referral
docs/FUTURE_WORK.md - known deferred work
docs/UI.md - component inventory
docs/VISUAL_SYSTEM.md - design tokens and recipes
See CONTRIBUTING.md. Bug reports and feature requests use the issue
templates under .github/ISSUE_TEMPLATE/. Security reports go to the
address in SECURITY.md, not to public issues.
AGPL-3.0. See LICENSE.
Enterprise features (SSO, SCIM, audit export, white-label, on-prem) are
planned to live in a separate proprietary /ee folder once they ship.
They do not exist today, and the AGPL core stays AGPL when they do.
Built by Mojolaoluwa Olanusi. Thanks to the maintainers of every library
in package.json, and to the users who reported the first hundred bugs.