How miguelgrinberg/microblog works
Microblog is a Flask social blogging application. A signed-in user creates posts, follows people, browses feeds, searches, exchanges messages, and can request a background post export; visitors can register, sign in, or reset passwords. The web route modules coordinate forms, models, and persistence, while separate API routes expose user operations with token authentication. Other documented-by-code capabilities include translation, notifications, email, and optional Elasticsearch search. The graph follows sampled route and worker calls; model internals and unsampled integrations are represented conservatively.
Main entry points: main/routes.py Social routes · models.py Domain models · __init__.py Flask app setup · auth/routes.py Account routes
Components 19
Web experience
- Social routes
app/main/routes.py - Social forms
app/main/forms.py - Page templates
app/templates
Accounts and API
- Account routes
app/auth/routes.py - Account forms
app/auth/forms.py - User API
app/api/users.py - API authentication
app/api/auth.py - API errors
app/api/errors.py
Social domain
- Domain models
app/models.py - Search integration
app/search.py - Text translation
app/translate.py
Background work
- Export worker
app/tasks.py
Persistence and services
- Task queue
- Relational database
- Elasticsearch
- Redis
- Email service
- Flask app setup
app/__init__.py
Other components
- Browser user
Connections 22
- Browser user → Social routes: requests pages
- Social routes → Social forms: validates input
- Social routes → Page templates: renders pages
- Social routes → Domain models: reads and writes
- Social routes → Text translation: translates text
- Social routes → Search integration: searches posts
- Account routes → Account forms: validates input
- Account routes → Domain models: reads and writes
- Account routes → Email service: requests reset email
- User API → API authentication: checks tokens
- User API → API errors: returns errors
- User API → Domain models: reads and writes
- Social routes → Task queue: launches export
- Export worker → Domain models: loads export data
- Export worker → Task queue: updates progress
- Export worker → Email service: sends export
- Domain models → Relational database: persists domain data
- Search integration → Elasticsearch: indexes and queries
- Flask app setup → Relational database: initializes ORM
- Flask app setup → Elasticsearch: configures client
- Flask app setup → Redis: connects
- Flask app setup → Task queue: creates queue