HACKATHON GUIDE · v2026

Jom Quick
& Kiro TechJam

|

Thu, 27 Aug 2026 DoubleTree Hilton, Putrajaya 2:00–5:30 PM
Kiro — AI IDE Amazon Quick — AI Assistant
jam@putrajaya: ~/techjam
# 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.

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 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 buildFull web applications
Best forDevelopers & the code-curious
OutputA running web app you can deploy
SuperpowerSteering files & spec-driven builds
VibeShip real software, fast

Amazon Quick

the AI assistant

Conversation-driven agents. Give it data and instructions, get a helpful assistant.

You buildAI agents & automations
Best forAnyone — no code required
OutputA conversational agent + flows
SuperpowerSpaces, data uploads & flows
VibeAutomate the boring stuff

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.

  1. Download & install KiroVisit kiro.dev, download the build for your operating system, and launch it.
  2. Sign inAuthenticate with your account to unlock the AI agent.
  3. Redeem free Kiro credits Claim your voucher after signing in to receive 500 free credits for the TechJam. Redeem voucher
  4. Open a new project folderCreate an empty folder and open it in Kiro.
  5. Add a steering file Copy 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!
  6. 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

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.

KIRO TRACK

Build the app

01 Scaffold the project

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.

routes.csv download
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".

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.

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.

📸 Screenshot • 📝 Description • 🏷️ Track (Kiro/Quick/Combo)

Submit to AI Judge

Tier 2: Finals (Top 3 Teams)

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.

25%

Tool Usage

Kiro: Specs, Hooks, Steering. Quick: Spaces, Flows, Agents, MCP.

25%

Impact

Clear benefits. Scalable. Would your KSU want this?

⭐ BONUS: Kiro + Quick Integration (+10%)

Use BOTH tools together (e.g. Kiro builds MCP → Quick connects to it) = +10% | Partial = +5%

Troubleshooting

Something not working? Scan the table before you flag a mentor.

jam@putrajaya: ~/help --debug
ProblemFix
Kiro won't launchConfirm you're signed in and re-open the project folder. Restart Kiro if the agent panel is blank.
node: command not foundNode.js isn't installed or isn't on PATH. Install the LTS build from nodejs.org and reopen the terminal.
Agent gives wrong answersCheck your uploaded data and tighten the instructions. Be specific about which file to use.
Data won't upload to QuickConfirm the file format (CSV/TXT) and that you're inside a Space with upload access.
App renders blankOpen the browser console. Usually a missing data file — check routes.json loads correctly.
Out of timeCut scope. Ship one feature that works and demo it well. A finished small thing beats a broken big one.