CHI
Press Ctrl K for menu

Product engineering 2024

Legal One

A consultation platform that needs to keep private conversations separate while supporting different account permissions.

3 rolesOne permission model
My role
Backend lead on a two-person team: data model, GraphQL API, authorization, and real-time messaging.
Outcome
A deployed workflow for finding a lawyer and exchanging consultation messages.
Context
Validated with 50+ lawyer profiles and 100+ client accounts in a seeded demo environment.
  • Next.js
  • Prisma
  • MongoDB
  • GraphQL
  • Apollo
  • Socket.IO
legalone.vercel.app
Screenshot of Legal One

Problem

Connect clients with lawyers while giving administrators the tools to manage the platform. Each role needs different permissions, and private consultation messages must stay within the intended conversation.

My contribution

I led the backend on a two-person team. My work covered the Prisma data model, GraphQL schema and resolvers, authentication, role-based authorization, and real-time messaging. I also worked on frontend integration and deployment.

Technical decisions

Socket.IO conversations are isolated per session and encrypted in transit. Role-based checks distinguish client, lawyer, and administrator actions; administrative access does not include reading private consultation messages.

Prisma connects the MongoDB data model to an Apollo GraphQL API. Resolvers request the fields needed by each view, limiting the data returned for lawyer search and consultation history.

Results

The platform is deployed, with the consultation flow validated against a demo environment seeded with 50+ lawyer profiles and 100+ client accounts. Those counts describe test data, not active customers or production adoption.

More projects