Chapter 07 · Vibe Coding AI Agents Track Full-stack Project

From Jira story to a copy-ready test suite, vibe-coded end to end.

A React + FastAPI app built with AI pair programming: paste a Jira issue id, pick one of five YAML test templates, and Claude Sonnet returns 5+ structured test cases you can edit inline and export as TSV, Markdown, or CSV.

01 What students build

The chapter's point is the process: students vibe-code a real full-stack tool with an AI assistant. The result is a React 19 + TypeScript + Vite frontend talking to a FastAPI backend, which authenticates to Jira Cloud (REST v3), fetches a story by id, and prompts Claude Sonnet with a YAML template (default, regression, smoke, edge, or security) to produce a strict-JSON list of test cases with steps, test data, and expected results.

Jira In, JSON Out

Connection panel validates credentials, fetches any issue by id, and parses the user story. The LLM must answer in a strict test-case schema (TC ids, type, priority, steps).

5 YAML Templates

Coverage is data-driven: default, regression, smoke, edge, and security templates set categories, depth, tone, and rules like "5 to 7 cases, critical paths only".

Edit + Export

Every generated field is editable inline. One click copies TSV for Jira, Xray, or TestRail paste, or downloads .md / .csv. Latency is tracked per generation.

02 Architecture

React UIVite · Tailwind v4
──▶
FastAPI/api proxy
──▶
Jira REST v3fetch issue
──▶
Claude Sonnet+ YAML template
──▶
JSON schema≥5 test cases
──▶
ExportTSV · MD · CSV
stateless by design: tokens live in session only, nothing is written back to jira

03 Live demo (simulated with sample data)

This is a UI walkthrough with pre-baked sample data so you can feel the product without keys. In the course you run the real stack locally: FastAPI on :8000, React on :5173, your own Jira Cloud token and Anthropic API key.

ai-test-generator · localhost:5173 demo · sample data

04 Inputs & outputs

What goes in

  • Jira Cloud URL, email, and API token (session-only, never persisted)
  • An issue id whose user story to cover (VWO-48, VWO-105)
  • One of five YAML templates steering coverage and depth
  • Anthropic API key on the backend (.env)

What comes out

  • 5+ test cases in a strict JSON schema (id, title, type, priority)
  • Pre-conditions, numbered steps, test data, expected result per case
  • Inline-editable table linked back to the Jira id
  • One-click TSV copy plus .md and .csv downloads
  • Generation latency shown per request

05 How it's built

Spec the tool in plain English and vibe-code the scaffold: Vite React frontend, FastAPI backend, /api proxy between them.
Wire Jira: /jira/test-connection validates credentials, /jira/fetch-issue pulls and parses the story via atlassian-python-api.
Author five YAML templates (default, regression, smoke, edge, security) defining categories, depth, tone, and generation rules.
Build /testcases/generate: story + template go to Claude Sonnet, which must return schema-valid JSON with at least 5 cases.
Render the editable output table with type and priority controls, plus the parsed-issue context card.
Add exports (TSV clipboard, .md, .csv), error handling for auth and LLM timeouts, and a Dockerfile for the backend.

06 Tech stack

React 19 + TypeScriptVite 8Tailwind CSS v4Python 3.11 · FastAPIClaude Sonnet (Anthropic API)atlassian-python-apiYAML templatesDocker