A good Flask template!
Find a file Use this template
Arija A. 0478cb97ec
Remove static domain requirement
Signed-off-by: Arija A. <ari@ari.lt>
2025-08-11 14:40:36 +03:00
src Remove static domain requirement 2025-08-11 14:40:36 +03:00
.editorconfig Initial app setup 2025-07-30 20:27:49 +03:00
.gitignore Initial app setup 2025-07-30 20:27:49 +03:00
example.env Remove static domain requirement 2025-08-11 14:40:36 +03:00
LICENSE Remove information from LICENSE 2025-07-30 21:34:51 +03:00
pyproject.toml Fix pyright errors. 2025-07-30 22:10:00 +03:00
README.md Add memcached and rate limiting 2025-08-08 03:47:17 +03:00
rename.py Add click to common modules in rename.py 2025-08-03 00:41:40 +03:00
requirements.txt Add pymemcache to deps 2025-08-08 03:52:34 +03:00
tox.ini Initial app setup 2025-07-30 20:27:49 +03:00

Flask template

Simple flask template

Running

python3 -m venv venv
source venv/bin/activate
source .env  # see example.env
pip install -r requirements.txt
cd src
memcached -d
# If you remove migrations/:
# flask db init
# vim migrations/script.py.mako (add import flask_app)
# flask db migrate -m 'Initial migration'
flask db upgrade
flask run

For production use a WSGI server such as Gunicorn:

python3 -m venv venv
source venv/bin/activate
source .env  # see example.env
pip install -r requirements.txt
pip install --upgrade gunicorn
cd src
memcached -d
flask db upgrade
python3 -m gunicorn -b 127.0.0.1:12345 -w 4 app:app  # ... Or whatever your configuration is

I don't want a generic flask_app module name

Run python3 rename.py <new_module_name>, for example, python3 rename.py my_app :)

I need custom subcommands

In src/flask_app/__init__.py you can register your custom flask subcommands using click:

import click
import flask


@click.command("hello")
def cmd_hello() -> None:
    """Print hello"""
    print("Hello!")


def create_app(name: str) -> flask.Flask:
    ...

    app: flask.Flask = flask.Flask(name)

    ...

    # Commands

    app.cli.add_command(create_counter)

    ...

    return app

If you have a lot of custom commands it is advised you move your commands to a file called commands.py or alike, then register them as usual using app.cli.add_command. To run these subcommands you would simply do

flask hello

Or whatever your custom subcommand is.

Linting and Formatting

Use the following tools: