Myth Mapmaker

Create a tiny interactive world map where each “location” is a draggable pin with a short myth, character, or quest snippet you write. The app includes a prompt-based generator (client-side templates + random tables) to help you quickly spin up lore, plus a timeline/quest list view to connect pins into simple story arcs. Everything is saved to localStorage, with clear components like MapCanvas, PinEditor, PromptGenerator, and QuestTimeline so multiple agents can build in parallel.

To Do30
Scaffold project

Run: npm create vite@latest . -- --template react-ts && npm i && npm i -D tailwindcss postcss autoprefixer && npx tailwindcss init -p && npm i class-variance-authority clsx tailwind-merge lucide-react && npx shadcn@latest init

by system

Add Tailwind styles

Configure Tailwind content paths and add Tailwind directives to src/index.css.

by system

Add shadcn Button

Install and register the shadcn/ui Button component.

by system

Add shadcn Dialog

Install and register the shadcn/ui Dialog component.

by system

Add shadcn Input

Install and register the shadcn/ui Input component.

by system

Add shadcn Textarea

Install and register the shadcn/ui Textarea component.

by system

Add shadcn Select

Install and register the shadcn/ui Select component.

by system

Add shadcn Tabs

Install and register the shadcn/ui Tabs component.

by system

Add shadcn Separator

Install and register the shadcn/ui Separator component.

by system

Define app types

Create src/types.ts with Pin, Quest, TimelineEvent, and AppState interfaces.

by system

LocalStorage store

Create src/state/storage.ts with loadState/saveState helpers and versioned migrations stub.

by system

App state hook

Create src/state/useAppState.ts to manage pins/quests and persist changes to localStorage.

by system

Seed demo content

Add a small default state in src/state/defaultState.ts used when no saved data exists.

by system

Layout shell

Create src/components/AppShell.tsx with header, main split layout, and responsive behavior.

by system

Top nav actions

Create src/components/TopBar.tsx with New Pin, Export, Import, and Reset buttons.

by system

Export/Import JSON

Create src/components/ImportExportDialog.tsx to copy/paste state JSON and validate it.

by system

Map canvas base

Create src/components/MapCanvas.tsx rendering a pannable/zoomable map area with a simple grid background.

by system

Pin rendering

Create src/components/MapPin.tsx to draw a pin at x/y with selected styling.

by system

Pin drag behavior

Add pointer-driven dragging logic to MapPin to update pin coordinates via callbacks.

by system

Pin selection logic

Wire MapCanvas to track selectedPinId and handle click-to-select and click-empty-to-deselect.

by system

Add pin on doubleclick

Add MapCanvas double-click handler to create a new pin at cursor position.

by system

Pin editor panel

Create src/components/PinEditor.tsx to edit title, myth text, tags, and color for the selected pin.

by system

Pin delete action

Add a delete button to PinEditor that removes the selected pin from state.

by system

Prompt generator tables

Create src/lore/tables.ts exporting random-table data (themes, beings, artifacts, twists, locations).

by system

Lore generator util

Create src/lore/generateLore.ts to build a snippet from templates + random tables + optional prompt.

by system

Prompt generator UI

Create src/components/PromptGenerator.tsx with prompt input, generate button, and preview output.

by system

Apply lore to pin

Add an action in PromptGenerator to write generated text into the selected pin (or create a new pin).

by system

Quest timeline view

Create src/components/QuestTimeline.tsx to list quests/events and link them to pins.

by system

Quest CRUD

Add create/edit/delete quest functionality inside QuestTimeline using dialogs for form fields.

by system

Pin-quest linking

Add UI in Quest editor to attach ordered pin references to form a simple story arc.

by system

In Progress0
In Review0
Done0