Your Hybrid AI Label Manager
How to run your label from one dashboard.
Your session lasts 7 days (or 5 minutes if "Remember me" was unchecked). After that, you'll be redirected to sign in again.
AURA has three main regions:
| Surface | Route | What you do there |
|---|---|---|
| Dashboard | / |
Today's priorities at a glance |
| AI Assistant | /ai |
Generate copy and strategy with AI |
| Artists | /artists |
Manage your roster |
| Releases | /releases |
Track your release pipeline |
| Contracts | /contracts |
Manage rights and agreements |
| Demo Inbox | /demos |
Review artist submissions (auto-ingested via email webhook) |
| Settings | /settings |
Configure AI Router, data export/import, team access |
| Landing Page | / (public) |
Public — product info, features, Notify Me |
| Login | /login (public) |
Authenticate to access your label |
| Showcase | /showcase (public) |
nk-lib component gallery |
| Privacy Policy | /privacy (public) |
Legal — data handling |
| Terms of Service | /terms (public) |
Terms of use |
| Investor Deck | /investors (public) |
Investor presentation |
AURA has five layers that work together, routed through a Cloudflare Workers API:
┌────────────────────────────────────────────────────────────────┐
│ React SPA (nk-lib UI) │
│ auralabels.app │
└──────────────────────────┬─────────────────────────────────────┘
│ JWT token
▼
┌────────────────────────────────────────────────────────────────┐
│ Cloudflare Workers API (edge) │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌────────────────┐ │
│ │ Artists │ │ Releases │ │ Contracts │ │ AI (provider │ │
│ │ CRUD │ │ CRUD │ │ CRUD │ │ agnostic) │ │
│ └───────────┘ └───────────┘ └───────────┘ └────────────────┘ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Demos │ │ Files/R2 │ │ Webhook │ │
│ │ CRUD │ │ storage │ │ (public) │ │
│ └───────────┘ └───────────┘ └───────────┘ │
└──────────────────────────┬─────────────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌──────────┐ ┌──────────┐
│ Neon Postgres │ │Cloudflare│ │Cloudflare│
│ (Drizzle ORM) │ │ KV │ │ R2 │
│ Multi-tenant │ │ (cache, │ │ (files, │
│ data storage │ │ limits) │ │ artwork) │
└──────────────────┘ └──────────┘ └──────────┘
| Surface | API Endpoints |
|---|---|
| Dashboard | /api/artists, /api/releases, /api/contracts, /api/demos |
| Artists | /api/artists |
| Releases | /api/releases |
| Contracts | /api/contracts, /api/files |
| Demo Inbox | /api/demos, /api/webhook/:uuid (public intake) |
| AI Assistant | /api/ai/generate, /api/ai/chat |
| Settings | /api/admin (export, import, clear data) |
Demos arrive automatically via Elastic Email webhook — no Make.com or external services needed:
Artist sends email → Elastic Email processes →
POST /api/webhook/:uuid?secret=WEBHOOK_SECRET
1. Parse sender email, subject, body, attachments
2. Extract track title from subject patterns
3. Upload MP3 files to Cloudflare R2 (auto-stored)
4. Insert into Demos table with attachment URL
5. Response: { status: "ok", id, attachmentUrl }
Files (artwork, contract PDFs, demo MP3s) are stored in Cloudflare R2 and served through /api/files/:key. Uploads require authentication; served files are publicly cacheable with a 1-year TTL.
| Layer | What It Does |
|---|---|
| JWT Authentication | HS256-signed tokens with 24h expiry. Tokens carry username, role, and tenantId. |
| Bcrypt Hashing | Timing-safe password comparison prevents username enumeration attacks. |
| Rate Limiting | IP-based rate limiting on login (20 attempts / 15 min). |
| Multi-Tenant Isolation | Every query is scoped by tenantId. Super admins see all; label users see only their data. |
| Webhook Secret | Timing-safe XOR verification on incoming demo webhooks. |
The Dashboard is your operational cockpit. It shows everything that needs your attention today in a vertical stack of collapsible card sections.
All sections use NkReveal for animated expand/collapse — keep what matters open, collapse the rest.
Navigate to Artists (/artists). Each artist card shows name, avatar (colored initial), genre tags, and contract status.
Navigate to Releases (/releases). Each release shows catalog number, title, artist, type (EP / Album / Single / Compilation), release date, and artwork thumbnail.
| Type | Description |
|---|---|
| EP | Extended play — 2-5 tracks |
| Album | Full-length release — 6+ tracks |
| Single | Single track release |
| Compilation | Various artists collection |
Navigate to Contracts (/contracts). Each contract shows artist, title, status (draft / signed / expired), and linked release.
Demos arrive automatically via the public webhook endpoint (/api/webhook/:uuid) connected to Elastic Email. When an artist emails the label, Elastic Email forwards the message to AURA which:
No Make.com, no external configuration — everything happens in the Worker.
/demos)| Status | Meaning | Next Step |
|---|---|---|
| New | Unreviewed | Open, listen, evaluate |
| Listening | Currently evaluating | Finish your review |
| Interested | Want to follow up | Contact the artist |
| Rejected | Not a fit | Deleted permanently |
| Accepted | Signing the artist | Create artist profile + contract |
Navigate to Promo Campaigns (/promo) to plan and track marketing campaigns for your releases.
Navigate to Calendar (/calendar) to manage tasks and deadlines across your label.
Navigate to Revenue (/revenue) to track earnings, payouts, and performance across artists and releases.
The AI Assistant generates copy and strategy wired to your actual label data.
/ai)In Settings, you can configure which AI provider to use. AURA supports: OpenRouter (default), OpenAI, Anthropic, Groq, Together, DeepSeek, Google AI Studio, and Workers AI (fallback). Your API key is stored server-side, never exposed to the frontend.
The Content Engine generates platform-specific content (Instagram captions, Spotify bios, press releases, etc.) with automatic character limit enforcement.
Navigate to Settings (/settings). Configure your label.
Use the User Menu (top-right) or Settings → Session card.
Every label's data is partitioned by tenantId. Users only see their own label's data. Super admins can access all tenants.
/api/files/:key with 1-year cache TTL| Entity | Statuses |
|---|---|
| Artists | — (single entity, no workflow status) |
| Releases | — (single entity, release date tracked) |
| Contracts | Draft, Signed, Expired |
| Demos | New → Listening → Interested → Rejected / Accepted |
AURA — Your Hybrid AI Label Manager. Built with nk-lib design system.
Brand mark: orange arc + geometric A. Type: Space Grotesk + Geist.