Skip to content
All projects
Personal project

Poster Backend

An Instagram-style social backend with auth, feeds and media.

Poster Backend project preview

Overview

Poster is a backend exploration of the mechanics behind an Instagram-style product: accounts, posts, follows and a feed that assembles content from the people you follow.

The goal was not to clone every feature, but to build the core of a social application properly — with a clear data model, typed API contracts and a structure that could grow.

The brief

  • Model users, posts, follows and engagement without circular dependencies.
  • Expose a documented HTTP API with authentication.
  • Keep database access explicit and testable.
  • Design the feed so it can be extended without rewriting the schema.

Approach

I started with the relationships. A user owns posts; follows are a many-to-many relationship between users; a feed is a query over that graph rather than a separate table of duplicated content. Getting those relationships right made the rest of the API much simpler.

FastAPI provided request validation and generated documentation out of the box. SQLAlchemy handled the persistence layer, with models kept close to the domain rather than leaking database details into the route handlers. Authentication was implemented at the API boundary so protected routes share one consistent check.

The project is intentionally modular: auth, users, posts and feed logic live in separate areas, which makes each part easier to reason about and replace.

Stack

Python and FastAPI for the application layer, SQLAlchemy for the ORM and database access.

Outcome

Poster is a working reference backend for a social product, published as open source. It demonstrates the data modelling, API design and authentication patterns I reach for when a project needs a social graph.

View the repository →