FinanceSaaS · Web application · API/backend · Communication platform
Trading community platform rescue and refactor
We rescued a subscription trading-community platform that a previous developer had left unable to log users in. We rebuilt the missing APIs, fixed billing, uploads and real-time features, and cut page-load API traffic from hundreds of calls to one.
Problem
The platform was effectively broken when it arrived: login and signup failed, several backend endpoints the frontend called did not exist, image uploads failed, and the app was too slow to launch.
Solution
The team debugged the auth flow, built the missing endpoints for registration checks, the Stripe billing portal and post categories, and fixed session, cookie and CSRF handling between the backend and the forum engine. It repaired uploads through the forum's S3 plugin and a frontend proxy, patched a forum fork that demoted password-expired users to guests, added socket-based real-time posts and chat, and enforced one-time free trials in Stripe. A performance refactor with Zustand stores and cached tokens cut the API calls per interaction from hundreds to one. Delivery ran through reviewed pull requests with daily written updates.
Key features
- Working signup, login and email verification flow
- Stripe subscriptions, billing portal redirects and one-time free-trial enforcement
- Image uploads to S3 through the forum engine
- Real-time new posts, chat messages and unread counts over sockets
- Patched forum-engine fork deployed to EC2
- Frontend state stores that removed duplicate API calls
- In-place rendering of topics and profiles instead of full-page reloads
- Production incident response and redeploys
Tech stack
- CSRF tokens
- CloudFront
- Docker
- GitHub
- MongoDB
- Netlify
- Next.js
- Node.js
- NodeBB
- NodeBB s3-uploads plugin
- Quill
- React
- React Query
- Redis
- Socket.io
- Stripe
- Stripe Connect
- Twilio
- TypeScript
- Zod
- Zustand
- docker-compose
Services behind this project
Read more
- 01SEP
Rescuing an inherited codebase: what we check in the first two weeks
A recurring kind of engagement: a product that already exists, a broken handover and a deadline that hasn't moved. Here's the checklist we run before we touch a line of code.
Engineering4 min read
- 18AUG
How we staff an engagement: engagement lead, project manager, technical lead
The people on a project matter as much as the stack. Here's how we size a team from a shared bench, with a named engagement lead, project manager and technical lead on every engagement.
Process3 min read