# Festipod Project This project has two parts: 1. **Festipod App** - Mobile app mockups in `src/screens/` with sketchy hand-drawn UI 2. **Prototyping Tool** - Web app to view mockups, user stories, and BDD specs ## Project Structure ``` src/ screens/ # Mockup screens (HomeScreen, EventDetailScreen, etc.) components/ sketchy/ # Hand-drawn UI components (Button, Card, Avatar, etc.) specs/ # Specs viewer (GherkinHighlighter, FeatureView, etc.) ui/ # Shadcn/Radix components data/ index.ts # User stories definitions features.ts # Auto-generated from .feature files testResults.ts # Cucumber test results features/ # Gherkin .feature files (French) scripts/ # Build scripts for parsing features docs/ # Documentation ``` ## Key Commands ```bash bun run dev # Start dev server with HMR bun run test:cucumber # Run Cucumber tests bun run features:parse # Regenerate features.ts from .feature files bun run steps:extract # Extract step definitions for tooltips ``` ## Conventions - Gherkin specs are in French (Étant donné, Quand, Alors) - UI labels are in French - User stories are prefixed US-1 to US-26 - Screens use the sketchy component library, not Tailwind - Specs pages use Tailwind + Shadcn components with system font (not sketchy font) - GherkinHighlighter uses card-based layout, not code/text style --- Default to using Bun instead of Node.js. - Use `bun ` instead of `node ` or `ts-node ` - Use `bun test` instead of `jest` or `vitest` - Use `bun build ` instead of `webpack` or `esbuild` - Use `bun install` instead of `npm install` or `yarn install` or `pnpm install` - Use `bun run ``` With the following `frontend.tsx`: ```tsx#frontend.tsx import React from "react"; import { createRoot } from "react-dom/client"; // import .css files directly and it works import './index.css'; const root = createRoot(document.body); export default function Frontend() { return

Hello, world!

; } root.render(); ``` Then, run index.ts ```sh bun --hot ./index.ts ``` For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.