Initial commit.
This commit is contained in:
commit
2fa935016e
11 changed files with 1410 additions and 0 deletions
76
app/main.py
Normal file
76
app/main.py
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
from fastapi import FastAPI
|
||||
from scalar_fastapi import get_scalar_api_reference
|
||||
|
||||
from app.routes import discovery, reviews, stats
|
||||
|
||||
DESCRIPTION = """
|
||||
Hi, this is a read-only API exposing 20+ years of my personal media reviews of movies, books,
|
||||
and television since 2001.
|
||||
|
||||
## What this API does
|
||||
|
||||
This API provides structured access to a personal media review database. Every
|
||||
review includes a date, category, title, creator, genre, rating, and optional
|
||||
written commentary.
|
||||
|
||||
## Rating scale
|
||||
|
||||
Ratings use a **-3.0 to 3.0** scale:
|
||||
|
||||
| Rating | Meaning |
|
||||
|--------|---------|
|
||||
| 3.0 | Masterpiece, tears flowed |
|
||||
| 2.0 | Great, I was glowing for a day |
|
||||
| 1.0 | Good enough use of my time |
|
||||
| 0.0 | Meh, a void of space |
|
||||
| -1.0 | Below average, should have spent this time knitting |
|
||||
| -2.0 | Bad, I want someone to pay me for this |
|
||||
| -3.0 | Terrible, I felt like I needed to use toilet paper after |
|
||||
|
||||
## Getting started
|
||||
|
||||
- Browse available categories, genres, and creators via the **Discovery**
|
||||
endpoints
|
||||
- Fetch reviews with filtering and pagination via **GET /reviews**
|
||||
- Explore aggregate statistics via the **Statistics** endpoints
|
||||
- Get a surprise recommendation via **GET /reviews/random**
|
||||
|
||||
## About
|
||||
|
||||
This API is a portfolio project demonstrating API design and documentation
|
||||
skills. Built with [FastAPI](https://fastapi.tiangolo.com/) and documented
|
||||
with [Scalar](https://scalar.com/).
|
||||
"""
|
||||
|
||||
CUSTOM_CSS="""
|
||||
.darklight-reference-promo { display: none !important; }
|
||||
"""
|
||||
|
||||
app = FastAPI(
|
||||
title="Reviews API",
|
||||
description=DESCRIPTION,
|
||||
version="1.0.0",
|
||||
docs_url=None,
|
||||
redoc_url=None,
|
||||
)
|
||||
|
||||
|
||||
@app.get("/docs", include_in_schema=False)
|
||||
async def scalar_docs():
|
||||
return get_scalar_api_reference(
|
||||
openapi_url=app.openapi_url,
|
||||
title=app.title,
|
||||
force_dark_mode_state="light",
|
||||
hide_dark_mode_toggle=True,
|
||||
default_open_all_tags=False,
|
||||
custom_css=CUSTOM_CSS,
|
||||
)
|
||||
|
||||
app.include_router(reviews.router)
|
||||
app.include_router(discovery.router)
|
||||
app.include_router(stats.router)
|
||||
|
||||
@app.get("/health", tags=["System"])
|
||||
def health_check():
|
||||
"""Verify the API is running."""
|
||||
return {"status": "ok"}
|
||||
Loading…
Add table
Add a link
Reference in a new issue