Initial commit: WYSIWYG Markdown Editor - Go backend + React/TypeScript frontend with Tailwind CSS

Backend:
- Cobra CLI with --data-dir, --port, --host flags
- Gin HTTP server with REST API for markdown CRUD operations
- File storage on disk (.md files only)
- Comprehensive logrus logging
- Backend tests with CRUD round-trip verification

Frontend:
- React 18 + TypeScript + Tailwind CSS
- Markdown editor with live GFM preview (react-markdown + remark-gfm)
- File management UI (list, create, open, save, delete)
- Theme switcher with Dark/Light/System modes
- Responsive design
- Frontend tests with vitest

Testing:
- All backend tests pass (go test ./...)
- All frontend tests pass (npm test)
This commit is contained in:
2026-02-05 15:44:06 -05:00
parent c2a225fd29
commit 482d8a448a
37 changed files with 10585 additions and 0 deletions

32
internal/logger/logger.go Normal file
View File

@@ -0,0 +1,32 @@
package logger
import (
"github.com/sirupsen/logrus"
"os"
)
var (
log *logrus.Logger
)
func init() {
log = logrus.New()
log.SetLevel(logrus.InfoLevel)
log.SetFormatter(&logrus.JSONFormatter{})
// Output to stderr by default
log.SetOutput(os.Stderr)
}
func GetLogger() *logrus.Logger {
return log
}
func SetLevel(level string) {
lvl, err := logrus.ParseLevel(level)
if err != nil {
log.Warnf("Invalid log level %s, using INFO", level)
return
}
log.SetLevel(lvl)
}