An admin panel for your Next.js app
Next.js apps usually ship without any admin area. Instead of building /admin pages, call VibeAdmin from a server action or route handler when users sign up and when something important happens.
How it works with Next.js
Server-side calls to the REST API (or the JavaScript SDK). Keep the API key in a server environment variable; never expose it to the browser.
- Two small server-side calls: users and events
- No admin pages, auth middleware or tables to build
- Works with any auth library, including Auth.js and Better Auth
- Use the Get started prompt to have your agent wire it up
Set it up
- 1
Add the key
Create an API key and add VIBEADMIN_API_KEY to .env.local and your hosting provider's environment.
- 2
Send users on signup
Call the users endpoint from the code path that creates a user.
- 3
Track events
Call the events endpoint for actions you care about, such as workflow.created or payment.succeeded.
Code
Upsert a user from a server action
"use server";
export async function onSignup(user: { id: string; email: string; name?: string }) {
await fetch("https://www.easy-admin.solutions/v1/users", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.VIBEADMIN_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ id: user.id, email: user.email, name: user.name }),
});
}Track an event from a route handler
// app/api/run/route.ts
export async function POST(req: Request) {
const { userId } = await req.json();
// ... do the work ...
await fetch("https://www.easy-admin.solutions/v1/events", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.VIBEADMIN_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ name: "workflow.executed", userId }),
});
return Response.json({ ok: true });
}Related: API reference, MCP server, pricing.
Give your app the admin it forgot
Free for up to 500 users. Connect Supabase, push users with the API, or paste one prompt into your coding agent.