Portfolio

A portfolio built as a backend system, not just a website.

Github Repository

...


This portfolio serves two purposes. First, it showcases my work, experience, projects, and technical interests. Second, and more importantly, it serves as an active, ever-evolving demonstration of my backend development skills. Rather than building a standard static portfolio site, I decided to approach this project much like many frontend developers approach their own portfolios: a direct representation of my technical abilities. To accomplish this, I designed this project around a PostgreSQL database, a FastAPI-powered REST API, and a collection of production-oriented development tools. The site itself functions as a backend project, allowing me to demonstrate concepts such as API development, relational database design, testing, migrations, and maintainability. I plan to continually develop this website, adding new backend technologies as I learn them, making it an evolving representation of my growth as a software developer.




Architecture Highlights

  • Designed around a relational PostgreSQL database rather than static content files
  • Built a REST API using FastAPI to separate application logic from presentation
  • Implemented database versioning through Alembic migrations
  • Implemented automated testing with Pytest to improve reliability
  • Integrated structured logging, SQL admin panel, and other administrative tooling to support maintainability

Key Features

  • Dynamic resume page content, served by PostgreSQL database
  • Administrative interface for database testing
  • Automated testing suite for core backend functionality
  • Responsive frontend built with JavaScript (vanilla) and Pico (lightweight css framework)

Tech Stack


Backend


  • Python
  • FastAPI
  • PostgreSQL
  • SQLAlchemy
  • Alembic
  • Pytest

Frontend


  • HTML
  • Javascript (vanilla)
  • Pico (lightweight CSS framework)

Tooling


  • Loguru
  • Poetry
  • SQLAdmin
  • Bruno

Technical Challenges & Lessons Learned

  • Balancing development speed, learning, and production-oriented development
    • This project required me to learn several new technologies (including SQLAlchemy, Alembic, logging, API testing tools, and database design concepts), all while simultaneously building a functional application. Maintaining development speed while still understanding what I was developing, quickly became one of the project's largest challenges. I addressed this in two key ways. First, I intentionally selected mature, production-grade technologies with straightforward developer experiences. Second, I leveraged AI as both a learning and productivity tool. Rather than blindly generating code, I used the AI to generate boilerplate code, analyzed the code line-by-line, and then modified and the code to fit the project's requirements. This approach allowed me to maintain development momentum while continuing to build a strong foundational understanding of the technologies powering the application.