04 · Internal tool

Grevity CMSLicensing & Subscription Admin

A TypeScript admin CMS for plans, clients, subscriptions and signed pendrive-bound licence files.

Role
Full-stack developer – TypeScript monorepo, API, UI, licence cryptography
Type
Internal tool
Stack
NestJS · React · TypeScript
Grevity CMS dashboard with totals for plans, clients and subscriptions and recent activity lists

01

Problem

Grevity ships on hardware-locked pendrives, so the business needed one place to manage plans, clients, subscriptions and licence files.

02

What I built

I built a TypeScript monorepo admin CMS with a NestJS + Fastify API using Drizzle ORM on PostgreSQL (Supabase) and a React + Vite + Tailwind UI.

It covers plan lifecycle, clients with duplicate detection, plan assignment and renewals, an append-only audit log, and signed pendrive-bound .lic generation using HKDF, AES-GCM and RSA.

Security includes Argon2id logins, server-side sessions, CSRF protection and throttling, with Zod contracts shared end to end.

03

Stack

  • NestJS
  • React
  • TypeScript
  • PostgreSQL
  • Tailwind CSS

04

Screenshots

  1. Grevity CMS clients list with plan and status columns and phone numbers blurred
    02 · Clients list (phones blurred)
  2. Grevity CMS client detail page showing the current plan and plan history
    03 · Client with current plan and history
  3. Grevity CMS plan detail page with services, usage and audit entries
    04 · Plan detail, services, usage and audit
  4. Grevity CMS issued licences list bound to pendrive serial numbers, using a demo signing key
    05 · Issued licences (demo signing key)