Account portal
Manage your account at https://portal.hackersidekick.com: Clerk sign-in, subscription and Stripe checkout, usage, and API key creation (where your plan allows).
The portal is the Hacker Sidekick control plane for account tasks, built as a Next.js app. Public marketing lives on hackersidekick.com; the portal is for signed-in customers.
What you can do in the UI
- Sign in - Same Clerk app as the rest of the product. The desktop browser sign-in uses this origin (see Connection and sign-in).
- Dashboard - One scrolling page with anchors, for example:
#portal-overview- account summary#portal-plans- plan tiers#portal-usage- usage and range#portal-billing- billing#portal-settings- account;/account/settingsembeds Clerk UserProfile
- Legacy routes - e.g.
/account/billingcan redirect into hash routes on the main dashboard.
Plans and billing
- Tiers - e.g. Free, Starter, Pro, Enterprise, with live prices from public
GET /api/v1/billing/priceswhen configured. - Checkout - Stripe Checkout via
POST /api/v1/billing/checkout. - Customer Portal - Stripe Customer Portal (payment methods, invoices, downgrades) via
POST /api/v1/billing/portal.
Hosting - The live portal runs at the URL above, with Clerk and Stripe configuration behind the scenes.
Usage, dashboard, and billing detail
The portal shows a unified dashboard for overview, plans, usage (UTC daily bars when usage_daily_rollups is populated), and billing. Data is session-scoped to the signed-in Clerk user.
- Period totals - From the account and plan configuration; included tokens depend on your tier (e.g. Free, Starter, Pro).
- Daily chart - If daily rows are missing, the API may return
source: "unavailable"for the series while still showing period totals. - Presets - Usage is requested with preset ranges (e.g. 30, 60, 90, 365, all), not arbitrary
from/toin all cases.
Automation may call the model endpoint for usage and quotas (with a bearer key or JWT) in addition to what you see in the browser.
Billing - New subscription or upgrade through Stripe Checkout; ongoing management through the Stripe Customer Portal, opened from the portal.
Webhooks (server-only, not for clients)
| Source | Path (illustrative) | Purpose |
|---|---|---|
| Stripe | POST /api/webhooks/stripe | Invoices, subscriptions, etc. |
| Clerk | POST /api/webhooks/clerk | User sync to the app database |
Do not call these from the desktop app. They are server-to-server with signature verification.
Portal HTTP API (Clerk session)
These Next.js Route Handlers run on the same host as the UI, https://portal.hackersidekick.com in production. They expect a Clerk session (cookies) or a Bearer token the server can validate. Interactive use in a browser is the normal path; scripted access may require additional setup from your administrator.
For humans, use the site in a browser at portal.hackersidekick.com. These routes support the SPA and scripts.
| Kind | Method | Path | Notes |
|---|---|---|---|
| Liveness | GET | /api/health | Readiness and orchestration for the portal service. |
| Public pricing | GET | /api/v1/billing/prices | Plan cards. |
| User | GET | /api/v1/me | Session; ensure DB user row. |
| Usage | GET | /api/v1/usage/daily?range=... | Preset range values. |
| Checkout | POST | /api/v1/billing/checkout | Stripe Checkout session. |
| Customer portal | POST | /api/v1/billing/portal | Stripe Customer Portal URL. |
| API keys | POST | /api/v1/api-keys | Create; plaintext key shown once at creation. List and revoke in the portal account UI as your plan allows. |
Webhooks (again): POST /api/webhooks/stripe and POST /api/webhooks/clerk are for Stripe/Clerk servers only.
