What I learned
Real-time apps look magical until you build one — then you realize it’s just a websocket subscription and a server that knows how to broadcast row changes. Supabase made that trivial enough that I could focus on the UX of optimistic updates: making the UI feel instant even when the database hasn’t confirmed yet.
I also got my first practical taste of useContext for sharing state across deeply-nested components without prop-drilling — and learned when not to reach for it.
What I did
- Built a fact-sharing message board: users submit facts, upvote/downvote based on perceived truthfulness, cite sources, and filter by category.
- Wired Supabase auth for login + per-user contribution attribution.
- Used Supabase real-time subscriptions to push live updates to all connected clients.
- Implemented optimistic UI updates so votes and submissions appear instantly.
- Added React Router for category and view navigation.
What I shipped
A live multi-user message board at https://shakewell-didyouknow.netlify.app/ — and a concrete grasp of how real-time apps actually work under the hood.