Some checks failed
Deploy Fediversion / deploy (push) Failing after 1s
New endpoints:
- GET /analytics/gaps/{vertical} - Songs overdue for a play
- GET /analytics/velocity/{vertical} - Hot vs cooling songs
- GET /analytics/trends/{vertical} - Monthly/quarterly chart data
- GET /analytics/stats/{vertical} - Aggregate band statistics
- GET /analytics/bustouts/{vertical} - Songs returning after long gaps
- GET /analytics/debut-songs/{vertical} - Recently debuted songs
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
from fastapi import FastAPI
|
|
import os
|
|
from routers import auth, shows, venues, songs, social, tours, artists, preferences, reviews, badges, nicknames, moderation, attendance, groups, users, search, performances, notifications, feed, leaderboards, stats, admin, chase, gamification, videos, musicians, sequences, verticals, canon, on_this_day, discover, bands, festivals, playlists, analytics
|
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
# Feature flags - set to False to disable features
|
|
ENABLE_BUG_TRACKER = os.getenv("ENABLE_BUG_TRACKER", "true").lower() == "true"
|
|
|
|
app = FastAPI()
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"], # In production, set this to the frontend domain
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(auth.router)
|
|
app.include_router(shows.router)
|
|
app.include_router(venues.router)
|
|
app.include_router(songs.router)
|
|
app.include_router(social.router)
|
|
app.include_router(tours.router)
|
|
app.include_router(artists.router)
|
|
app.include_router(preferences.router)
|
|
app.include_router(reviews.router)
|
|
app.include_router(badges.router)
|
|
app.include_router(nicknames.router)
|
|
app.include_router(moderation.router)
|
|
app.include_router(attendance.router)
|
|
app.include_router(groups.router)
|
|
app.include_router(users.router)
|
|
app.include_router(search.router)
|
|
app.include_router(performances.router)
|
|
app.include_router(notifications.router)
|
|
app.include_router(feed.router)
|
|
app.include_router(leaderboards.router)
|
|
app.include_router(stats.router)
|
|
app.include_router(admin.router)
|
|
app.include_router(chase.router)
|
|
app.include_router(gamification.router)
|
|
app.include_router(videos.router)
|
|
app.include_router(musicians.router)
|
|
app.include_router(sequences.router)
|
|
app.include_router(verticals.router)
|
|
app.include_router(canon.router)
|
|
app.include_router(on_this_day.router)
|
|
app.include_router(discover.router)
|
|
app.include_router(bands.router)
|
|
app.include_router(festivals.router)
|
|
app.include_router(playlists.router)
|
|
app.include_router(analytics.router)
|
|
|
|
|
|
# Optional features - can be disabled via env vars
|
|
if ENABLE_BUG_TRACKER:
|
|
from routers import tickets
|
|
app.include_router(tickets.router)
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {"Hello": "World"}
|
|
|
|
@app.get("/healthz")
|
|
def health_check():
|
|
"""Health check endpoint for monitoring and load balancers"""
|
|
return {"status": "healthy"}
|
|
|