How caffeine-addictt/portfolio works
This is a Rust portfolio website: HTTP requests are routed to pages and form handlers, which render HTML and, for blog and contact workflows, use the database; contact submissions also trigger a Discord webhook. The graph includes the documented website areas and the core runtime layers. Source excerpts show the blog and contact data flows, but not the project handler or its data wiring, so that relationship is omitted.
Main entry points: routes/mod.rs Route dispatcher · config.rs Template setup · contact.rs Contact form · database/mod.rs Database access
Components 17
Website
- Home and privacy
src/routes/index.rs - Projects pages
src/routes/projects.rs - Blog pages
src/routes/blog.rs - Contact form
src/routes/contact.rs - Error pages
src/routes/error.rs - HTML templates
templates
Runtime
- HTTP server
src/main.rs - Route dispatcher
src/routes/mod.rs - Template setup
src/config.rs
Content and storage
- Work and education
data - Project content
data/projects.json - Database access
src/database/mod.rs - Schema migrations
src/database/migrate.rs
Integrations
- Turso database
- Webhook sender
src/services/webhook.rs - Discord webhook
Other components
- Site visitor
Connections 19
- Site visitor → HTTP server: requests pages
- HTTP server → Route dispatcher: serves routes
src/main.rs - Route dispatcher → Home and privacy: routes home
src/routes/mod.rs - Route dispatcher → Projects pages: routes projects
src/routes/mod.rs - Route dispatcher → Blog pages: routes blog
src/routes/mod.rs - Route dispatcher → Contact form: routes contact
src/routes/mod.rs - Route dispatcher → Error pages: handles fallback
src/routes/mod.rs - HTTP server → Template setup: initializes templates
src/main.rs - Home and privacy → Template setup: renders pages
src/routes/index.rs - Home and privacy → Work and education: loads timeline data
src/routes/index.rs - Blog pages → Database access: queries posts
src/routes/blog.rs - Blog pages → Template setup: renders posts
src/routes/blog.rs - Contact form → Database access: stores submission
src/routes/contact.rs - Contact form → Webhook sender: sends submission
src/routes/contact.rs - Contact form → Template setup: renders result
src/routes/contact.rs - Database access → Schema migrations: runs migrations
src/database/mod.rs - Database access → Turso database: syncs database
src/database/mod.rs - Webhook sender → Discord webhook: posts message
src/services/webhook.rs - Template setup → HTML templates: loads templates
src/config.rs