Admin dashboard for managing Solid users and viewing account balances.
- User list with search, sorting, and pagination
- User detail view with balances and activity
- Public access (no authentication required for v1)
- Framework: Next.js 16 (App Router)
- Styling: Tailwind CSS
- Data Fetching: React Query (TanStack Query)
- UI Icons: Lucide React
- Node.js 20+
- npm or pnpm
npm installCreate a .env.local file:
NEXT_PUBLIC_SOLID_API_BASE_URL=http://localhost:5001For production, set this to your production backend URL.
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm start-
Install Vercel CLI (if not already installed):
npm i -g vercel
-
Deploy:
vercel
-
Set environment variables in Vercel dashboard:
NEXT_PUBLIC_SOLID_API_BASE_URL: Your production backend URL
Make sure to set these in your Vercel project settings:
NEXT_PUBLIC_SOLID_API_BASE_URL: Production backend URL (e.g.,https://api.solid.com)
├── app/
│ ├── (auth)/
│ │ └── login/ # Login page (redirects to /users)
│ ├── (dashboard)/
│ │ ├── layout.tsx # Dashboard layout with header
│ │ └── users/
│ │ ├── page.tsx # Users list
│ │ └── [id]/
│ │ └── page.tsx # User detail
│ ├── layout.tsx # Root layout with providers
│ └── page.tsx # Root page (redirects to /users)
├── components/
│ ├── auth-provider.tsx # Auth context (mocked for v1)
│ ├── providers.tsx # Global providers
│ ├── users-table.tsx # Users list table
│ ├── balances-card.tsx # User balances display
│ └── activity-list.tsx # User activity list
├── lib/
│ ├── api.ts # Axios instance
│ └── firebase.ts # Firebase config (unused in v1)
├── hooks/
│ └── use-debounce.ts # Debounce hook
└── types/
└── index.ts # TypeScript types
The frontend expects the following backend endpoints:
GET /accounts/v1/admin/users- List users with paginationGET /accounts/v1/admin/users/:id- Get user detailsGET /accounts/v1/admin/users/:id/balances- Get user balancesGET /accounts/v1/admin/users/:id/activity- Get user activity
Private