Evan Reichard d2d8370c95 feat: add CORS middleware to backend server
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
2026-02-05 18:21:47 -05:00
2026-02-05 17:27:31 -05:00
2026-02-05 17:27:31 -05:00

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 files
  • POST /api/files - Create a new file
  • PUT /api/files/:filename - Update a file
  • DELETE /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
No description provided
Readme 33 MiB
Languages
Shell 64.1%
Nix 35.9%