BrightChain Auth + Energy System Implementation Plan
Goal
Build minimal auth system with energy accounts following DigitalBurnbag patterns
What We Need
1. User Model (Member-based)
- Use existing Member from brightchain-lib
- Store in MemberDocument
- Link to EnergyAccount
2. Auth Flow
- Register: Create Member + EnergyAccount with trial credits
- Login: JWT with Member ID
- Profile: Get Member + EnergyAccount data
3. API Endpoints
POST /api/auth/register
POST /api/auth/login
GET /api/auth/profile
GET /api/energy/balance
GET /api/energy/transactions
4. Frontend Pages
/register - Create account
/login - Sign in
/dashboard - View energy balance, profile
Implementation Steps
Step 1: Auth Service (30 min)
- Implement JWT signing/verification
- Use ecies-lib Member for identity
- Store Member in memory (SimpleStore)
Step 2: User Controller (30 min)
- Register endpoint (create Member + Energy Account)
- Login endpoint (verify + return JWT)
- Profile endpoint (get Member + Energy data)
Step 3: Energy Controller (30 min)
- Balance endpoint
- Transaction history endpoint
- Link to existing EnergyAccount/Ledger
Step 4: Frontend Auth (1 hour)
- Register form
- Login form
- Dashboard with energy display
- Use existing brightchain-react
Step 5: Integration (30 min)
- Wire up API routes
- Test end-to-end
- Document usage
Total Time: ~3 hours
Files to Create/Update
API (brightchain-api)
src/services/
auth.service.ts # NEW - Auth with Member
energy.service.ts # NEW - Energy operations
src/controllers/api/
auth.ts # NEW - Auth endpoints
energy.ts # NEW - Energy endpoints
user.ts # UPDATE - Use new auth
src/middlewares/
authenticateToken.ts # UPDATE - Verify JWT
src/routers/
api.ts # UPDATE - Add routes
Frontend (brightchain-react)
src/app/pages/
Register.tsx # NEW
Login.tsx # NEW
Dashboard.tsx # NEW
src/app/services/
auth.service.ts # NEW
energy.service.ts # NEW
src/app/contexts/
AuthContext.tsx # NEW
Next Action
Ready to implement? I’ll build:
- Auth service with Member + JWT
- Energy service with account access
- API controllers
- Basic React pages
Say “go” and I’ll start building!