- Replace 'Vanilla JavaScript' with 'TypeScript' in frontend requirements - Update flake.nix to use nodejs package instead of tailwindcss - Clarify testing requirements to cover both frontend and backend - Fix punctuation in evaluation checklist
2.4 KiB
2.4 KiB
WYSIWYG Markdown Editor - Specification
Overview
Build a markdown editor with preview: Go backend + React/TypeScript frontend with Tailwind CSS.
Out of scope: authentication, user accounts, collaborative editing, version history.
Backend (Go)
- Standard HTTP server + Cobra for CLI
- CRUD REST API for markdown files
- Store files on disk (flat structure,
.mdfiles only) - Errors return 4xx/5xx + JSON with
errorfield - Comprehensive logging using logrus
CLI Flags
--data-dir: Storage path (default:./data)--port: Server port (default:8080)--host: Bind address (default:127.0.0.1)
Frontend (React + TypeScript + Tailwind)
- Markdown editor with live GFM preview
- File management: list, create, open, save, delete
- Three themes (Dark, Light, System) with switcher
- Responsive (desktop + mobile)
Development Environment
flake.nix (locked to nixos-25.11) provides: go, gopls, golangci-lint, eslint, nodejs, gnumake, lsof
Do not modify flake.
Testing (TDD)
- All tests must pass
- Single command to run tests
- Backend: demonstrate CRUD round-trip + static asset serving
- Frontend: verify core functionality
Milestones
Backend (6 milestones)
B1: CLI & Server Setup
- Cobra CLI with --data-dir, --port, --host flags
- HTTP server with basic routing
B2: CRUD API
- REST endpoints for markdown files (GET, POST, PUT, DELETE)
- JSON error responses (4xx/5xx)
B3: File Storage
- Read/write .md files to disk
- Flat file structure
B4: Logging
- Comprehensive logrus logging for all operations
B5: Static Assets
- Serve frontend build files
B6: Backend Tests
- CRUD round-trip tests
- Static asset serving tests
Frontend (6 milestones)
F1: Project Setup
- React + TypeScript + Tailwind configured
F2: File Management UI
- List, create, open, save, delete markdown files
F3: Editor & Preview
- Markdown editor with live GFM preview
F4: Theme System
- Dark/Light/System themes
- Theme switcher and persistence
F5: Responsive Design
- Works at 320px and 1920px
F6: Frontend Tests
- Core functionality tests (editor, file operations, themes)
Integration (1 milestone)
I1: End-to-end
- Full CRUD workflow test from frontend to backend
Evaluation
- CLI starts with defaults
- CRUD works end-to-end
- Static assets are properly served
- Theme switch & persistence
- Responsive at 320px and 1920px