# Kente
SMS-native automation loom for West African schools & small businesses.
## What it is
Kente is a complete visual workflow product that lets non-technical school administrators build and run SMS automations:
1. **Pick a template or describe a flow in plain English.**
2. **Edit the workflow on a live React Flow canvas.**
3. **Generate workflows with Azure OpenAI** — natural language is compiled to an ASL-subset IR.
4. **Run a deterministic Test-Run** against seeded data with zero external calls.
5. **Deploy** the workflow to the local Sub0-compatible runtime.
6. **Export a standalone Sub0 ABI JSON** that can be imported into a fresh Sub0 app.
7. **Send and receive SMS** through a built-in simulator (Africa's Talking compatible webhooks).
8. **Top up an SMS wallet** and track delivery runs.
## Monorepo
```
kente/
├── apps/
│ ├── web/ # Next.js 15 + React 19 + Tailwind CSS v4 + React Flow 12
│ └── api/ # Hono backend — auth, workflows, engine, SMS, wallet, AI, cron
└── packages/
├── engine/ # ASL-subset IR, graph compiler, engine.tick interpreter
├── runtime/ # Sub0-compatible SQLite runtime + executor + auth hash
├── ai/ # Azure OpenAI NL → workflow IR generator
└── sub0/ # Sub0 ABI JSON specifications and model definitions
```
## Technology stack
- **Runtime:** Node.js 22+, pnpm 9+ workspaces
- **Frontend:** Next.js 15 (App Router), React 19, TypeScript 5, Tailwind CSS v4, React Flow 12
- **Backend:** Hono 4, `@hono/node-server`, `jose` JWT, `bcryptjs`, `node-cron`
- **State:** Zustand 5 (web), Better-SQLite3 (runtime)
- **Validation:** Zod 3
- **AI:** Azure OpenAI (`gpt-5-mini` deployment in `rg-asked-and-answered`), discovered via `az` CLI
- **Testing:** Vitest 3, `@vitest/coverage-v8`, Playwright 1.50
## Requirements
- Node.js 22+
- pnpm 9+
- Azure CLI (`az`) authenticated to the subscription containing `asked-and-answered-openai` (only needed for live AI generation)
## Setup
```bash
pnpm …