LicenseChain Architecture

LicenseChain uses a unified architecture where all components share the same database and API, ensuring data consistency across the entire ecosystem.

๐Ÿ—๏ธ System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    LicenseChain Ecosystem                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                     โ”‚                     โ”‚
        โ–ผ                     โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Website    โ”‚      โ”‚  Dashboard   โ”‚      โ”‚     API      โ”‚
โ”‚  (Marketing) โ”‚      โ”‚  (Admin UI)  โ”‚      โ”‚  (Backend)   โ”‚
โ”‚              โ”‚      โ”‚              โ”‚      โ”‚              โ”‚
โ”‚ - Blog       โ”‚      โ”‚ - Admin UI   โ”‚      โ”‚ - REST API   โ”‚
โ”‚ - Help       โ”‚      โ”‚ - Analytics  โ”‚      โ”‚ - Auth       โ”‚
โ”‚ - Careers    โ”‚      โ”‚ - Management โ”‚      โ”‚ - Validation โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚                     โ”‚                     โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ”‚
                             โ”‚ 
                             โ”‚
                             โ–ผ
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚   PostgreSQL   โ”‚
                    โ”‚                โ”‚
                    โ”‚ - Users        โ”‚
                    โ”‚ - Licenses     โ”‚
                    โ”‚ - Apps         โ”‚
                    โ”‚ - Products     โ”‚
                    โ”‚ - Webhooks     โ”‚
                    โ”‚ - Analytics    โ”‚
                    โ”‚ - Verification โ”‚
                    โ”‚   Rules        โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                             โ–ฒ
                             โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                     โ”‚                     โ”‚
        โ–ผ                     โ–ผ                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   27+ SDKs   โ”‚      โ”‚  Integrations  โ”‚      โ”‚   Webhooks   โ”‚
โ”‚  (All Langs) โ”‚      โ”‚  (Stripe, etc) โ”‚      โ”‚   (Events)   โ”‚
โ”‚              โ”‚      โ”‚                โ”‚      โ”‚              โ”‚
โ”‚ - NodeJS     โ”‚      โ”‚ - Stripe       โ”‚      โ”‚ - Events     โ”‚
โ”‚ - Python     โ”‚      โ”‚ - Resend       โ”‚      โ”‚ - Callbacks  โ”‚
โ”‚ - Go         โ”‚      โ”‚ - Cloudflare   โ”‚      โ”‚ - Logs       โ”‚
โ”‚ - Rust       โ”‚      โ”‚                โ”‚      โ”‚              โ”‚
โ”‚ - ...        โ”‚      โ”‚                โ”‚      โ”‚              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ—„๏ธ Database Architecture

Shared Database

All three main components (API, Dashboard, Website) connect to the same PostgreSQL database:

  • Single Source of Truth: One database for all data
  • Unified Schema: All components use identical Prisma schema
  • Data Consistency: Changes are immediately visible across all apps
  • Coordinated Migrations: Schema changes must be synchronized

Schema Structure

Shared Models (All Repos)

  • User - Central user model with authentication
  • License - License keys and management

Dashboard Models

  • Account - NextAuth OAuth accounts
  • Session - NextAuth sessions
  • App - Dashboard applications
  • ApiUsageLog - API usage tracking

API Models

  • Product - API products for sale
  • Webhook - Webhook configurations
  • WebhookLog - Webhook delivery logs
  • VerificationRule - Custom verification rules for Enterprise tier

Website Models

  • BlogPost - Blog content
  • HelpArticle - Help center articles
  • CareerPosition - Job postings
  • FAQ - Frequently asked questions

๐Ÿ”— API Architecture

RESTful API

The LicenseChain API is a RESTful service built with Fastify:

  • Base URL: https://api.licensechain.app
  • Version: All endpoints prefixed with /v1
  • Authentication: JWT tokens or API keys
  • Format: JSON request/response
  • Rate Limiting: Built-in rate limiting
  • CORS: Configured for cross-origin requests

SDK Connection

All SDKs connect to the API:

SDK โ†’ https://api.licensechain.app/v1 โ†’ API โ†’ Database

Example:
  SDK calls: client.licenses.verify('KEY')
  SDK sends: POST /v1/licenses/verify
  API processes: Validates against database
  API returns: License status

๐Ÿ”„ Data Flow

License Creation Flow

1. User creates license via Dashboard
   โ†“
2. Dashboard calls API: POST /v1/licenses
   โ†“
3. API validates request and creates license in database
   โ†“
4. License available to:
   - Dashboard (via API or direct DB access)
   - SDKs (via API)
   - Website (via API, if public)

License Validation Flow

1. SDK calls: POST /v1/licenses/verify
   โ†“
2. API validates license key against database
   โ†“
3. API checks:
   - License exists
   - License is active
   - License not expired
   - Hardware ID matches (if required)
   โ†“
4. API returns license status and details

๐Ÿ” Authentication Flow

SDK โ†’ API

  1. SDK makes request to /v1/auth/login
  2. API validates credentials against database
  3. API returns JWT token
  4. SDK includes token in Authorization: Bearer <token> header
  5. API validates token on subsequent requests

Dashboard โ†’ Database

  1. User logs in via NextAuth
  2. NextAuth creates session in database
  3. Dashboard reads user data from database
  4. Dashboard can also call API endpoints

๐Ÿ“Š Deployment Architecture

Production

  • Hosting: DigitalOcean App Platform
  • CDN: Cloudflare
  • Database: PostgreSQL (Managed)
  • Email: Resend.com
  • Payments: Stripe

CI/CD

  • Version Control: GitHub
  • CI/CD: GitHub Actions
  • Deployment: Automatic on push
  • Testing: Automated tests in CI

๐Ÿ› ๏ธ Technology Stack

Backend

  • Fastify (Node.js)
  • TypeScript
  • Prisma ORM
  • PostgreSQL
  • JWT Authentication

Frontend

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • NextAuth.js

Infrastructure

  • DigitalOcean
  • Cloudflare
  • GitHub Actions
  • Docker
  • Vercel (Docs)

โš ๏ธ Important Notes

  • All SDKs automatically prepend /v1 to API endpoints
  • API endpoints are versioned for backward compatibility