feat: user auth, API keys, Stripe billing, and dashboard scoping

- NextAuth v5 credentials auth with registration/login pages
- API key CRUD (create, list, revoke) with secure hashing
- Stripe checkout, webhooks, and customer portal integration
- Rate limiting per subscription tier
- All dashboard API endpoints scoped to authenticated user
- Prisma schema: User, Account, Session, ApiKey, plus Stripe fields
- Auth middleware protecting dashboard and API routes

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-Claude)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Vectry
2026-02-10 15:37:49 +00:00
parent 07cf717c15
commit 61268f870f
33 changed files with 2247 additions and 57 deletions

View File

@@ -40,7 +40,26 @@ export default function GettingStartedPage() {
</a>
)
</li>
<li>An API key for authentication</li>
<li>
An AgentLens account {" "}
<a
href="/register"
className="text-emerald-400 hover:underline"
>
sign up here
</a>{" "}
if you haven{"'"}t already
</li>
<li>
An API key (create one in{" "}
<a
href="/dashboard/keys"
className="text-emerald-400 hover:underline"
>
Dashboard &rarr; API Keys
</a>
)
</li>
</ul>
</section>
@@ -62,6 +81,23 @@ export default function GettingStartedPage() {
<h2 className="text-2xl font-semibold mb-4">
Step 2: Initialize AgentLens
</h2>
<p className="text-neutral-400 leading-relaxed mb-4">
Sign up at{" "}
<a
href="https://agentlens.vectry.tech/register"
className="text-emerald-400 hover:underline"
>
agentlens.vectry.tech
</a>
, then go to{" "}
<a
href="/dashboard/keys"
className="text-emerald-400 hover:underline"
>
Dashboard &rarr; API Keys
</a>{" "}
to create your key. Pass it to the SDK during initialization:
</p>
<h3 className="text-lg font-medium text-neutral-200 mb-2">Python</h3>
<CodeBlock title="main.py" language="python">{`import agentlens