Skip to content

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 demo
  1. 1

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

    Clear the block

    Set Translate form to Spanish to In progress. The row stays put, says it saved, and offers Revert.

  3. 3

    Make the decision

    Give Translation vendor contract delayed an owner and set it to Mitigating.

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

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

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

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

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

One request, from the browser to the rows its tenant may see.

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=editor or ?as=viewer to 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.',
  },
];
The record this page shows. Built means present in the private source; the only public part is the sandbox.

Explore Next

Try a page that hands tasks to a local coding agent and imports the results.