How dheeraj-gurramkonda/snippetbox works
Snippetbox is a server-rendered Go application for publishing expiring text snippets and managing user accounts. A browser request reaches the HTTPS server and route middleware, then page handlers validate forms or retrieve data through snippet and user models; handlers render pages or redirect with session messages. Signup, login, authenticated snippet creation, logout, CSRF protection, health checks, and embedded static files are distinct capabilities. The graph follows documented routes and sampled calls; unsampled details are represented only where the README establishes them.
Main entry points: main.go HTTPS server · handlers.go Page handlers · routes.go Route dispatch · users.go User model
Components 15
Web application
- HTTPS server
cmd/web/main.go - Route dispatch
cmd/web/routes.go - Request middleware
cmd/web/middleware.go - Page handlers
cmd/web/handlers.go - Form validation
internal/validator/validator.go
Accounts and sessions
- User model
internal/models/users.go - Session manager
cmd/web/main.go
Snippet publishing
- Snippet model
internal/models/snippet.go
Page delivery
- Render helpers
cmd/web/helpers.go - Template cache
cmd/web/templates.go - HTML templates
assets/html - Static assets
assets/static
Other components
- Browser visitor
- MySQL database
- MySQL session store
Connections 21
- Browser visitor → HTTPS server: sends HTTPS
README.md - HTTPS server → Route dispatch: serves through
cmd/web/main.go - Route dispatch → Request middleware: wraps requests
cmd/web/routes.go - Route dispatch → Page handlers: dispatches to
cmd/web/routes.go - Route dispatch → Static assets: serves files
cmd/web/routes.go - Request middleware → Session manager: loads and saves
- Request middleware → User model: checks account
cmd/web/middleware.go - Page handlers → Form validation: checks fields
cmd/web/handlers.go - Page handlers → Snippet model: reads and writes
cmd/web/handlers.go - Page handlers → User model: registers and authenticates
cmd/web/handlers.go - Page handlers → Session manager: updates session
cmd/web/handlers.go - Page handlers → Render helpers: renders pages
cmd/web/handlers.go - Template cache → HTML templates: parses templates
cmd/web/templates.go - HTTPS server → Template cache: builds cache
cmd/web/main.go - HTTPS server → Session manager: configures manager
cmd/web/main.go - HTTPS server → Snippet model: configures model
cmd/web/main.go - HTTPS server → User model: configures model
cmd/web/main.go - Snippet model → MySQL database: queries
internal/models/snippet.go - User model → MySQL database: queries
internal/models/users.go - Session manager → MySQL session store: stores sessions
cmd/web/main.go - MySQL session store → MySQL database: persists in