Introduction to the Twelve-Factor App

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • nvm

    Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

  • Also, in the Javascript world, npm and yarn are both generally understood to be the main package management tools ( with package.json and yarn.lock) and optionally nvm (or similar) can be used to select a Node runtime.

  • get-pip

    Helper scripts to install pip, in a Python installation that doesn't have it.

  • # In our server’s shell, set the `DATABASE_URL` variable. # `export` allows programs outside of this current shell session to use `DATABASE_URL`. root@28b24b724f54:/# export DATABASE_URL="postgresql://mydbuser:mysecretpass@thePGserver/db" # Let’s also set our environment type root@28b24b724f54:/# export ENV=development # Let’s see what Python would give us with `os.environ`. root@ee16c88faf39:/# python Python 3.6.14 (default, Jul 22 2021, 16:21:31) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.environ environ({ 'DATABASE_URL': 'postgresql://mydbuser:mysecretpass@thePGserver/db', 'HOSTNAME': '28b24b724f54', 'PYTHON_VERSION': '3.6.14', 'ENV': 'development', 'PWD': '/', 'HOME': '/root', 'LANG': 'C.UTF-8', 'GPG_KEY': '0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D', 'TERM': 'xterm', 'SHLVL': '1', 'PYTHON_PIP_VERSION': '21.2.4', 'PYTHON_GET_PIP_SHA256': 'fa6f3fb93cce234cd4e8dd2beb54a51ab9c247653b52855a48dd44e6b21ff28b', 'PYTHON_GET_PIP_URL': 'https://github.com/pypa/get-pip/raw/c20b0cfd643cd4a19246ccf204e2997af70f6b21/public/get-pip.py', 'PATH': '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', '_': '/usr/local/bin/python' })

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Django

    The Web framework for perfectionists with deadlines.

  • Django is one such framework that provides easily swappable email functionality, for example. On the email backends page we can see that email backends are easily swappable just by changing the EMAIL_BACKEND setting.

  • Poetry

    Python packaging and dependency management made easy

  • For example, with Python it’s generally understood that pip is used for package management (with a requirements.txt file) and virtualenv is used to isolate application dependencies from system dependencies. More recently, this can also be done with newer tools like Pipenv and Poetry.

  • git

    A fork of Git containing Windows-specific patches. (by git-for-windows)

  • These days, you’re likely already using a code versioning system, and it will most likely be git. There’s also other version control systems such as Subversion (svn) or Mercurial hg). This post will use concepts as it relates to git.

  • fastapi

    FastAPI framework, high performance, easy to learn, fast to code, ready for production

  • # Taken from: https://fastapi.tiangolo.com/advanced/async-sql-databases/?h=async+datab#import-and-set-up-sqlalchemy # This is a new import needed to use env vars import os import databases from fastapi import FastAPI # Now, we only need to define DATABASE_URL once, and it no longer contains # sensitive information. DATABASE_URL = os.environ.get('DATABASE_URL') # We should also check if our environment wasn't set up properly and raise if # `DATABASE_URL` wasn't set if not DATABASE_URL: raise AssertionError('DATABASE_URL not configured or detected. ' 'Please check your environment variables.') database = databases.Database(DATABASE_URL) # We can also do specific things if our app is running in development mode with this variable IS_DEVELOPMENT = os.environ.get('ENV') == 'development' if IS_DEVELOPMENT: print('My app is running in development mode') # Do other things... like set up local logging, connect to services only available on your local environment.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts