FastAPI-template: manifest version 0.0.0, released version 6.1.2, Python 3.9 allowed
Feature rich robust FastAPI template.
At a glance
- What is it?
- A cookiecutter based project generator for FastAPI whose manifest carries a placeholder version, whose test configuration still sets Poetry variables and a null keyring under a hatchling build, whose Docker image pins Python 3.13 and refuses to download one, and whose own help text ships a misspelt overwrite flag.
- Who is it for?
- FastAPI-template is worth using when you want a backend skeleton rather than a tutorial, and the generated project is the part that matters. Pick your ORM and database from the two lists that disagree with each other, and expect the optional integrations to be reachable only through the interactive questionnaire, since no flag sets them.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 153 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The manifest carries 0.0.0 while the releases are at 6.1.2
The version field in the project table is 0.0.0, and it is the only version in the file. The published releases are numbered 6.1.2, 6.1.1 and 6.1.0, with 6.1.2 dated 2026-05-05 and the last commit on the default branch fifteen minutes after it on the same day. So the number in the repository is a placeholder that something outside the tree fills in before publishing, and a reader who checks out the branch sees no version at all. Nothing in the build configuration hints at the substitution: the sdist and wheel targets each include the single package directory, the build backend is hatchling, and there is no dynamic version declaration to resolve it. The package is published to PyPI as fastapi_template with an underscore, while the repository is named FastAPI-template.
The test settings still configure Poetry and a null keyring
The pytest configuration belongs to an earlier packaging era. Its environment list sets a Poetry flag asking for the virtual environment to live inside the project, and sets the Python keyring backend to the null implementation, which discards anything a library tries to store or read there. Neither setting has anything to do with the current build, which uses hatchling and declares no Poetry dependency, so the first is dead configuration and the second silently changes credential behaviour for every test in the suite. The rest of the section is more current: markers for PostgreSQL, MySQL and SQLite tests, a test path pointing inside the package rather than at a top-level directory, three retries with a two-second delay, and cumulative timing enabled. The feature list credits the project with tests for the generator itself.
The image pins Python 3.13 and is told never to fetch one
The Dockerfile starts from a uv image tagged for Python 3.13 on Alpine and then removes uv's ability to manage interpreters: downloads are disabled and managed Python is switched off, so the interpreter baked into the base image is the only one available. Four more uv settings follow, compiling bytecode, copying rather than hardlinking into the cache, and pointing the project environment at a system prefix. The dependency step runs a locked sync with development extras off, which means the lock file has to match the project table or the image does not build. Build tooling is installed and then curl is removed from the final layer. The container runs as an unprivileged user with a fixed numeric identifier and a disabled password, and bakes a git name and a no-reply address into that user's global configuration.
docker run --rm -it -v "$(pwd):/projects" ghcr.io/s3rius/fastapi_templateFive ORMs in the prose, seven choices on the command line
The feature paragraph names the supported ORMs as SQLAlchemy 2.0, TortoiseORM, Piccolo, Ormar and Beanie. The command line offers seven values for the same option: none, ormar, sqlalchemy, tortoise, psycopg, piccolo and beanie. The extra two are the interesting ones. none is how you generate a project with no ORM layer at all, matching the claim that a database is optional. psycopg sits in a list of object mappers alongside two MongoDB document wrappers and four relational ORMs, and it is a database driver rather than a mapper, which is also why the feature list carves out raw drivers when it says migrations are optional for each ORM. The parallel database option is shorter, with five values including none, sqlite, mysql, postgresql and mongodb, and the two lists are not mapped to each other anywhere.
The non-interactive flags stop at the ORM
Seven flags are all the command line exposes.
$ python -m fastapi_template --help
Usage: fastapi_template [OPTIONS]
Options:
-n, --name TEXT Name of your awesome project
-V, --version Prints current version
--force Owerrite directory if it exists
--quiet Do not ask for features during generation
--api-type [rest|graphql] Select API type for your application
--db [none|sqlite|mysql|postgresql|mongodb]
Select a database for your app
--orm [none|ormar|sqlalchemy|tortoise|psycopg|piccolo|beanie]Nothing in that list covers Redis, RabbitMQ, Prometheus, Sentry, Loguru, OpenTelemetry or taskiq, all of which the feature list calls optional. The quiet flag is the clue to where those live: it means do not ask for features during generation, so the optional integrations are reachable only by answering the interactive questionnaire, and a scripted caller gets whatever the defaults are. The same list explains the two interface modes, since a terminal menu library and a prompt toolkit are both dependencies alongside the click-based parser.
The help text misspells overwrite and the features escape a slash
Two small text defects are worth knowing because both are in strings a user sees. The flag description for forcing an existing directory reads Owerrite rather than Overwrite, and it is the description the tool prints for its own destructive flag. The feature list writes the CI/CD entry with a backslash between the two words rather than a forward slash. Neither changes behaviour, and both are the kind of thing that survives because nobody reads the string after the first commit. The same paragraph carries two claims that cannot be checked from the repository: that generated tests come with almost 90 percent coverage, and that the project has code documentation of a high standard.
Python 3.9 is allowed and 3.13 is what actually ships
The project table allows any Python from 3.9 up to but not including 4. The container image runs 3.13. The gap matters for the generated project rather than the generator, because the generator's own dependencies are modest, and the floor it advertises is the floor your project inherits before any library in the chosen stack narrows it. One dependency shows the same kind of slack. Pydantic is declared with a lower bound and no ceiling, while the feature list says generated projects use Pydantic v2 wherever the chosen libraries support it and admits some do not. A permissive ceiling on the generator's own copy is reasonable; what it means in practice is that which major version of the validation library the generator itself runs against is decided when it is installed rather than by the project table.
Three prerequisites, and uv is one of them
The usage section opens with a warning that Git, Python and uv must all be installed and accessible before anything else works. The pip route is two commands, installing the package and then running it as a module, with the console script as an equivalent, followed by answering the questions, moving into the generated directory and bringing the stack up with docker compose. The from-source route installs uv first, then the local project, then runs it the same way, which is why the tool can demand uv as a prerequisite for its own build. The Docker route is one line that mounts the current directory at a projects volume and runs the image, whose entry point is the module invocation rather than a shell, so arguments pass straight through to the same option parser documented above.
Editorial conclusion
FastAPI-template is worth using when you want a backend skeleton rather than a tutorial, and the generated project is the part that matters. Pick your ORM and database from the two lists that disagree with each other, and expect the optional integrations to be reachable only through the interactive questionnaire, since no flag sets them. Build the generator in Docker if you hit the Poetry-era test settings or the Python floor, because the manifest allows 3.9 while the image runs 3.13 and refuses to fetch one. Treat the coverage figure in the feature list as a claim rather than a measurement, and read the generated pre-commit and CI files before you trust them, since pre-commit is a dependency of the generator rather than of your project.
Frequently asked questions
What is FastAPI-template and how is it installed?
It is a general-purpose project generator for FastAPI, built on cookiecutter and published to PyPI as fastapi_template. Install it with python3 -m pip install fastapi_template and run it as python3 -m fastapi_template, or run the published image with your current directory mounted.
Which ORMs and databases can FastAPI-template generate?
The feature list names SQLAlchemy 2.0, TortoiseORM, Piccolo, Ormar and Beanie, and the command line accepts seven values including none and psycopg. The database option takes none, sqlite, mysql, postgresql or mongodb, and a project can be generated with no database at all.
Which Python versions does FastAPI-template support?
The project table requires Python 3.9 or newer and below 4. The published container image is built on Python 3.13, and its uv settings disable both interpreter downloads and managed Python, so that base interpreter is the only one available inside the image.
Can FastAPI-template be used without answering questions?
Yes, with the quiet flag, which means do not ask for features during generation. The flags available are name, version, force, quiet, api-type, db and orm. The optional integrations named in the feature list, including Redis, RabbitMQ, Prometheus, Sentry, Loguru, OpenTelemetry and taskiq, have no flags of their own.
What version of FastAPI-template is current?
The published releases are 6.1.2, 6.1.1 and 6.1.0, with 6.1.2 published on 2026-05-05. The version field inside the project table in the repository reads 0.0.0, so the number a checkout shows is a placeholder rather than the release.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/s3rius-fastapi-template)