Back to projects

SaaS

ClientNest

A secure, real-time customer portal that lets users manage accounts, subscriptions, billing, and support in one clear, self-service dashboard.

Tech Stack

Next.jsReactTypeScriptTailwind CSSNode.jsPostgreSQLRedisPrismaAWSDocker
ClientNest customer portal showing account dashboard

Project Overview

About ClientNest

ClientNest

Tech stack used: Next.js, React, TypeScript, Tailwind CSS, Node.js, PostgreSQL, Redis, Prisma, AWS, Docker

Project description

ClientNest is a self-service customer portal that enables account, subscription, billing, and support management with real-time updates. It reduces support overhead by enabling customers to self-serve and access account information instantly.

Challenges we tackled and how we handled them

  • Subscription State Complexity - Modeled the subscription lifecycle as a state machine, ensuring transitions trigger billing, access changes, and notifications reliably.

  • Real-time Support Ticketing - Built a WebSocket-based notification system for instant ticket updates and implemented email fallbacks for offline notifications.

  • Secure Payment Handling - Integrated Stripe for tokenized payments, storing only secure tokens and handling payment events through verified webhooks.

  • Multi-tenant Data Isolation - Enforced row-level security in PostgreSQL and validated tenant context in API middleware to guarantee strict data isolation.

Capabilities

Key Features

Account profile and settings management

Subscription plan selection and upgrades

Billing history and invoice downloads

Payment method management

Support ticket creation and tracking

Real-time notification center

Usage analytics dashboard

API key management for developers

Problem Solving

Challenges We Tackled

Every project presents unique challenges. Here's how we approached and solved the key technical hurdles.

1

Subscription State Complexity

Challenge

Managing various subscription states (trial, active, paused, cancelled, expired) with grace periods and proration.

Solution

Implemented a state machine pattern for subscription lifecycle management. Each state transition triggers appropriate events for billing, access control, and notifications.

2

Real-time Support Ticketing

Challenge

Customers expect instant updates on their support requests without refreshing the page.

Solution

Built a WebSocket-based notification system that pushes ticket updates, agent responses, and status changes in real time. Integrated with email for offline notifications.

3

Secure Payment Handling

Challenge

Storing and processing payment information requires PCI compliance and secure token management.

Solution

Integrated with Stripe for payment processing, storing only tokenized references. Implemented secure webhook handling for payment confirmations and failures.

4

Multi-tenant Data Isolation

Challenge

Each customer's data must be completely isolated while sharing the same infrastructure.

Solution

Row-level security policies in PostgreSQL ensure data isolation. API middleware validates tenant context on every request.

Technology

Built With Modern Stack

Next.js
React
TypeScript
Tailwind CSS
Node.js
PostgreSQL
Redis
Prisma
AWS
Docker

Interested in a similar solution?

We build custom software solutions tailored to your business needs. Let's discuss how we can help you achieve your goals.