# boot the jam$ techjam init --theme"gov-digital"✔ environment ready$ select track› kiro # build web apps› quick # build AI agents$ ship --in"3 seconds" 🦫✔ good luck, builder.
# the-day.sh
Agenda
A focused 3.5-hour build: form your team, learn the tools, submit to the AI Judge, iterate on feedback, and pitch for the prizes.
Hackathon schedule · 2:00–5:30 PM
Time
Session
What happens
Duration
2:00–2:15 PM
Onboarding & Teams
Form your team, get seated together, and get ready to build.
15 min
2:15–2:30 PM
Setup & Tutorial
Set up Kiro or Quick Desktop, then warm up with the guided tutorial.
15 min
2:30–3:30 PM
TechJam Sprint
Start hacking and submit your first solution to the AI Judge within one hour.
60 min
3:30–4:35 PM
Build & Improve
Continue hacking, use the AI Judge feedback, and improve and resubmit your solution.
65 min
4:35–4:50 PM
Top 3 Finalists
We announce the top three teams and give finalists time to prepare their pitches.
15 min
4:50–5:30 PM
Finals & Prize Giving
Top-three presentations and judging, followed by the winner announcement and prize giving.
40 min
# choose-your-fighter
Choose your track
Two paths, same theme. Pick the one that matches how you like to build — or how you think fastest.
Kiro
the AI IDE
Prompt-driven development. Describe the app, watch it get scaffolded and built.
You build
Full web applications
Best for
Developers & the code-curious
Output
A running web app you can deploy
Superpower
Steering files & spec-driven builds
Vibe
Ship real software, fast
Amazon Quick
the AI assistant
Conversation-driven agents. Give it data and instructions, get a helpful assistant.
You build
AI agents & automations
Best for
Anyone — no code required
Output
A conversational agent + flows
Superpower
Spaces, data uploads & flows
Vibe
Automate the boring stuff
# part-0/setup
Setup
Choose your track, then follow the setup steps. Kiro includes its own verification checklist.
Set up Kiro
Install Kiro, claim your credits, scaffold the project, then verify everything works.
Download & install KiroVisit kiro.dev, download the build for your operating system, and launch it.
Sign inAuthenticate with your account to unlock the AI agent.
Redeem free Kiro creditsClaim your voucher after signing in to receive 500 free credits for the TechJam. Redeem voucher
Open a new project folderCreate an empty folder and open it in Kiro.
Add a steering fileCopy the setup prompt below and paste it into Kiro. It creates .kiro/steering/tech-stack.md and scaffolds the full React + Express + SQLite project.
setup-prompt.md
Hi Kiro! I need you to help me set up my development environment from scratch. Please follow these instructions step by step:
## 1. Save the Steering File
First, create a steering file in my workspace so you always know how to work on this project. Create the folder `.kiro/steering/` if it doesn't exist, then save the following content into `.kiro/steering/tech-stack.md`:
```
---
inclusion: auto
---
# Tech Stack and Project Guidelines
## Project Structure
This project uses a flat structure with frontend and backend folders at the root of the workspace:
frontend/ # React + Tailwind CSS (built with Vite)
backend/ # Node.js + Express + SQLite
db/ # SQLite database file and migrations
package.json # Root-level scripts to run everything
```
## Tech Stack
| Layer | Technology | Notes |
|-------|-----------|-------|
| Frontend framework | React | Component-based UI |
| Frontend styling | Tailwind CSS | Utility-first, no custom CSS files unless necessary |
| Frontend build tool | Vite | Fast builds, hot module replacement |
| Backend runtime | Node.js | JavaScript/TypeScript |
| Backend framework | Express | Lightweight HTTP server |
| Database | SQLite (via better-sqlite3) | File-based, zero-config, no Docker needed |
| Backend auto-reload | nodemon | Restarts server on file changes |
## Development Guidelines
When writing code for this project, always follow these rules:
- Use `fetch` or a lightweight HTTP client for API calls (no heavy libraries like Axios)
- Prefer REST APIs over GraphQL for simplicity
- Keep API responses flat and predictable
- Use Tailwind utility classes directly in JSX (avoid separate CSS files unless necessary)
- SQLite migrations should be plain SQL files in `db/migrations/`, applied in order
- Keep dependencies minimal and avoid heavy abstractions
- No Docker or containerization is needed for local development
- No external services are required; everything runs locally
- Prioritize speed of iteration over production-readiness
- No global npm packages are required; all tools are project dev dependencies
- Frontend lives in `frontend/` at the workspace root
- Backend lives in `backend/` at the workspace root
- Database files live in `db/` at the workspace root
## Important Notes
- **No Docker required** - SQLite is file-based, no database server needed
- **No external services** - Everything runs on the user's machine
- **Single command startup** - `npm run dev` at the root starts the full stack
- **Hot reload everywhere** - Frontend uses Vite HMR, backend uses nodemon
## 2. Install Prerequisites
Check and install the following tools on my machine. Detect my operating system and adapt commands accordingly.
**Node.js (v18 or higher, LTS recommended)**
- Check: run `node --version`
- If missing or below v18, install it:
- macOS/Linux: Install nvm first, then use it to install Node.js:
```
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc # or ~/.zshrc on macOS
nvm install --lts
```
- Windows: Download from https://nodejs.org/ (LTS version), or use `winget install OpenJS.NodeJS.LTS`
**npm (v9 or higher)**
- npm comes with Node.js. Verify with `npm --version`
- If below v9, run: `npm install -g npm@latest`
**Git (v2.30 or higher)**
- Check: run `git --version`
- If missing or outdated:
- macOS: `brew install git` or `xcode-select --install`
- Linux (Ubuntu/Debian): `sudo apt update && sudo apt install git`
- Windows: `winget install Git.Git` or download from https://git-scm.com/downloads
Verify everything:
```
node --version # Must show v18.x or higher
npm --version # Must show v9.x or higher
git --version # Must show v2.30 or higher
```
## 3. Create the Project Structure
Create the project directly in the current workspace directory (do NOT create a nested project/ folder). The structure should be:
```
./frontend/ # React + Tailwind CSS (built with Vite)
./backend/ # Node.js + Express + SQLite
./db/ # SQLite database file and migrations
./package.json # Root-level scripts
```
Initialize the root project in the current directory:
```
npm init -y
```
## 4. Set Up the Frontend
The frontend uses React with Tailwind CSS, built with Vite.
```
npm create vite@latest frontend -- --template react
cd frontend
npm install
npm install -D tailwindcss @tailwindcss/vite
```
Configure Tailwind CSS with Vite by adding the Tailwind plugin to `vite.config.js` and adding `@import "tailwindcss"` to the main CSS file.
Verify it works by running `npm run dev`, then stop the dev server and move on.
## 5. Set Up the Backend
```
cd ..
mkdir backend && cd backend
npm init -y
npm install express better-sqlite3
npm install -D nodemon
```
Create a basic `index.js` with:
- Express server on port 3001
- Health-check endpoint at `GET /api/health` returning `{ "status": "ok" }`
- SQLite database initialization (creates a file in `../db/` folder)
Add a dev script to `package.json`:
```
"scripts": {
"dev": "nodemon index.js"
}
```
Verify it works, then stop and move on.
## 6. Set Up the Database Folder
```
cd ..
mkdir -p db/migrations
```
SQLite is file-based, so no database server is needed. The database file will be created automatically at `db/app.db` when the backend starts.
## 7. Configure Root-Level Scripts
In the root `package.json`, add these scripts:
```
"scripts": {
"dev": "concurrently \"npm run dev --prefix frontend\" \"npm run dev --prefix backend\"",
"dev:frontend": "npm run dev --prefix frontend",
"dev:backend": "npm run dev --prefix backend",
"install:all": "cd frontend && npm install && cd ../backend && npm install"
}
```
Install concurrently:
```
npm install -D concurrently
```
## 8. Final Verification
Run `npm run dev` from the root and confirm:
- Frontend is accessible (usually http://localhost:5173)
- Backend health check works (http://localhost:3001/api/health)
- No errors in the terminal
Tell me when everything is ready!
Verify your Kiro setup
Run through this checklist before the tutorial.
Kiro launches and you're signed in
A project folder is open in Kiro
The steering file exists at .kiro/steering/tech-stack.md
node --version prints v18 or higher
You can run a prompt and see the agent respond
terminal
$ node --version
# → v18.x.x ✓ ready
Set up Quick Desktop
Install the desktop app, activate Quick Free, then confirm access with Quick Default Agent.
Download Quick DesktopOpen the official download page, choose the installer for your operating system, install it, and launch Quick Desktop. Download Quick Desktop
Sign up for Quick FreeOnce Quick Desktop is installed and open, follow the sign-up flow to create your free account. You will receive the Quick Free plan.
Confirm access with Quick Default AgentOpen Quick Default Agent and send a chat message. If the agent responds, your Quick Desktop setup is ready.
# part-1/tutorial
Tutorial — Capybara City 🦫🏙️
A tiny end-to-end build to warm up. Same story, two tracks — follow whichever one you chose.
🦫
The situation in Capybara City
Capybara City's public transport is a mess. Buses vanish, schedules lie, and the citizens (all very chill capybaras) are getting restless. The mayor needs a digital tool that tells residents when the next bus actually arrives — fast, clear, and honest. That's your warm-up mission.
📦 Sample data for the tutorial
Download these files — you'll use them in the steps below.
Describe the app in plain English and let Kiro lay down the structure.
prompt Kiro
Build a single-page web app called
"Capybara City Transit". Show a list of bus
routes with the next arrival time for each.
Clean dark UI, mobile friendly.
02 Add the data
Give it sample routes so there's something real to render.
prompt Kiro
Create routes.json with 5 bus routes.
Each has: route name, next arrival (mins),
and status (on-time / delayed). Load it
into the app on page load.
03 Build a feature
Add something citizens actually want — a "next bus" highlight.
prompt Kiro
Add a big "Next bus" card at the top that
shows the soonest arrival across all routes.
Colour it green if on-time, amber if delayed.
04 Run it
Preview locally and check it on a phone-sized window.
terminal
$ npm run dev
# open the local URL → 🦫 transit is live
QUICK TRACK
Build the agent
01 Create a Space
Make a dedicated Space for the Capybara City transit assistant.
02 Upload the data
Drop in a simple routes file so the agent has real facts to answer from.
route,next_arrival_min,status
Lakeside Loop,4,on-time
Riverbank Line,12,delayed
Old Town Express,7,on-time
Hillside Hopper,19,delayed
Central Circular,2,on-time
03 Create the agent
Give the agent its personality and its job.
agent instructions
You are the Capybara City Transit helper.
Answer when the next bus arrives using
routes.csv. Be friendly and concise. If a
route is delayed, say so clearly.
04 Test it
Ask it a real citizen question and check the answer.
try asking
"When's the next Central Circular bus,
and is anything delayed right now?"
05 Connect your email
In your Space, open Connectors, choose Microsoft Outlook or Gmail, then sign in and authorize Quick to send email.
06 Bonus — create a flow BONUS
Use your email connector to automate a daily "delays digest" for your inbox.
flow prompt
Every morning, read routes.csv and email me a
short summary of all delayed routes with their
expected wait times. Use my connected Outlook
or Gmail account and the subject "Capybara City
Delays Digest".
# part-2/techjam
The TechJam
Now the real thing. Pick a problem worth solving and build for the next two hours.
// THIS YEAR'S THEME
Use AI to Drive Government Digital Transformation
Citizen Services
Make it effortless for people to get help, apply, or find answers from public services.
Internal Ops
Cut the paperwork. Automate the repetitive tasks that slow public servants down.
Data & Decisions
Turn scattered public data into clear insight that helps leaders decide faster.
Workforce
Upskill, onboard, and support government staff with AI copilots and training tools.
Compliance & Policy
Make dense rules understandable and help teams stay compliant without the headache.
Public Engagement
Give citizens a real voice — feedback, consultations, and transparency that people use.
ASK YOURSELF THESE THREE THINGS
1.
Whose day gets easier because this exists — a citizen, or the person behind the counter?
2.
What's the one slow, painful step you're replacing with three seconds of AI?
3.
Could a real government team actually use this next Monday?
Kiro track tips
Keep your steering file sharp — it shapes every prompt.
Build one killer feature well, not five half-features.
Use fake-but-realistic data so the demo feels alive.
Get something running early, then polish the UI.
Quick track tips
Great data in = great agent out. Curate what you upload.
Write clear, specific agent instructions — set boundaries.
Add a flow to show automation, not just chat.
Test with the messy questions a real citizen would ask.
# part-3/judging
Two-Tier Judging
Tier 1: Submit to the AI Judge by 3:30 PM, then improve and resubmit from live feedback. Top 3 advance to the 4:50–5:30 PM finals and prize giving.
Tier 1: AI Judging (During Jam)
Submit your screenshot and project description by 3:30 PM. See your score on the live dashboard, then improve and resubmit until finalist selection.
The final 40 minutes run from 4:50–5:30 PM: each finalist gets a 7 min presentation + 3 min judges’ Q&A, followed by winner announcement and prize giving.
Scoring Rubric (1–5 per category)
25%
Innovation
Novel approach to solving a real government problem using AI.
25%
UX & Design
Polished, intuitive, visually appealing, well-aligned with use case.