All checks were successful
Trigger Cloudarix Deploy / call-webhook (push) Successful in 2s
✨ New Features - Advanced data table with TanStack Table v8 + Server Actions - Server-side pagination (10/25/50/100 rows per page) - Multi-column sorting with visual indicators - Column management (show/hide, resize) persisted to localStorage - URL state synchronization for shareable filtered views - Sticky header with compact/comfortable density modes 📦 Components Added - PolicyTableV2.tsx - Main table with TanStack integration - PolicyTableColumns.tsx - 7 column definitions with sorting - PolicyTablePagination.tsx - Pagination controls - PolicyTableToolbar.tsx - Density toggle + column visibility menu - ColumnVisibilityMenu.tsx - Show/hide columns dropdown 🔧 Hooks Added - usePolicyTable.ts - TanStack Table initialization - useURLState.ts - URL query param sync with nuqs - useTablePreferences.ts - localStorage persistence 🎨 Server Actions Updated - getPolicySettingsV2 - Pagination + sorting + filtering + Zod validation - exportPolicySettingsCSV - Server-side CSV generation (max 5000 rows) 📚 Documentation Added - Intune Migration Guide (1400+ lines) - Reverse engineering strategy - Intune Reference Version tracking - Tasks completed: 22/62 (Phase 1-3) ✅ Zero TypeScript compilation errors ✅ All MVP success criteria met (pagination, sorting, column management) ✅ Ready for Phase 4-7 (filtering, export, detail view, polish) Refs: specs/004-policy-explorer-v2/tasks.md
71 lines
1.7 KiB
Markdown
71 lines
1.7 KiB
Markdown
# 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](.specify/memory/constitution.md):
|
|
|
|
- **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
|
|
|
|
## Documentation
|
|
|
|
- **[Intune Reverse Engineering Guide](docs/architecture/intune-migration-guide.md)**: Process for implementing Intune sync features using PowerShell reference
|
|
- **[PowerShell Reference Version](docs/architecture/intune-reference-version.md)**: Track PowerShell reference versions used for implementations
|
|
- **[Constitution](.specify/memory/constitution.md)**: Core architectural principles and development rules
|
|
|
|
## Getting Started
|
|
|
|
First, install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
Copy environment variables:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Fill in your Azure AD credentials and database URL.
|
|
|
|
Run database migrations:
|
|
|
|
```bash
|
|
npm run db:push
|
|
```
|
|
|
|
Start the development server:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
Open [http://localhost:3000](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:
|
|
|
|
```bash
|
|
docker build -t tenantpilot .
|
|
```
|
|
|
|
Run with environment variables:
|
|
|
|
```bash
|
|
docker run -p 3000:3000 --env-file .env tenantpilot
|
|
```
|