Employee Portal
The employee application lives under/portal. It is designed for a worker who should be able to receive salary, understand where it came from, and spend or off-ramp funds without touching raw chain tooling.
Live routes
| Route | Purpose | Primary data sources |
|---|---|---|
/portal | Balance overview, last payment, quick actions, streaming-salary state | employees, payment_items, employer lookup |
/portal/payments | Full payment history with decoded memo details | payment_items, payroll_runs, Tempo explorer links |
/portal/card | Card display, live transaction history, and bank transfer entry point | Bridge-backed card state, /api/employees/[id]/card, /api/employees/[id]/offramp |
/portal/card/activate | Card issuance and activation handoff | /api/employees/[id]/card |
/portal/wallet | Wallet identity and linked account details | employees, Privy wallet state |
/portal/settings | Profile, bank connection entry, notification toggles, security controls | Privy user, employee record, employer lookup |
/portal/settings/offramp | Bank account and off-ramp preferences | employee off-ramp routes |
Salary experience
The home portal route distinguishes between standard payroll and streaming payroll:- Standard payroll shows the most recent paid amount.
- Streaming payroll shows a live ticker driven by
StreamVestingstate and the employee compensation record.
Payment history
The payments route exposes:- Amount
- Status
- Decoded memo context
- Transaction hash
- Tempo explorer deep link
- Settlement time when available
payment_items and payroll_runs.
Card and bank off-ramp
The current card route combines two concerns:- Card visibility and controls
- Off-ramp to bank through the Bridge-backed MPP endpoint
GET /api/employees/[id]/cardPOST /api/employees/[id]/cardPOST /api/employees/[id]/offramp
Security and profile
- Profile fields persist through
PATCH /api/employees/[id]. - Passkey linking uses Privy directly from the settings screen.
- Notification preferences remain browser-local by design in the current build.