Implemented MVP with all core features:
- Browse 50 newest policies on load with null filtering
- Click row to view details in slide-over sheet
- JSON detection and pretty formatting
- Search with real-time filtering
- Badge colors for policy types (Security=red, Compliance=blue, Config=gray, App=outline)
- Navigation consolidated to 'Policy Explorer'
New components:
- PolicyTable.tsx - table with badges and hover effects
- PolicySearchContainer.tsx - search state management
- PolicyDetailSheet.tsx - JSON detail view with formatting
- PolicyExplorerClient.tsx - client wrapper
- lib/utils/policyBadges.ts - badge color mapping
Updated:
- lib/actions/policySettings.ts - added getRecentPolicySettings() with null filtering
- app/(app)/search/page.tsx - converted to Server Component
- config/nav.ts - renamed Search to Policy Explorer, removed All Settings
- components/search/EmptyState.tsx - updated messaging
Tasks complete: 36/47 (MVP ready)
- Phase 1-7: All critical features implemented
- Phase 8: Core polish complete (T041), optional tasks remain
TypeScript: ✅ No errors
Status: Production-ready MVP
|
||
|---|---|---|
| .github | ||
| .specify | ||
| .vscode | ||
| app | ||
| components | ||
| config | ||
| lib | ||
| public | ||
| specs | ||
| .gitignore | ||
| components.json | ||
| debug-db.ts | ||
| Dockerfile | ||
| drizzle.config.ts | ||
| eslint.config.mjs | ||
| fix-constraint.ts | ||
| kirimase.config.json | ||
| next-auth.d.ts | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
TenantPilot
A multi-tenant SaaS application built with Next.js, Azure AD authentication, and Drizzle ORM.
Architecture Principles
This project follows strict architectural principles defined in our Constitution:
- Server-First: Next.js App Router with Server Actions, no client-side fetches
- Type Safety: TypeScript strict mode mandatory
- Database: Drizzle ORM exclusively
- UI: Shadcn UI components with Tailwind CSS
- Auth: Azure AD multi-tenant authentication
Getting Started
First, install dependencies:
npm install
Copy environment variables:
cp .env.example .env
Fill in your Azure AD credentials and database URL.
Run database migrations:
npm run db:push
Start the development server:
npm run dev
Open http://localhost:3000 to see the application.
Development
- Use Server Actions for all data operations
- Follow TypeScript strict mode requirements
- Use Shadcn UI for new components
- Test with Azure AD authentication
Deployment
Build the Docker image:
docker build -t tenantpilot .
Run with environment variables:
docker run -p 3000:3000 --env-file .env tenantpilot