Your Project’s Lifecycle

TODO - this portion is incomplete

Iterating on features

Each feature will likely require the following:

  • A schema definition in models.py

  • Schema and endpoint definitions in openapi.yaml

  • Controller class inherited from BasicCRUD with initialization in controllers.init

  • Permissions defined in rbac.yaml

  • Unit / functional tests

  • Docstrings and potentially updates to the user doc

Some features may need additional settings added to config.py or background processing in messaging.py, the media service or a new microservice worker.

Peer review

If you’re working with a team, host your git repository on GitHub, GitLab or an internal git server. If you’re using GitHub, add a Pull Request template to the repo as .github/PULL_REQUEST_TEMPLATE.md (this repo has an example) and make a checklist for your team members to use as they confirm one another’s work. Make a separate branch for each feature or bugfix, and follow the Git Flow model (or rival approaches such as this suggestion from a GitLab user). Once a Pull Request (known as a Merge Request in the GitLab community) is finalized, the branch is merged to master, then deleted and the release engineering steps can proceed.

Release engineering

Choosing your online vendors

For hosting an open-source application, you’ll want to set up these accounts; many other services are available for closed-source / commercial applications. Each of these services has a no-cost tier of indefinite duration except for those marked with a $ symbol.

Purpose Vendor options
Code repo GitHub, GitLab
CDN Cloudflare, $ AWS Cloudfront
CI/CD Gitlab-CI, many alternatives
DNS Cloudflare, $ UltraDNS, $ EasyDNS, several others
Docs Read the Docs
Geocoding Mapquest
Javascript repo npmjs
Maps Mapbox
Outbound mail GMail, many alternatives
Python repo PyPI
Registry Docker Hub
Storage $ AWS S3, $ Backblaze B2

Logging and troubleshooting

Supporting your users