Skip to content
Maximus Fernandez.
Back to Inspire Columbia Website

Case study

Inspire Columbia Website

A production website that combines Inspire Columbia's public presence with a secure, staff-managed application and recruiting workflow.

Role:
CTO and full-stack developer
Timeline:
2026 - present
Stack:
TypeScript, Next.js, Supabase, Clerk, Resend, Playwright

The problem

Inspire Columbia needed more than a brochure site. The same system had to publish opportunities, accept applications and documents, help reviewers coordinate decisions, and keep applicants informed.

The workflow handles personal applicant information, so staff permissions, database policies, auditability, and safe deployments had to be part of the product rather than later additions.

Constraints and tradeoffs

  • Constraint

    Public visitors, staff, and administrators require different levels of access.

    Decision

    Clerk establishes staff identity while Supabase row-level security and server-side role checks enforce access again at the data boundary. This adds policy and test work, but avoids relying on hidden interface controls for security.

  • Constraint

    Database changes affect a live application workflow.

    Decision

    CI runs builds and automated tests before approval-gated production migrations. Releases take a little more coordination, but schema changes do not bypass review.

How it works

Next.js serves the public pages and staff tools. Clerk authenticates staff, Supabase stores positions and applications behind row-level security, Resend delivers workflow email, and automated unit, RLS, and browser tests protect the main paths.

Product screens

Inspire Columbia's production homepage

Results and takeaways

  • Recruiting works better as one connected workflow: staff can publish a position, collect structured applications, review documents, record decisions, and contact applicants from the same system.
  • Row-level security tests catch authorization mistakes that interface-level role checks cannot.
  • Audit history, reviewer notes, and confirmation steps make consequential staff actions easier to understand and recover from.