Independent product
RateEverything
A cross-media rating product with separate user, admin, Node.js, and Python services sharing one PostgreSQL model.
- Role
- Independent Full Stack Engineer and product owner
- Timeframe
- Feb 2025 - Present
- Status
- Live
I built and deployed the system from Next.js and React administration through NestJS, FastAPI, PostgreSQL, automated tests, and cloud delivery.
Context
RateEverything explores a simple product question: why should film, television, music, books, podcasts, and other media live in unrelated rating histories? The product brings those categories into one account and one discovery model.
My role
I designed and built the system as an independent project. That includes the public Next.js experience, the React administration portal, the NestJS product API, the FastAPI administration API, the shared PostgreSQL schema, tests, CI, and deployment.
Service boundaries
The NestJS service owns the main product contract and uses Prisma for relational access. The FastAPI service gives administration workflows a small typed Python boundary through SQLModel. They share the database, so schema changes and ownership rules have to be deliberate; a second service is useful only when its responsibility is clearer than the coordination cost it introduces.
Quality and delivery
Jest covers service logic and Cypress covers important browser paths. The public site is deployed on Vercel. Requests under rating.ospreypulse.com/api are proxied to the NestJS API on GCP Cloud Run, with PostgreSQL hosted separately. Stable public paths keep provider URLs out of the browser-facing contract.
What I would strengthen next
The next step is stronger schema-compatibility checks between Prisma and SQLModel, richer moderation audit events, and contract tests around the proxy boundary. The product also needs clearer recommendation evaluation before recommendation features become a central claim.
Full-stack evidence
A visible path from client experience to production operations.
- 01User web
Next.js rating experience
Responsive discovery and rating flows use TypeScript, Zustand, explicit loading states, and indexable routes.
- 02Admin
React operations portal
A separate Vite application provides CRUD and moderation workflows for media records and supporting data.
- 03Node API
NestJS product service
Authenticated REST modules, validation, and Prisma own the main consumer-facing product contract.
- 04Python API
FastAPI administration service
SQLModel and typed Python endpoints support focused administration workflows against the same database.
- 05Data
Shared PostgreSQL model
Both services coordinate around one relational schema instead of duplicating the core media domain.
- 06Delivery
Tests and multi-cloud deployment
Jest and Cypress cover key paths; the public frontend runs on Vercel and the API runs on GCP Cloud Run.
System flow
The boundaries that kept product work, data, and external side effects understandable.
- 01
User and admin clients
Next.js and Vite/React present different workflows over shared media concepts.
- 02
NestJS and FastAPI
Service boundaries follow consumer and administration responsibilities.
- 03
PostgreSQL
Prisma and SQLModel map to one durable relational source.
- 04
CI and deployment
Tests run before independent frontend and API releases.
What shipped
- Shipped a live cross-media rating product and administration workflow.
- Demonstrated a practical Node.js and Python service split over one PostgreSQL domain.
- Kept public API traffic under the product domain through a Vercel proxy to Cloud Run.
Discuss this work
I can go deeper on the trade-offs, implementation boundaries, and what I would change today.