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,39 @@
Metadata-Version: 2.4
Name: indie-status-page
Version: 0.1.0
Summary: Lightweight, affordable status page tool for indie SaaS developers
License: MIT
Requires-Python: >=3.11
Requires-Dist: aiosqlite<1.0,>=0.19
Requires-Dist: alembic<2.0,>=1.13
Requires-Dist: apscheduler<4.0,>=3.10
Requires-Dist: fastapi<1.0,>=0.110
Requires-Dist: httpx<1.0,>=0.27
Requires-Dist: jinja2<4.0,>=3.1
Requires-Dist: pydantic-settings<3.0,>=2.1
Requires-Dist: pydantic<3.0,>=2.5
Requires-Dist: python-multipart<1.0,>=0.0.6
Requires-Dist: rich<14.0,>=13.0
Requires-Dist: sqlalchemy[asyncio]<3.0,>=2.0
Requires-Dist: typer<1.0,>=0.9
Requires-Dist: uvicorn[standard]<1.0,>=0.27
Provides-Extra: dev
Requires-Dist: httpx<1.0,>=0.27; extra == 'dev'
Requires-Dist: mypy<2.0,>=1.8; extra == 'dev'
Requires-Dist: pytest-asyncio<1.0,>=0.23; extra == 'dev'
Requires-Dist: pytest<9.0,>=8.0; extra == 'dev'
Requires-Dist: ruff<1.0,>=0.2; extra == 'dev'
Description-Content-Type: text/markdown
# Indie Status Page
Lightweight, self-hosted status page tool for indie SaaS developers.
## Quick Start
```bash
pip install -e ".[dev]"
uvicorn app.main:app --reload
```
See [TECHNICAL_DESIGN.md](TECHNICAL_DESIGN.md) for full documentation.

View file

@ -0,0 +1,9 @@
../../../bin/statuspage,sha256=RLBPr8QRaklLzkZOWCL02U6UaIpIJCqD8CkEslCEusg,252
_editable_impl_indie_status_page.pth,sha256=L8oluOtXHNGQResHXOJDHcIpDycmVqPcvGQ5TnoGEio,44
indie_status_page-0.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
indie_status_page-0.1.0.dist-info/METADATA,sha256=Di6sC8AOyAKQao-QvRyCiBBoPaIhiGavJyLSuOIyLf0,1204
indie_status_page-0.1.0.dist-info/RECORD,,
indie_status_page-0.1.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
indie_status_page-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
indie_status_page-0.1.0.dist-info/direct_url.json,sha256=YH8m3oAYn45fkbvXvkw7h0ejgETiDoI2uVPVuAA3IQs,94
indie_status_page-0.1.0.dist-info/entry_points.txt,sha256=KzwVoSWaLwMUkU3GqiLlgBHRNgsVvA13IeqV-TXLJjE,43

View file

@ -0,0 +1,4 @@
Wheel-Version: 1.0
Generator: hatchling 1.29.0
Root-Is-Purelib: true
Tag: py3-none-any

View file

@ -0,0 +1 @@
{"dir_info": {"editable": true}, "url": "file:///home/ubuntu/wealth-engine/indie-status-page"}

View file

@ -0,0 +1,2 @@
[console_scripts]
statuspage = app.cli:app