Hyacinth represents rebirth through reflection — the internal architecture behind
Verse.
A daily poetic ritual engine. Write. Reflect. Return.
Verse is a private, daily web application built for disciplined poetic practice.
It is not:
- A social writing platform
- A publishing tool
- A productivity dashboard
It is:
A personal cognitive ritual system for daily poetry.
Minimal. Focused. Intentional.
Verse is designed around three principles:
- Writing comes first.
- Reflection follows.
- Analysis is optional.
No clutter. No noise. No algorithmic interference.
- Daily poem editor
- Mood tagging
- Streak tracking
- Calendar archive
Caelum(random prompt engine)- Private-first architecture
Caelum is the inspiration engine within Verse.
It provides:
- Random poetic prompts
- Constraint-based writing seeds
- Emotional triggers
Future versions will integrate AI-assisted generation.
Verse intentionally minimizes JavaScript-heavy frameworks.
Primary stack:
- Go (core backend)
- Templ (server-side rendering)
- HTMX (dynamic interactions)
- TailwindCSS (styling)
- PostgreSQL (data layer)
- Dart + Jaspr (interactive UI islands)
- Minimal Next.js (only where necessary)
- Go 1.22+
- Chi router
- pgx (PostgreSQL driver)
- sqlc or manual queries
- Goose or Atlas for migrations
Why Go:
- Performance
- Explicitness
- Long-term architectural alignment
Templ generates type-safe HTML components.
Used for:
- Editor page
- Calendar page
- Layout system
- Reusable UI components
HTMX handles:
- Save poem without full page reload
- Load prompt dynamically
- Update streak counter
- Fetch calendar entries
Minimal JS. Declarative interactivity.
Used via:
- Standalone CLI
- Integrated into Go build pipeline
Provides:
- Dark theme
- Typography control
- Minimal aesthetic
Used only where reactive UI is valuable.
Planned use cases:
- Mood selector animation
- Future analytics dashboard
- AI analysis visualizations
Jaspr compiles to lightweight web components embedded in Templ layouts.
verse/
│
├── cmd/
│ └── server/
│ └── main.go
│
├── internal/
│ ├── handlers/
│ ├── database/
│ ├── models/
│ ├── services/
│ │ ├── streak.go
│ │ ├── prompts.go
│ │ └── mood.go
│ └── middleware/
│
├── templ/
│ ├── layout.templ
│ ├── editor.templ
│ ├── calendar.templ
│ ├── components/
│ │ ├── streak.templ
│ │ ├── mood_selector.templ
│ │ └── caelum_button.templ
│
├── static/
│ ├── css/
│ ├── js/
│ └── wasm/
│
├── jaspr/
│ └── mood_island/
│
├── migrations/
│
├── go.mod
└── README.md
- id (uuid)
- created_at
- id (uuid)
- user_id
- content (text)
- mood (enum)
- prompt_used (nullable text)
- created_at
Computed dynamically.
Algorithm:
- Fetch poem dates
- Sort descending
- Count consecutive days
- Reset on gap > 1 day
No cached streak field.
Default:
- Dark mode
- Serif typography for poems
- Minimal UI chrome
- Subtle hyacinth-purple accent
Focus:
Writing space over interface.
# Install dependencies
go mod tidy
# Run migrations
go run cmd/migrate/main.go
# Start server
go run cmd/server/main.goTailwind (watch mode):
bunx tailwindcss -i ./static/css/input.css -o ./static/css/output.css --watchHyacinth v1.0.0+:
- AI sentiment analysis
- Theme detection
- Writing evolution tracking
Hyacinth v2.0.0+:
- Local-first mode
- Offline support
- Desktop wrapper (Tauri)
Long-term:
Verse integrates into a broader cognition ecosystem.
Verse exists to:
- Encourage disciplined creation
- Externalize emotion
- Track personal growth
- Preserve authenticity
It is not optimized for virality.
It is optimized for depth.
Private project.