d2d8370c95c3a9e99eb68258ead849e40a105e3b
Add cross-origin resource sharing support to the backend API to fix frontend console errors when accessing resources from different origins. The middleware handles preflight requests and includes necessary CORS headers for API endpoints. Fixes: Cross-Origin Request Blocked error
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%