Skip to content

About

Who's free next week? A self-hosted, week-by-week capacity view for small agencies.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3,943 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CapacityLens

Who's free next week?

A 50-second walkthrough of the CapacityLens demo: an over-capacity day shows in red, a tentative booking is dragged to a colleague with room, new work is booked by dragging across two days, the schedule zooms out to four weeks, a client, a project and a person are added, the new person is booked onto the new project, and the Overview shows free days per person for the weeks ahead.

Every small agency answers that question badly. It lives in someone's head, a colour-coded spreadsheet, or a group chat at 5pm on a Friday. So work gets promised to people who are already full, the quiet capacity nobody noticed goes unsold, and the person who was going to be on holiday finds out about their new project the week before they leave.

CapacityLens is a shared, week-by-week picture of where everyone's time is going — so you can see who is busy, who has room, and who is about to be buried, and move things around before it becomes a problem.

One screen. People down the side, days across the top, the work in between. Red means someone is over capacity that day. The percentage next to each name is how full they are across the window you're looking at.

Latest release

Read the latest release notes for the highlights and upgrade notes.

Try it in two minutes

The demo runs entirely in your browser with sample data. It is fully editable — drag things about, book time off, break something. Schedule changes stay in memory and reset when you reload; only device choices such as the cosmetic signed-in state and display preferences stay in your browser.

corepack enable
pnpm install
pnpm run dev:demo

Then open http://127.0.0.1:5173, pick a demo account, and you're in.

What you can do with it

  • See the week ahead — 1, 2, 4, 6 or 8 weeks at a time, filtered by discipline, client, project or activity.
  • Spot trouble early — daily over-capacity in red, plus a 14-day forward warning for problems just off the edge of the screen.
  • Plan work you haven't won yet — placeholder people for roles you'd need to hire or borrow, and external partners who don't count against your capacity.
  • Plan around people's dates — give Studio and Supplementary people optional inclusive start and end availability dates while keeping existing bookings visible for history.
  • Keep holidays in the picture — time off sits in the same view as the work, so it stops being a surprise.
  • Know how full you really are — utilisation per person and across the whole visible window.
  • Run it yourself — your data in your own SQLite file, on your own server, under AGPL-3.0.

What it deliberately isn't

CapacityLens will not track tasks, tickets, deadlines, budgets or timesheets, and it won't schedule anyone by the hour. It answers a simpler question — where are your people's hours going, and where is there room? — and stops there.

If you need Jira, use Jira. This is the thing you look at before you open Jira.

Who it's for

Agency owners, studio and operations leads, resource planners and project leads: the people who get asked "can we take this on?" and need a shared, honest answer.

Project status

CapacityLens is alpha software with a single maintainer. Database upgrades are tested from thirteen released database snapshots, the oldest from 0.20.0-alpha.1, so a database created by that release or any later one is expected to upgrade in place. Beta will mean the upgrade path and the settings are stable.

Details: how it is tested · philosophy

Run it for real

Every release from 0.73.0-alpha.1 carries a server archive. Node 24.19.0 or newer within 24.x is the supported runtime. Node 26.9.0 or newer within 26.x has experimental, best-effort compatibility; see the compatibility notes.

  1. Download capacitylens-X.Y.Z.tar.gz from the latest release and unpack it.
  2. Pick a folder for the database; its file is created there on first start.
  3. Configure: in the unpacked folder, run node server/dist/index.mjs init --public-url <address> --db <file in step 2's folder>. It prints the environment file with both secrets generated: paste it into your host's environment editor, or add --out /etc/capacitylens.env to write the file.
  4. Start it with node --env-file=<your env file> server/dist/index.mjs, or as a service.
  5. Open the address and create your company with the setup token from step 3.

Install CapacityLens has the commands for a managed host or a Linux host. Docker is another way to install.

Sign-in, in short

Password sign-in is the stable self-hosted default, with breached-password screening and user-controlled session revocation. Google Workspace and Microsoft Entra ID are the supported company sign-in providers; GitHub remains experimental in mixed mode. Optional offline access keeps a read-only snapshot for up to seven days — it never queues or syncs edits, and SQLite stays the source of truth.

Details: how sign-in works · offline access

Documentation

Read the CapacityLens documentation online. The same docs ship with the repository: open docs/index.html straight from a checkout — no server, no build — or read the Markdown sources under docs-src/ on GitHub.

Under the hood

React, TypeScript, Vite and Tailwind in the browser; Zustand for UI state and undo/redo; a shared TypeScript domain in shared/ for validation, migrations and the scheduling rules; Fastify and Better Auth over Node's built-in SQLite driver on the server. Vitest, Testing Library, Playwright and axe keep it honest. Deploy with Docker Compose, plain Node 24 or a managed VPS platform.

The browser always talks to the API; only VITE_CAPACITYLENS_DEMO=1 swaps in the throwaway in-memory demo adapter.

Contributing

Node 24 and pnpm are required; the pinned version is in .nvmrc.

nvm use
corepack enable
pnpm install
pnpm run dev          # web app on :5173 and SQLite API on :8787, with sample data loaded
pnpm run gate:all     # app and server: formatting, typecheck, lint, tests, coverage and build budget
pnpm run e2e          # Chromium demo, database and authentication flows

Start with contributing and the development guide for the enforced coverage and build numbers, cross-browser checks and CI jobs. Also worth reading: the server README, the standing decisions behind the product and architecture, and the changelog.

Governance · Support · Security policy · Security review · ASVS 5.0.0 ledger · Trademarks

Licence

CapacityLens is AGPL-3.0-only. Product names and logos are handled separately in TRADEMARKS.md.

gate E2E test coverage CodeQL OpenSSF Scorecard OpenSSF Baseline Docker build Node.js 24+ license: AGPL-3.0

About

Who's free next week? A self-hosted, week-by-week capacity view for small agencies.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages