feat: implement naming convention, deployment automation, and infrastructure updates

- Add comprehensive naming convention (provider-region-resource-env-purpose)
- Implement Terraform locals for centralized naming
- Update all Terraform resources to use new naming convention
- Create deployment automation framework (18 phase scripts)
- Add Azure setup scripts (provider registration, quota checks)
- Update deployment scripts config with naming functions
- Create complete deployment documentation (guide, steps, quick reference)
- Add frontend portal implementations (public and internal)
- Add UI component library (18 components)
- Enhance Entra VerifiedID integration with file utilities
- Add API client package for all services
- Create comprehensive documentation (naming, deployment, next steps)

Infrastructure:
- Resource groups, storage accounts with new naming
- Terraform configuration updates
- Outputs with naming convention examples

Deployment:
- Automated deployment scripts for all 15 phases
- State management and logging
- Error handling and validation

Documentation:
- Naming convention guide and implementation summary
- Complete deployment guide (296 steps)
- Next steps and quick start guides
- Azure prerequisites and setup completion docs

Note: ESLint warnings present - will be addressed in follow-up commit
This commit is contained in:
defiQUG
2025-11-12 08:22:51 -08:00
parent 9e46f3f316
commit 8649ad4124
136 changed files with 17251 additions and 147 deletions
+53
View File
@@ -0,0 +1,53 @@
import { IdentityClient } from './identity';
import { EResidencyClient } from './eresidency';
import { IntakeClient } from './intake';
import { FinanceClient } from './finance';
import { DataroomClient } from './dataroom';
export class ApiClient {
public readonly identity: IdentityClient;
public readonly eresidency: EResidencyClient;
public readonly intake: IntakeClient;
public readonly finance: FinanceClient;
public readonly dataroom: DataroomClient;
constructor(baseURL?: string) {
// Initialize service clients - each manages its own axios instance
this.identity = new IdentityClient();
this.eresidency = new EResidencyClient();
this.intake = new IntakeClient();
this.finance = new FinanceClient();
this.dataroom = new DataroomClient();
}
setAuthToken(token: string): void {
if (typeof window !== 'undefined') {
localStorage.setItem('auth_token', token);
}
// Update all service clients
this.identity.setAuthToken(token);
this.eresidency.setAuthToken(token);
this.intake.setAuthToken(token);
this.finance.setAuthToken(token);
this.dataroom.setAuthToken(token);
}
clearAuth(): void {
// Clear tokens in all service clients
this.identity.clearAuthToken();
this.eresidency.clearAuthToken();
this.intake.clearAuthToken();
this.finance.clearAuthToken();
this.dataroom.clearAuthToken();
}
}
// Singleton instance
let apiClientInstance: ApiClient | null = null;
export function getApiClient(): ApiClient {
if (!apiClientInstance) {
apiClientInstance = new ApiClient();
}
return apiClientInstance;
}