bb6019ae8d6e416be3a32ca9d611f6e8f706c23d
- Fix API to return JSON response for file content instead of plain text - Fix file display showing [object Object] by properly extracting content field - Fix infinite save loop by tracking last saved content - Remove auto-save that was causing cursor jumping on every keystroke - Add manual save button with disabled state when content unchanged - Add validation in FileList to prevent undefined filenames - Improve error handling for file operations
Markdown Editor
A WYSIWYG Markdown Editor with live preview, built with Go backend and React/TypeScript frontend.
Features
- Markdown Editor with live GitHub Flavored Markdown preview
- File Management: Create, open, save, and delete markdown files
- Theme System: Dark, Light, and System themes with persistence
- Responsive Design: Works on desktop and mobile
- REST API: Full CRUD operations for markdown files
Project Structure
.
├── backend/
│ ├── cmd/server/
│ │ └── main.go
│ ├── internal/
│ │ ├── api/
│ │ │ ├── server.go
│ │ │ └── server_test.go
│ │ └── storage/
│ │ ├── storage.go
│ │ └── storage_test.go
│ ├── pkg/
│ │ └── logger/
│ │ └── logger.go
│ └── go.mod
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── hooks/
│ │ ├── lib/
│ │ ├── types/
│ │ ├── App.tsx
│ │ ├── App.test.tsx
│ │ ├── index.css
│ │ └── index.tsx
│ ├── public/
│ ├── package.json
│ ├── tsconfig.json
│ └── tailwind.config.js
├── flake.nix
├── flake.lock
└── SPEC.md
Development
Using Nix
The project uses Nix for development environment. Ensure you have Nix installed.
# Start development shell
nix-shell
# Run tests
cd backend && go test ./...
cd ../frontend && npm test
Backend
cd backend
# Run server with defaults
go run cmd/server/main.go
# Run with custom settings
go run cmd/server/main.go --data-dir ./data --port 8080 --host 127.0.0.1
# Run tests
go test ./...
Frontend
cd frontend
# Install dependencies (in nix-shell)
npm install
# Start development server
npm start
# Build for production
npm run build
# Run tests
npm test
API Endpoints
GET /api/files- List all markdown filesPOST /api/files- Create a new filePUT /api/files/:filename- Update a fileDELETE /api/files/:filename- Delete a file/- Serve frontend (SPA fallback)/static/*- Serve static assets
Testing
Run all tests:
# Backend
cd backend && go test -v ./...
# Frontend
cd frontend && npm test
Evaluation Checklist
- CLI starts with defaults
- CRUD works end-to-end
- Static assets are properly served
- Theme switch & persistence
- Responsive at 320px and 1920px
Description
Languages
Shell
64.1%
Nix
35.9%