General Architecture¤
FireFighter is built with Django 4.2+, and Python 3.11+.
Apps¤
The project is built with multiple Django apps.
Custom apps¤
firefighter- Main project package. Has the health-check URL, DB/Redis connections, all the settings... No features/models.
incidents- App containing all the incidents models and features, as well as the views.
api- App containing all the views for the FireFighter API. Might be integrated in
incidents.
- App containing all the views for the FireFighter API. Might be integrated in
slack- All Slack models and API.
- As we are still coupled to Slack, this app unfortunately still a lot of business logic.
confluence- To read/write Confluence pages. Model for page.
pagerduty- Read PagerDuty on-call.
raid- Non-critical incident (defects) management with Jira.
confluence, pagerduty and api can be disabled in the settings. slack is not, as you would lose too much functionality.
Other apps¤
Core-Django¤
- django.contrib.admin to provide the back-office. (
/admin) - django.contrib.admindocs to provide the automatic documentation. (
/admin/doc/)- Useful to discover all models and their related fields.
- django.contrib.auth to provide basic auth with User, Group and Permissions.
- django.contrib.contenttypes to track all models installed. Allows generic relations and much more.
- django.contrib.messages to display notifications.
- django.contrib.sessions
- django.contrib.staticfiles to collect all static files and put them in a single directory.
- Every app puts their assets in their own directory. They have to be regrouped to be served easily.
- Serves assets in dev.
- django.contrib.humanize to format in a more human ways numbers and dates.
Dependencies¤
widget_tweaksto customize form fields in templates. Readmerest_frameworkto provide REST API features. Extensive doc for Django Rest Framework.django_filtersto provide filtering on views or API endpoints. Docs.django-taggitto provide a TagManager on Incidents.celeryto provide a task queue.
Other dependencies¤
whitenoiseto serve assets in Python for production. Handles compression and caching headers. Docs.- Installed as a middleware.
Info
You can get documentation on Models, Views, Templates, etc. by visiting the back-office of your deployment as an admin and clicking "View documentation" in the toolbar.