# Flask template > Simple flask template ## Running First compile WASM PoW: ```sh cd src/static/js/wasm ./compile.sh cd ../../../../ ``` Then: ```sh python3 -m venv venv source venv/bin/activate source .env # see example.env pip install --upgrade -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](https://pypi.org/project/gunicorn/): ```sh python3 -m venv venv source venv/bin/activate source .env # see example.env pip install --upgrade -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 `, 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`: ```py 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 ```sh flask hello ``` Or whatever your custom subcommand is. ## Linting and Formatting Use the following tools: - Black: - Isort: - Pyright: - Flake8: - Mypy: