Skip to main content

Developer productivity tool for making high-quality FastAPI production-ready APIs.

Project description

fastapi-mvc

fastapi-mvc CI codecov K8s integration Code style: black PyPI PyPI - Downloads PyPI - Python Version GitHub


Documentation: https://fastapi-mvc.netlify.app

Source Code: https://github.com/rszamszur/fastapi-mvc

Example generated project: https://github.com/rszamszur/fastapi-mvc-example


Fastapi-mvc is a developer productivity tool for FastAPI web framework. It is designed to make programming FastAPI applications easier by making assumptions about what every developer needs to get started. It allows you to write less code while accomplishing more. Core features:

  • Generated project Based on MVC architectural pattern
  • WSGI + ASGI production server
  • Generated project comes with docstrings and 99% unit tests coverage
  • Kubernetes deployment with Redis HA cluster
  • Makefile, GitHub actions and utilities
  • Helm chart for Kubernetes deployment
  • Dockerfile with K8s and cloud in mind
  • Generate pieces of code or even your own generators
  • Uses Poetry dependency management
  • Reproducible development environment using Vagrant or Nix

Fastapi-mvc comes with a number of scripts called generators that are designed to make your development life easier by creating everything that’s necessary to start working on a particular task. One of these is the new application generator, which will provide you with the foundation of a fresh FastAPI application so that you don’t have to write it yourself.

Creating a new project is as easy as:

$ fastapi-mvc new /tmp/galactic-empire

This will create a fastapi-mvc project called galactic-empire in a /tmp/galactic-empire directory and install its dependencies using make install.

Once project is generated and installed lets run development uvicorn server (ASGI):

$ cd /tmp/galactic-empire
$ fastapi-mvc run
[INFO] Executing shell command: ['/home/demo/.poetry/bin/poetry', 'install', '--no-interaction'].
    Installing dependencies from lock file
    
    No dependencies to install or update
    
    Installing the current project: galactic-empire (0.1.0)
[INFO] Executing shell command: ['/home/demo/.poetry/bin/poetry', 'run', 'uvicorn', '--host', '127.0.0.1', '--port', '8000', '--reload', 'galactic_empire.app.asgi:application'].
INFO:     Will watch for changes in these directories: ['/tmp/galactic-empire']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [4713] using watchgod
INFO:     Started server process [4716]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

To confirm it’s actually working:

$ curl 127.0.0.1:8000/api/ready
{"status":"ok"}

Now let's add new API endpoints. For that we need to generate new controller:

$ fastapi-mvc generate controller death_star status load:post fire:delete

And then test generated controller endpoints:

$ curl 127.0.0.1:8000/api/death_star/status
{"hello":"world"}
$ curl -X POST 127.0.0.1:8000/api/death_star/load
{"hello":"world"}
$ curl -X DELETE 127.0.0.1:8000/api/death_star/fire
{"hello":"world"}

You will see it working in server logs as well:

INFO:     127.0.0.1:47284 - "GET /api/ready HTTP/1.1" 200 OK
INFO:     127.0.0.1:55648 - "GET /api/death_star/status HTTP/1.1" 200 OK
INFO:     127.0.0.1:55650 - "POST /api/death_star/load HTTP/1.1" 200 OK
INFO:     127.0.0.1:55652 - "DELETE /api/death_star/fire HTTP/1.1" 200 OK

You can get the project directly from PyPI:

pip install fastapi-mvc

Projects created with fastapi-mvc

If you have created a project with fastapi-mvc, feel free to open PR and add yourself to the list. Share your story and project. My success is your success :)

Projects:

Contributing

CONTRIBUTING

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi-mvc-0.11.0.tar.gz (78.6 kB view details)

Uploaded Source

Built Distribution

fastapi_mvc-0.11.0-py3-none-any.whl (124.7 kB view details)

Uploaded Python 3

File details

Details for the file fastapi-mvc-0.11.0.tar.gz.

File metadata

  • Download URL: fastapi-mvc-0.11.0.tar.gz
  • Upload date:
  • Size: 78.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for fastapi-mvc-0.11.0.tar.gz
Algorithm Hash digest
SHA256 7f39d6e2470311f6b220dcb0271b779263c0872985a2c5128d77230eb6fee75e
MD5 3f7e9dec7e17c644ab13b1a8d1ca03ce
BLAKE2b-256 58508176859808c13772e47fb4824c5527dc0d5fc17fd0628c45baaf5dd97f75

See more details on using hashes here.

File details

Details for the file fastapi_mvc-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_mvc-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 124.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for fastapi_mvc-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e150494ebd6a70dc0a52f211567ad44451bc089800bdd1c9a5c2aa3c763297f5
MD5 19dd8be3da959f40e67ead6a1b960297
BLAKE2b-256 5adcefdb85a926012e56193b617f52ea403c44344d8a9245f1d1af12c5f8aca9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page