Taraka Sutra: Astronomy Multi-Catalog Identifier Matcher
An asynchronous Python web application that resolves name-based celestial object identifiers across mismatched external catalogues - SIMBAD and the NASA Exoplanet Archive - built as a CS50x capstone and extended well past the course's scope.
+5 more
SQLAlchemyAlembicGemini APIADQL / TAPUvicorn
Asynchronous web architecture
FastAPI, Uvicorn, and httpx execute name-based celestial object resolutions against external astronomical endpoints.
Architectural decoupling
A strict separation between deterministic SQL/ADQL resolution pipelines and non-deterministic presentation layers, so the LLM narrative engine (Gemini API) and the Three.js 3D coordinate visualisation can never modify the underlying scientific data.
State machine & fault tolerance
An explicit five-state resolution engine - RESOLVED, PARTIAL, AMBIGUOUS, UNRESOLVED, LOOKUP_FAILED - backed by a dual-tier TTL cache (14 days for verified queries, 1 hour for network/transport failures) to isolate upstream outages gracefully.
Authentication & data protection
Session-based cookie authentication with bcrypt password hashing, CSRF token verification on mutating routes, and Fernet symmetric encryption for personal API keys at rest.
Database modelling & traffic control
An asynchronous relational schema via SQLAlchemy and Alembic migrations, with sliding-window rate limiting via event logging to protect upstream services and govern API consumption.