How kie0611/huddle works
Huddle is a temporary shared canvas for group brainstorming: people create or join a room, then work with drawings and sticky notes; room data is retained and rooms expire after inactivity. The sampled code shows room and note/stroke API handlers, database query modules, and Liveblocks event broadcasting. Chat is described as ephemeral in the room UI and represented in the event types, but no chat dispatch or persistence path is shown. Some room-page behavior and query implementations were not sampled, so uncertain links are omitted.
Main entry points: rooms.ts Room queries · page.tsx Room canvas UI · notes/route.ts Notes API · strokes/route.ts Strokes API
Components 17
Room entry
- Home and entry
app/page.tsx
Shared canvas
- Room canvas UI
app/room/[code]/page.tsx - Event broadcaster
lib/liveblocks.ts
Room APIs
- Room lookup API
app/api/rooms/[code]/route.ts - Room creation API
app/api/rooms/route.ts - Notes API
app/api/rooms/[code]/notes/route.ts - Note edit API
app/api/rooms/[code]/notes/[id]/route.ts - Strokes API
app/api/rooms/[code]/strokes/route.ts - Room cleanup
app/api/cron/cleanup-rooms/route.ts
Persistence
- Room queries
db/queries/rooms.ts - Note queries
db/queries/notes.ts - Stroke queries
db/queries/strokes.ts - Database client
db/index.ts - Data schema
db/schema.ts
Other components
- Participant
- Liveblocks
- Cron scheduler
Connections 30
- Participant → Home and entry: opens
- Home and entry → Room creation API: creates room
- Home and entry → Room lookup API: checks code
- Home and entry → Room canvas UI: opens room
- Participant → Room canvas UI: collaborates
- Room canvas UI → Room lookup API: loads room
- Room lookup API → Room queries: looks up
- Room lookup API → Room queries: touches activity
- Room creation API → Room queries: creates room
- Room canvas UI → Notes API: loads notes
- Room canvas UI → Note edit API: edits notes
- Notes API → Room queries: resolves room
- Notes API → Note queries: reads or creates
- Notes API → Room queries: touches activity
- Notes API → Event broadcaster: broadcasts note
- Note edit API → Room queries: resolves room
- Note edit API → Note queries: updates or deletes
- Note edit API → Event broadcaster: broadcasts change
- Room canvas UI → Strokes API: stroke operations
- Strokes API → Room queries: resolves room
- Strokes API → Room queries: touches activity
- Strokes API → Stroke queries: reads or creates
- Strokes API → Event broadcaster: broadcasts stroke
- Event broadcaster → Liveblocks: dispatches event
- Cron scheduler → Room cleanup: triggers
- Room cleanup → Database client: deletes expired rooms
- Room queries → Database client: queries
- Note queries → Database client: queries
- Stroke queries → Database client: queries
- Database client → Data schema: uses