TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Tasks, projects, money, time and weekly reviews — everything a one-person company runs on, in one workbench. Open source and self-hostable on your own Cloudflare.
ProductivityTypeScript · JavaScriptGitHub @evepupilOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
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
The one-person company console for indie developers — tasks, time and side-project income in one place, with the real hourly rate of every project. Self-host free on Cloudflare.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
The one-person company console for indie developers.
Tasks, time and side-project money in one place — and the real hourly rate of every project.
Most indie developers run several things at once: a template store, an API relay, a blog, a consulting gig. Task apps know nothing about money, and bookkeeping apps know nothing about time — so it is hard to tell which project deserves your evenings.Read the full README ↗The one-person company console for indie developers.
Tasks, time and side-project money in one place — and the real hourly rate of every project.
English · 简体中文
Most indie developers run several things at once: a template store, an API relay, a blog, a consulting gig. Task apps know nothing about money, and bookkeeping apps know nothing about time — so it is hard to tell which project deserves your evenings.
DeverDesk keeps tasks, time and income together and connects them. Every task, time block and payment belongs to a project, so the app can show each project's net income, hours spent and resulting hourly rate.
| View | What it does |
|---|---|
| Today | Today's plan; move unfinished work to today in one click; drag tasks onto a timeline, resize blocks to change duration, or auto-schedule the day; routines, net income this month vs. target, and time tracked today |
| Week | Seven days top to bottom with a capacity bar per day; drag tasks between days; unscheduled tasks on the side |
| Tasks | Board or list; group by status, project or priority; filter and sort; drag a card to another column to change it |
| Projects | A board by stage (idea, building, running); net income, hours, hourly rate, monthly goal progress and next milestone per project; a 12-week trend |
| Ledger | Pending payments pinned on top, everything else grouped by month, project or category; mark entries as received or refunded; CSV export |
| Insights | Net income, time tracked, hourly rate and tasks done on one trend chart, with breakdowns by project, money and time |
| Review | An auto-written weekly summary, what got done, where the time went, and three reflection notes |
| Routines | Daily, weekly and monthly routines with streaks and a check-in grid |
Everywhere: a command palette (Ctrl/⌘ K), alerts for overbooked days, overdue tasks and late payments, a running timer, one-line quick add (Write report 30m #blog tomorrow !!), a quick-capture button on phones, backup export and import, and keyboard shortcuts (?).
The interface comes in English and Chinese — picked from your browser language and switchable from the avatar menu — and amounts are shown in the currency you choose.
| Local edition | Cloud edition | |
|---|---|---|
| Where your data lives | In this browser only | A D1 database in your own Cloudflare account |
| Sync across devices | — | Automatic, record by record; works offline |
| Sign-in | None | A passcode, or Cloudflare Access |
| How to get it | Open app.deverdesk.com | Deploy your own |
Both editions are built from the same code; a build-time switch picks one. Moving from the local edition to the cloud edition is a backup export and import.
Open app.deverdesk.com. It runs the local edition with sample data. Nothing is sent to a server, and everything you change stays in your browser.
The cloud edition is a static Next.js export plus a Cloudflare Worker (the API) and a D1 database, deployed together as a single Worker.
DEVERDESK_PASSWORD: the passcode you type to open your workspace.*.workers.dev address and sign in.To use your own domain, add it to the Worker in the Cloudflare dashboard (Workers & Pages → your Worker → Settings → Domains & Routes).
Requires Node.js 22+ and pnpm 10.
git clone https://github.com/evepupil/DeverDesk.git
cd DeverDesk
pnpm install
pnpm exec wrangler login # sign in to Cloudflare
pnpm build
pnpm run deploy # create the tables, then deploy the Worker
pnpm exec wrangler secret put DEVERDESK_PASSWORD # set your passcode (input is hidden)
pnpm run deploy applies database migrations before deploying. On a brand-new account it deploys once first so that Wrangler creates the database, then applies the migrations. Note the run: pnpm deploy on its own is an unrelated built-in pnpm command.
To update later, pull the latest code and run pnpm build && pnpm run deploy again.
DEVERDESK_PASSWORD. Sessions last 30 days. After 10 failed attempts from the same IP, sign-in is locked for 15 minutes. Changing the passcode signs out every device.ACCESS_TEAM_DOMAIN (for example your-team.cloudflareaccess.com) and ACCESS_AUD (the application's audience tag). People signed in through Access skip the passcode.In the local edition, choose Export backup from the avatar menu. In your cloud edition, choose Import backup and pick that file.
The cloud edition is also an MCP server at https://your-workspace.example.com/mcp, so assistants such as Claude Code, Codex, Cursor and VS Code can log and plan for you.
claude mcp add --transport http deverdesk https://your-workspace.example.com/mcp \
--header "Authorization: Bearer dd_your_token"
These apps connect through OAuth, without a token:
https://your-workspace.example.com/mcp).The app then shows up in the Connect AI list, where you can change its permission or disconnect it. Claude Code, Codex, Cursor and VS Code can also connect with just the address and approve in the browser; tokens keep working.
What the assistant can do:
| Group | Tools |
|---|---|
| Capture | Add several tasks at once, record income and expenses (an external order ID skips duplicates), log time, start and stop the timer, check off routines, write weekly notes |
| Check | Today, this week, every project, one project in depth, stats for any period, the weekly review, keyword search, flexible queries |
| Plan | Edit tasks in bulk, schedule a day into free time slots, spread tasks over a week by capacity, reschedule, manage projects, milestones and routines, delete records |
Every change an assistant makes is recorded. The sparkles icon in the top bar opens AI activity, where you accept or reject proposals and undo changes; records created by an assistant carry the same icon. Deleting, or changing more than ten records at once, is shown to you as a preview first. Dates and times follow the time zone in your schedule settings, which the browser fills in the first time you sign in.
If the workspace sits behind Cloudflare Access, add Access bypass rules for /mcp, /oauth/* and /.well-known/*; DeverDesk checks tokens itself, and the authorization page stays behind Access.
A small recorder listens to Claude Code (and Codex) while you work and turns what happened into finished tasks and time entries, in the side project you bound to the folder.
my-app) under Directory names, or tell your assistant "add this project to DeverDesk".claude plugin marketplace add evepupil/DeverDesk
claude plugin install deverdesk@deverdesk --config server_url=https://your-workspace.example.com --config token=dd_your_token
For Codex, or without the plugin, download integrations/claude-code/bin/deverdesk-recorder from this repository and run node deverdesk-recorder setup --url https://your-workspace.example.com --token dd_your_token --install-codex-hooks. Run deverdesk-recorder doctor any time to check that everything is wired up.
How it counts:
Closes T-123 in the message to complete an existing task instead.~/.deverdesk.The cloud edition also has a small HTTP API for scripts. Create a token from the avatar menu → Connect AI with the Write permission. Each token is shown only once and stored only as a hash.
| Endpoint | Purpose |
|---|---|
POST /api/tasks | Create a task. Fields: title (required), plannedFor (YYYY-MM-DD), estimateMin, priority (0–4), projectId, notes |
POST /api/ledger | Record income or an expense. Fields: kind (income / expense) and amount (required), category, channel, projectId, status, date, expectedOn, note |
GET /api/summary?month=YYYY-MM | Income, expenses, net, minutes tracked and tasks done for one month |
curl -X POST https://your-workspace.example.com/api/tasks \
-H "Authorization: Bearer dd_your_token" \
-H "Content-Type: application/json" \
-d '{"title":"Write the launch post","plannedFor":"2026-10-01","estimateMin":45}'
Records created through the API sync to every device like any other change, and show up in AI activity, where they can be undone.
Requirements: Node.js 22+ and pnpm 10. Development works on Windows, macOS and Linux.
pnpm install
pnpm dev # cloud edition: pages on :3000, API on :8787, local passcode "dev"
pnpm dev:local # local edition only, no API or database needed
The first pnpm dev creates .dev.vars from .dev.vars.example with the passcode dev, and applies the local database migrations. Use PORT and API_PORT to change the ports.
| Command | What it does |
|---|---|
pnpm build / pnpm build:local | Build the cloud / local edition into out/ |
pnpm typecheck | Type-check the app and the Worker |
pnpm lint | Run ESLint |
pnpm test | Run the unit tests (Vitest) |
pnpm probe | Click through the core flows of the built local edition in Microsoft Edge, in Chinese and English (run pnpm build:local first) |
pnpm e2e | Start the API locally and simulate two devices signing in and syncing (run pnpm build first; it reads the passcode from .dev.vars) |
pnpm shots / pnpm shots:readme | Take screenshots for visual checks / for this README |
Build-time variables:
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_DEVERDESK_EDITION | local builds the local edition; anything else builds the cloud edition |
NEXT_PUBLIC_DEVERDESK_REPO_URL | The repository the local edition links to (point it at your fork) |
NEXT_PUBLIC_DEVERDESK_ANALYTICS_TOKEN | Cloudflare Web Analytics token, used by the local edition only |
src/
app/ routes
features/ the app shell and one folder per view
components/ UI primitives (shadcn/ui) and small building blocks
domain/ pure logic: scheduling, routines, money, insights, quick-add parsing, search, backups
state/ data store, preferences, sync status, and the storage layer (browser or cloud)
i18n/ language settings and the English and Chinese dictionaries
data/ catalogs and sample-data generation
sync/ the sync protocol shared by the browser and the Worker
worker/ the Cloudflare Worker: sign-in, sync, tokens, the MCP server, the AI change log, automation API, D1 migrations
scripts/ dev server, build, deploy and acceptance scripts
deploy/demo/ configuration for the app.deverdesk.com demo
site/ the website (deverdesk.com): a separate Next.js project
docs/ design documents (in Chinese)
Milestones and module designs (in Chinese) live in docs/roadmap.md.
Issues and pull requests are welcome; see CONTRIBUTING.md. All interface text lives in src/i18n/messages, so please add both English and Chinese when you add text.
Please report vulnerabilities privately; see SECURITY.md.
GNU AGPL v3.0. You are free to use, modify and self-host DeverDesk. If you offer a modified version to others as a network service, you must also make its source code available to them.