Getting started¶
Scaffold with future init, then work in the layout below. Examples match how a real app (controllers, models, run.py) uses Future.
Project layout¶
myproject/
run.py # Future(...), add_routes, app.run
.env # from .env.example (or use environment.yml — see Configuration)
app/
config/
Settings.py # load env → APP_*, DB_*
Database.py # DATABASES map
controllers/
models/
middleware/
plugins/
tasks/
routes.py
database/
migrations/
seeds/
Boot (run.py)¶
from app.config.Settings import APP_HOST, APP_PORT, APP_WORKERS, APP_NAME, APP_DOMAIN, APP_DEBUG
from app.config.Database import DATABASES
from app.routes import routes
from future.application import Future
from future.lifespan import Lifespan
config = {
"APP_DOMAIN": APP_DOMAIN,
"APP_NAME": APP_NAME,
"APP_DEBUG": APP_DEBUG,
"DATABASES": DATABASES,
"OPENAPI": {
"enabled": True,
"uis": ["swagger", "redoc", "scalar", "rapidoc"],
"auto_routes": False,
},
}
lifespan = Lifespan(startup_tasks=[], shutdown_tasks=[], cron_tasks=[])
app = Future(lifespan=lifespan, config=config)
app.add_routes(routes)
if __name__ == "__main__":
app.run(host=APP_HOST, port=APP_PORT, workers=APP_WORKERS)
CLI migrate / seed / routes import this app so DATABASES registers the same way as at runtime.
Controllers¶
See Controllers. Short version: inherit Controller, use self.request / self.response, register class methods on routes.
Routes (app/routes.py)¶
from future.openapi import openapi_routes
from future.routing import RouteGroup, Get
from app.controllers.StockController import StockController
routes = [
RouteGroup(
name="Docs",
routes=openapi_routes(uis=["swagger", "redoc", "scalar", "rapidoc"]),
),
RouteGroup(
prefix="/stocks",
name="Stocks",
routes=[
Get("/", StockController.get_stocks, "stocks"),
Get("/<str:stock_id>", StockController.get_stock, "stocks.show"),
],
),
]
First database cycle¶
cp .env.example .env # DB_DATABASE=database → database.sqlite
future make:model Stock
# edit annotations on app/models/Stock.py — migrations/seeds are generated from these
future make:migration Stock
future make:seed Stock
future migrate
future seed
future run
Details: Models, Configuration, Database, CLI.