feat: indie status page MVP -- FastAPI + SQLite

- 8 DB models (services, incidents, monitors, subscribers, etc.)
- Full CRUD API for services, incidents, monitors
- Public status page with live data
- Incident detail page with timeline
- API key authentication
- Uptime monitoring scheduler
- 13 tests passing
- TECHNICAL_DESIGN.md with full spec
This commit is contained in:
IndieStatusBot 2026-04-25 05:00:00 +00:00
commit 902133edd3
4655 changed files with 1342691 additions and 0 deletions

View file

@ -0,0 +1,30 @@
from __future__ import annotations
import sys
__all__ = ["TimeoutError", "aiter", "anext", "asyncio_timeout", "asyncio_timeout_at"]
if sys.version_info[:2] >= (3, 11):
TimeoutError = TimeoutError
aiter = aiter
anext = anext
from asyncio import (
timeout as asyncio_timeout, # noqa: F401
timeout_at as asyncio_timeout_at, # noqa: F401
)
else: # Python < 3.11
from asyncio import TimeoutError
def aiter(async_iterable):
return type(async_iterable).__aiter__(async_iterable)
async def anext(async_iterator):
return await type(async_iterator).__anext__(async_iterator)
from .async_timeout import (
timeout as asyncio_timeout, # noqa: F401
timeout_at as asyncio_timeout_at, # noqa: F401
)