From 233526754b0f171ab54492aaad85b47b8693f21d Mon Sep 17 00:00:00 2001 From: HoseinA05 <139102040+HoseinA05@users.noreply.github.com> Date: Tue, 23 Dec 2025 08:49:57 +0000 Subject: [PATCH] Initial commit Created from https://vercel.com/new --- .gitignore | 10 ++ README.md | 51 +++++++ main.py | 349 +++++++++++++++++++++++++++++++++++++++++++++ public/favicon.ico | Bin 0 -> 7896 bytes pyproject.toml | 8 ++ requirements.txt | 2 + 6 files changed, 420 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 main.py create mode 100644 public/favicon.ico create mode 100644 pyproject.toml create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3186d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.vercel/ +.venv/ +venv/ +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +.DS_Store +.env* diff --git a/README.md b/README.md new file mode 100644 index 0000000..99e23df --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# FastAPI Starter + +Deploy your [FastAPI](https://fastapi.tiangolo.com/) project to Vercel with zero configuration. + +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/vercel/vercel/tree/main/examples/fastapi&template=fastapi) + +_Live Example: https://vercel-plus-fastapi.vercel.app/_ + +Visit the [FastAPI documentation](https://fastapi.tiangolo.com/) to learn more. + +## Getting Started + +Install the required dependencies: + +```bash +python -m venv .venv +source .venv/bin/activate +pip install . +``` + +Or, if using [uv](https://docs.astral.sh/uv/): + +```bash +uv sync +``` + + +## Running Locally + +Start the development server on http://0.0.0.0:5001 + +```bash +python main.py +# using uv: +uv run main.py +``` + +When you make changes to your project, the server will automatically reload. + +## Deploying to Vercel + +Deploy your project to Vercel with the following command: + +```bash +npm install -g vercel +vercel --prod +``` + +Or `git push` to your repository with our [git integration](https://vercel.com/docs/deployments/git). + +To view the source code for this template, [visit the example repository](https://github.com/vercel/vercel/tree/main/examples/fastapi). diff --git a/main.py b/main.py new file mode 100644 index 0000000..5c154bc --- /dev/null +++ b/main.py @@ -0,0 +1,349 @@ +from fastapi import FastAPI +from fastapi.responses import HTMLResponse + + +app = FastAPI( + title="Vercel + FastAPI", + description="Vercel + FastAPI", + version="1.0.0", +) + + +@app.get("/api/data") +def get_sample_data(): + return { + "data": [ + {"id": 1, "name": "Sample Item 1", "value": 100}, + {"id": 2, "name": "Sample Item 2", "value": 200}, + {"id": 3, "name": "Sample Item 3", "value": 300} + ], + "total": 3, + "timestamp": "2024-01-01T00:00:00Z" + } + + +@app.get("/api/items/{item_id}") +def get_item(item_id: int): + return { + "item": { + "id": item_id, + "name": "Sample Item " + str(item_id), + "value": item_id * 100 + }, + "timestamp": "2024-01-01T00:00:00Z" + } + + +@app.get("/", response_class=HTMLResponse) +def read_root(): + return """ + + + + + + Vercel + FastAPI + + + + +
+ +
+
+
+

Vercel + FastAPI

+
+
from fastapi import FastAPI
+
+app = FastAPI()
+
+@app.get("/")
+def read_root():
+    return {"Python": "on Vercel"}
+
+
+ +
+
+

Interactive API Docs

+

Explore this API's endpoints with the interactive Swagger UI. Test requests and view response schemas in real-time.

+ Open Swagger UI → +
+ +
+

Sample Data

+

Access sample JSON data through our REST API. Perfect for testing and development purposes.

+ Get Data → +
+ +
+
+ + + """ + + +if __name__ == "__main__": + import uvicorn + uvicorn.run("main:app", host="0.0.0.0", port=5001, reload=True) diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cbe6034518a56eabf83b4b86f478e47d787ca1e1 GIT binary patch literal 7896 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b71a65b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,8 @@ +[project] +name = "vercel-fastapi-starter" +version = "0.1.0" +requires-python = ">=3.10" +dependencies = [ + "fastapi>=0.121.0", + "uvicorn>=0.34.0", +] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..97dc7cd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +fastapi +uvicorn