← Return to ledger
Specimen SheetNo. RP-2025-0003

Bizboard

a marketplace built for builders

Plate III

fig. 1. balance. Fair exchange, weighed.

Catalog of Work · R. Poudel, Collector · Lawrence, Kansas

No. RP-2025-0003

Bizboard

a marketplace built for builders

Collected
CodePath Web 102, Aug 2025
Locality
remote
Collectors
R. Poudel (solo)
Method
8-week course capstone
Substrate
React · Supabase · PostgreSQL · CSS
Status
live

Field Notes

For the CodePath final I wanted something with real complexity, not a todo app. A service marketplace forces the full set: auth, ownership, real-time interaction, filtering, and per-user dashboards.

Supabase was the right call for a solo build. PostgreSQL underneath meant proper relational modeling, with listings, users, comments, and upvotes as linked tables. Row-level security meant ownership rules are declared in SQL policy, not scattered through React components.

The dashboard was the hardest piece: aggregating upvotes, comment counts, and activity per listing in near-real-time. I used Supabase's real-time subscriptions for live comment feeds and polling for dashboard metrics, a deliberate trade between freshness and complexity.

Dissection

A React SPA communicating directly with Supabase. RLS policies in PostgreSQL enforce data ownership; real-time subscriptions power the comment feed.

React SPA
Listing creation, browsing, search, filtering, comments, and the personal activity dashboard.
PostgreSQL via Supabase
Relational schema: users, listings, comments, upvotes. Foreign keys and joins power the dashboard.
Row-Level Security
Declarative SQL policies scope every query to its owner. No auth checks in component code.
Supabase Realtime
WebSocket subscriptions on the comments table; new comments appear for all viewers without polling.

Annotations

ann. 2025. RLS takes a while to click. You are writing security as database policy, not application logic. Once it does, it's elegant. · R.P.
ann. 2025. Designing for real-time from the start is far easier than retrofitting it. Adding live comments late forced a significant state refactor. · R.P.