Project
Kuro Suite
Workflow apps for running delivery, staffing, and shared knowledge, in one web app on one backend. You can try all of it on sample data, without signing in. Nothing you do leaves the page, and a reload puts everything back.
What This Demonstrates
Run a weekly delivery review in a public sandbox on recorded data. See what each app is for, what is live and what is not, and why the sandbox never calls the API.
Try It
A good first pass is a project lead's weekly review. It takes a few minutes, and you can't break anything.
Open the demo1
Open the weekly agenda
In the demo, switch to Delivery. It opens on what is blocked, what needs a decision, what is due, and what changed.
2
Clear the block
Set Translate form to Spanish to In progress. The row stays put, says it saved, and offers Revert.
3
Make the decision
Give Translation vendor contract delayed an owner and set it to Mitigating.
4
Read the brief
Follow the row to Harbor intake redesign. The forecast asks whether it will land by the planned end. Log a new risk here.
5
Reload the page
Everything you changed disappears. The edits lived in memory, and the demo tells you so at the top of every page.
Applications
Each app has one job, its own home screen, and a few destinations of its own. They share one sign-in, one API, and one set of data: an app reads another's data and links to it for any change.
Today
Your coming weeks, and the few things that need you now.
Delivery
A lead's weekly review: what is due, blocked, changed, or waiting on a decision, and whether the work will land.
Workload
Who is overloaded, underused, or free, and the change that evens it out.
Initiatives
Which initiatives are off track, why, and whether the work fits the people available.
Docs
Find what the organization has written, and add a revision.
Ask
Answers from the suite's data and documents, and proposed changes a person approves.
Inventory
What the organization runs, who owns it, and what work is changing it.
Where It Stands
Built means present in the private source. The sandbox is the only part open to the public.
The sandbox at its own address
The whole app, answering from recorded data in your browser. It never calls the API.
Live
One web app for every workflow
An app switcher in place of a menu of every domain.
Built
The API and its data rules
A Rust API with a crate per domain, a generated contract, a row policy on every tenant table, and an audit row with every write.
Built
A switch that stops the API
A budget or alarm sets the API to take no requests. It has stopped the API once, and turning it back on is manual.
Built
Live mode
The hosted API is switched off, and its database does not have the current schema yet. Sign-in would be invite-only.
Off
Hosting for the assistant
The Go runtime and its hosting code exist, but the runtime has never been hosted. In the demo, Ask replays answers recorded from a scripted model.
Off
How It Is Built
Browser
- One React and TypeScript app
- Types generated from the API contract
In the sandbox, the request ends here: the page answers from recordings of the real API.
Edge
- CloudFront on a flat-rate plan
- A per-address rate rule in front of every request
The plan has no overage charges, so a flood of the demo costs about the same as idle.
API
- Rust, Axum, and SQLx in one AWS Lambda function
- Sign-in through Auth0
Live mode only, and switched off today. A budget or alarm stops it.
Database
- Aurora Serverless PostgreSQL that pauses when idle
- A row policy on every tenant table
- An audit row with every write
The policy applies to every query, including one that forgets the tenant.
Limits
- The demo is one recorded week, starting October 26, 2026. It will not move with your calendar.
- A recorded forecast keeps its dates. Editing the plan does not recalculate them.
- It opens as an admin. Add
?as=editoror?as=viewerto the address to see those roles. - The source is private. Inside the Build lists the files that build this page.
Ask About It
The sandbox is the public demo; live mode is off. If you have a question about it, get in touch.
Inside the Build
The files that do the work, the choices behind them, and excerpts taken from the source each time the site builds.
Key Files
apps/portfolio/src/pages/KuroSuite.tsx
This page: the demo path, the apps, the status, and the flow
apps/portfolio/src/content/kuro-suite.ts
The demo steps, the apps, the status list, and the request flow
apps/portfolio/src/content/materials-kuro.ts
This section, since the suite itself is not public
infra/terraform/envs/middleware/dns.tf
The demo's DNS records; the suite hosts everything else itself
docs/specs/kuro-suite.md
The page's main claims, with their sources and status
Decisions
A static sandbox on a flat-rate plan
Over a demo tenant on the live API: anyone with a token could keep the database awake, at about $43 to $86 a month by the suite's estimate; a flood of static files with no overage charges costs about the same as idle.
One app per workflow, inside one web app
Over one application holding every domain, or a separate build per app: each app answers its own user's first question on its home screen, while sign-in, the API, and the data stay shared.
Row-level security in PostgreSQL
Over tenant checks in each handler: a policy applies to every query, including one that forgets the tenant.
Where It Stands
apps/portfolio/src/content/kuro-suite.ts · line 54 · TypeScript
export const kuroProgress: { name: string; status: WorkStatus; detail: string }[] = [
{
name: 'The sandbox at its own address',
status: 'Live',
detail: 'The whole app, answering from recorded data in your browser. It never calls the API.',
},
{
name: 'One web app for every workflow',
status: 'Built',
detail: 'An app switcher in place of a menu of every domain.',
},
{
name: 'The API and its data rules',
status: 'Built',
detail:
'A Rust API with a crate per domain, a generated contract, a row policy on every tenant table, and an audit row with every write.',
},
{
name: 'A switch that stops the API',
status: 'Built',
detail: 'A budget or alarm sets the API to take no requests. It has stopped the API once, and turning it back on is manual.',
},
{
name: 'Live mode',
status: 'Off',
detail:
'The hosted API is switched off, and its database does not have the current schema yet. Sign-in would be invite-only.',
},
{
name: 'Hosting for the assistant',
status: 'Off',
detail:
'The Go runtime and its hosting code exist, but the runtime has never been hosted. In the demo, Ask replays answers recorded from a scripted model.',
},
];Explore Next
Try a page that hands tasks to a local coding agent and imports the results.