How reaper47/recipya works
Recipya is a self-hosted recipe-management web application. The main workflow is a user submitting recipe details or a URL, the server handling the request, recipe data being parsed or normalized, and the repository persisting it for later viewing and organization into cookbooks. Separate capabilities include authentication, recipe imports from external managers, measurement conversion, and scheduled maintenance. The sampled files show server setup and selected handler/storage behavior; several feature branches are documented or named in the tree but their internal wiring was not sampled.
Main entry points: server.go HTTP server · handlers_recipes.go Recipe handlers · jobs.go Scheduled jobs · sqlite_service.go SQLite repository
Components 21
Web application
- CLI entry
main.go - HTTP server
internal/server/server.go - Authentication
internal/server/handlers_auth.go - Page data
internal/templates/data.go - Web components
web/components
Recipe workflows
- Recipe handlers
internal/server/handlers_recipes.go - Cookbook handlers
internal/server/handlers_cookbooks.go - Recipe model
internal/models/recipe.go - Recipe scrapers
internal/scraper/websites.go - Measurement conversion
internal/units/measurements.go - Import integrations
internal/integrations
Data and services
- Repository service
internal/services/service.go - SQLite repository
internal/services/sqlite_service.go - SQL statements
internal/services/statements/select.go - SQLite database
- File management
internal/services/files.go
Supporting capabilities
- Scheduled jobs
internal/jobs/jobs.go - Reports
internal/server/handlers_reports.go - Settings handlers
internal/server/handlers_settings.go - Email service
internal/services/email.go
Other components
- User
Connections 26
- User → HTTP server: sends requests
- CLI entry → HTTP server: starts
main.go - CLI entry → SQLite repository: creates
main.go - HTTP server → Recipe handlers: routes requests
internal/server/server.go - HTTP server → Authentication: routes requests
internal/server/server.go - Recipe handlers → Repository service: reads and writes
- Cookbook handlers → Repository service: manages cookbooks
internal/server/handlers_cookbooks.go - HTTP server → Recipe scrapers: initializes
internal/server/server.go - Recipe handlers → Recipe scrapers: imports URLs
- Recipe handlers → Recipe model: handles recipes
internal/server/handlers_recipes.go - Recipe model → Measurement conversion: uses conversions
internal/models/recipe.go - HTTP server → Page data: initializes templates
- Recipe handlers → Page data: builds page data
internal/server/handlers_recipes.go - Cookbook handlers → Page data: builds page data
internal/server/handlers_cookbooks.go - Authentication → Web components: renders responses
internal/server/handlers_auth.go - Cookbook handlers → Web components: renders pages
internal/server/handlers_cookbooks.go - SQLite repository → SQL statements: executes queries
internal/services/sqlite_service.go - SQLite repository → SQLite database: reads and writes
internal/services/sqlite_service.go - Repository service → SQLite repository: implemented by
- HTTP server → Scheduled jobs: schedules
internal/server/server.go - Scheduled jobs → Repository service: checks updates
internal/jobs/jobs.go - Scheduled jobs → File management: uses files
internal/jobs/jobs.go - HTTP server → Import integrations: provides import service
- HTTP server → Reports: routes reports
- HTTP server → Settings handlers: routes settings
- Scheduled jobs → Email service: uses email