Back to projects

Systems / Archived service

Personal Website Backend

The original FastAPI and SQLAlchemy content service, retained as a project after the website migrated to static JSON, prerendered pages, and direct email contact.

FastAPIRESTContent
View repository
PERSONAL WEBSITE BACKEND
REQUESTS → SERVICES → CONTENT

01 / COMPONENTS & DATA FLOW

Inside the system.

  1. 01FastAPI routes
  2. 02SQLAlchemy sessions
  3. 03Azure SQL models
  4. 04JSON API responses

Content routes

FastAPI routers separate portfolio items, blog posts, and contact submissions. Models represent each of those content types.

SQL persistence

SQLAlchemy sessions use the mssql+pyodbc dialect and an ODBC SQL Server driver to access Azure SQL. Contact records include creation time and email-sent state.

Completed frontend migration

The current website reads profile and journal JSON from its repository, generates static article and project pages, and uses email links for contact. It no longer calls this service.

02 / IMPLEMENTATION DECISIONS

Why it works this way.

Static content removes a runtime dependency

Content changes now travel through Git review and the existing build/deploy workflow. The live site stays readable when the original API is unavailable.

Retirement preserves records

The website’s 30 journals and original public project records were exported before database access was disabled. Existing private contact records remain in the retained database.

03 / SCOPE & TRADEOFFS

The implementation boundary.

An archived API, not the current website’s backend. Its database network access is disabled; the database remains retained rather than deleted.

04 / READ THE IMPLEMENTATION

Follow it into the code.