Express-based license management API with Prisma (MySQL). Developers authenticate via Bearer API keys; end users authenticate per-application (KeyAuth-like model).
npm install # .env PORT=3000 DATABASE_URL="mysql://USER:PASSWORD@HOST:PORT/DATABASE" npm run dev:db:generate npm run dev:db:push npm start
POST /api/auth/login POST /api/auth/register POST /api/auth/sync
POST /api/apps/create GET /api/apps/list POST /api/apps/delete
POST /api/licenses/create GET /api/licenses/list?appId=... POST /api/licenses/assign POST /api/licenses/redeem DELETE /api/licenses/delete PATCH /api/licenses/reset-hwid
GET /api/users/me GET /api/users/list (admin) GET /api/users/:id/licenses?appId=...
GET /api/dashboard/metrics
# Register
curl -s -X POST http://localhost:3000/api/auth/register -H "Content-Type: application/json" -d '{"email":"user@example.com","password":"pass","firstName":"A","lastName":"B"}'
# List products
curl -s http://localhost:3000/api/products/list -H "Authorization: Bearer YOUR_API_KEY_HERE"
# Create 3 license keys
curl -s -X POST http://localhost:3000/api/licenses/create -H "Authorization: Bearer YOUR_API_KEY_HERE" -H "Content-Type: application/json" -d '{"count":3,"productId":"PRODUCT_ID"}'src/
server.js Express app and route mounting
prisma/schema.prisma Prisma schema (MySQL)
lib/
prisma.js PrismaClient singleton
auth.js API-key auth helper (Bearer token)
middleware/
requireAuth.js Enforces Bearer API-key auth
requireAdmin.js Requires role === 'admin'
requireDevAccessToApp.js Verifies developer has access to an app
api/
auth/ login, register, sync
apps/ create, list, delete (developer)
products/ create, list, delete
licenses/ create, list, assign, redeem, delete, reset-hwid
users/ me, list, [id]/licenses
dashboard/ metrics