bring back yahoo pipes!
Pipes - Project Instructions#
This is a Go application following Herald's architecture patterns.
Tech Stack#
- Language: Go 1.24+
- Database: SQLite with direct SQL (no ORM)
- Auth: Indiko OAuth 2.0 server
- Logging: charmbracelet/log for structured logging
- Frontend: Go html/template + Vanilla JavaScript
- Deployment: Single static binary
Development Commands#
# Build the project
go build -o pipes .
# Run in development
./pipes serve -c config.yaml
# Run with hot reload (using a tool like air)
air
# Initialize config files
./pipes init
# Run tests
go test ./...
Configuration#
- YAML Config (config.yaml): All non-sensitive configuration
- Environment (.env): Secrets only (INDIKO_CLIENT_SECRET, SESSION_SECRET)
- YAML supports env var expansion:
${VAR}syntax
See config.yaml.example and .env.example for templates.
Architecture#
Follow Herald's patterns:
- Clean separation of concerns (config/, store/, auth/, engine/, nodes/, web/)
- SQLite with WAL mode
- Structured logging with charm log
- Graceful shutdown with signal handling
- Session-based authentication with Indiko OAuth
Code Style#
- Use
gofmtfor formatting - Structured logging:
logger.Info("message", "key", value) - Error wrapping:
fmt.Errorf("context: %w", err) - Context propagation for cancellation
- Foreign key constraints in SQLite
Design Aesthetic#
Neo-Brutalism - Bold, geometric design:
- Space Grotesk font
- Hard borders (3-4px solid)
- Hard box shadows (no blur)
- High contrast colors
- Sharp, geometric shapes
- Color palette:
- Primary: #2563eb (blue)
- Secondary: #ff6b35 (orange)
- Auth/Indiko: #AB4967 (pink)
- Dark: #26242b (near-black)
- Background: #f5f5f0 (warm off-white)
- White: #fff