Back to selected projects

Full-Stack Application

Juniper & Lane Realty

A deployed real estate application that combines a public property-search experience, customer accounts, and a role-protected brokerage administration system.

Angular / TypeScript / FastAPI / PostgreSQL / Cloud Storage

Project Overview

Building beyond a CRUD demo

I built Juniper & Lane to show a complete application lifecycle: public browsing, account workflows, internal administration, durable media storage, automated testing, security controls, and production deployment.

Role
Full-stack developer
Status
Live and deployed
Primary focus
Full-stack architecture, workflows, testing, and deployment

The Challenge

Three experiences sharing one system

The application needed to serve anonymous visitors, registered customers, and brokerage staff without mixing their responsibilities or weakening the backend authorization boundary.

Keeping the architecture understandable

The public experience includes search, filtering, listing details, community content, open houses, and agent information. Customer accounts add saved homes, recently viewed listings, saved searches, alerts, and inquiry workflows.

A separate protected administration area manages listings, photos, documents, agents, offices, leads, testimonials, users, analytics, and site settings. FastAPI remains the authoritative layer for validation, authentication, authorization, and business rules.

Key Implementation

Connected from browser to storage

Angular owns presentation and browser interaction. FastAPI handles the API and business rules, PostgreSQL stores relational data, and S3-compatible object storage keeps listing media outside the web server filesystem.

01

Public search

Search, filters, sorting, pagination, listing details, featured homes, communities, open houses, and public-safe previews.

02

Account workflows

Registration, email verification, login, password recovery, favorites, recently viewed listings, saved searches, and alerts.

03

Admin operations

Role-protected listing management, media workflows, open houses, documents, leads, users, content, analytics, and CSV exports.

04

Production architecture

Render hosts the application and PostgreSQL while S3-compatible storage handles media. Alembic migrations manage schema changes.

Quality + Security

Treating launch work as part of the build

The project includes automated checks and operational safeguards so the deployed application demonstrates more than feature development.

  • Angular unit tests and backend pytest coverage
  • GitHub Actions builds and tests both application halves
  • Alembic migrations are validated before deployment
  • Dependency audits run for frontend and backend packages
  • TOTP MFA and recovery codes protect internal accounts
  • Audit logging records sensitive administrative actions
  • Upload validation and storage boundaries protect media workflows
  • WCAG-focused templates, keyboard behavior, and visible status states

The Result

A portfolio project that behaves like a real product

Juniper & Lane now gives recruiters a live application they can browse while the repository shows the architecture, tests, deployment configuration, documentation, and incremental project history behind it.

What it demonstrates

Angular and TypeScript, Python and FastAPI, SQLAlchemy, PostgreSQL, API design, authentication and authorization, file storage, migrations, testing, CI, accessibility, and deployment.

Why I built it this way

I wanted one project that exposed the decisions between layers: how browser state maps to an API, how the API protects data, how relational records connect to media, and how those pieces are tested and deployed together.

Next case study

Spreadsheet Checkup