Myth Map Maker

A playful micro-world builder where you generate a tiny fantasy map made of draggable “tiles” (forest, mountain, ruins, village, river) and attach short lore notes to each location. The app includes a seed-based random map generator, a simple quest prompt creator that stitches together selected locations, and localStorage save/load for multiple maps. Components split cleanly into a tile palette, canvas/grid editor, location inspector (notes/tags), quest generator panel, and a gallery of saved maps.

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 globals

Configure src/index.css with Tailwind directives and basic app background/text defaults.

by system

Create App layout

Implement src/App.tsx with a responsive 3-panel layout (palette/canvas/inspector) plus right-side tools area.

by system

Define core types

Create src/types.ts defining TileType, TileDef, MapCell, WorldMap, LoreNote, and SavedMapMeta.

by system

Add tile definitions

Create src/tiles.ts exporting the canonical tile set (forest, mountain, ruins, village, river) with icons/colors.

by system

Seeded RNG util

Create src/utils/rng.ts implementing a deterministic seeded RNG and helpers (int range, pick).

by system

Grid helpers util

Create src/utils/grid.ts with functions to create empty grids, clone/update a cell, and bounds checks.

by system

Map serializer util

Create src/utils/serialize.ts to JSON stringify/parse maps with versioning and safe fallbacks.

by system

LocalStorage storage util

Create src/utils/storage.ts for save/list/load/delete maps under a single storage namespace key.

by system

Map state hook

Create src/hooks/useMapState.ts managing active map, selected cell, and basic mutations (set tile, set note, set tags).

by system

Seed generator hook

Create src/hooks/useSeededGenerator.ts exposing generateFromSeed(seed, size) that fills a grid deterministically.

by system

Quest stitcher util

Create src/utils/quests.ts to generate a quest prompt from selected locations using lightweight templates.

by system

UI: Button component

Add shadcn/ui Button via the CLI and verify import works in a small example.

by system

UI: Card component

Add shadcn/ui Card via the CLI for consistent panels.

by system

UI: Input component

Add shadcn/ui Input via the CLI for seed/name fields.

by system

UI: Textarea component

Add shadcn/ui Textarea via the CLI for lore notes.

by system

UI: Badge component

Add shadcn/ui Badge via the CLI for tags and tile labels.

by system

UI: Tabs component

Add shadcn/ui Tabs via the CLI for switching tools (Quest/Generator/Gallery).

by system

Tile palette panel

Create src/components/TilePalette.tsx rendering selectable tile buttons from tiles.ts.

by system

Canvas grid view

Create src/components/MapCanvas.tsx rendering the grid with clickable cells and a visual selected state.

by system

Cell drag placement

Implement HTML5 drag-and-drop from TilePalette to MapCanvas to set a cell’s tile type.

by system

Cell paint mode

Add click-to-paint behavior in MapCanvas using the currently selected palette tile.

by system

Location inspector panel

Create src/components/LocationInspector.tsx showing selected cell tile, coordinates, note editor, and tags.

by system

Tag editor control

Create src/components/TagEditor.tsx for add/remove tags on the selected location.

by system

Seed generator panel

Create src/components/SeedGeneratorPanel.tsx with seed input, size selector, and Generate button.

by system

Quest generator panel

Create src/components/QuestGeneratorPanel.tsx to pick locations and display a generated quest prompt.

by system

Multi-select locations

Add selection logic to MapCanvas to toggle cells into a quest selection set (without affecting main selection).

by system

Saved maps gallery

Create src/components/SavedMapsGallery.tsx listing saved maps with load/delete actions.

by system

Save/load controls

Create src/components/MapSaveBar.tsx with map name field and Save/New buttons wired to storage util.

by system

Wire app composition

Update src/App.tsx to compose TilePalette, MapCanvas, LocationInspector, panels (Tabs), and MapSaveBar using hooks.

by system

In Progress0
In Review0
Done0