Skip to content

feat: full-stack indie games catalog with AI chat#2

Open
ingjuanbejarano wants to merge 1 commit into
Red-Valley:mainfrom
ingjuanbejarano:submission/juan-bejarano
Open

feat: full-stack indie games catalog with AI chat#2
ingjuanbejarano wants to merge 1 commit into
Red-Valley:mainfrom
ingjuanbejarano:submission/juan-bejarano

Conversation

@ingjuanbejarano
Copy link
Copy Markdown

  • Games CRUD: SQLite persistence via better-sqlite3, repository pattern (GamesRepository interface + SqliteGamesRepository), Zod validation, seed script with 10 sample games.

  • REST API: five route handlers (GET/POST /api/games, GET/PUT/DELETE /api/games/:id) with structured error responses and request body validation.

  • AI Chat: streaming chat via Vercel AI SDK + Anthropic claude-haiku-4-5, tool calling (list_games, find_game_by_title, catalog_summary, respond), structured output as a discriminated union (game | games | comparison | count | stats | text) rendered as rich cards in the UI.

  • UI: Next.js 16 App Router, mobile-first Tailwind v4, native
    modals (bottom-sheet on mobile / centered on desktop), right-anchored chat drawer with backdrop, answer cards per output kind.

  • Docs: technical feature docs in docs/features/, specs in docs/specs/, CLAUDE.md with engineering rules and conventions.

Submission

What I built: an application with dashboard using a CRUD for indie games, and a chat for information abaout the catalog using tool calling

How to run (complete instructions in README.md

npm install
npm run seed
npm run dev

Trade-offs: explained in README.md

Checklist

  • [ x] Games CRUD
  • [ x] API
  • [x ] Chat with streaming
  • [x ] Assistant uses tool calling
  • [x ] AI_WORKFLOW.md included

- Games CRUD: SQLite persistence via better-sqlite3, repository pattern
  (GamesRepository interface + SqliteGamesRepository), Zod validation,
  seed script with 10 sample games.

- REST API: five route handlers (GET/POST /api/games,
  GET/PUT/DELETE /api/games/:id) with structured error responses
  and request body validation.

- AI Chat: streaming chat via Vercel AI SDK + Anthropic claude-haiku-4-5,
  tool calling (list_games, find_game_by_title, catalog_summary, respond),
  structured output as a discriminated union (game | games | comparison |
  count | stats | text) rendered as rich cards in the UI.

- UI: Next.js 16 App Router, mobile-first Tailwind v4, native <dialog>
  modals (bottom-sheet on mobile / centered on desktop), right-anchored
  chat drawer with backdrop, answer cards per output kind.

- Docs: technical feature docs in docs/features/, specs in docs/specs/,
  CLAUDE.md with engineering rules and conventions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant