Skip to content

In Progress Features

Features currently under active development.

Terraform Keycloak Configuration

Status: 🚧 In Progress Started: 2025-10-15 Target: 2025-10-22 Owner: Development Team

Overview

Migrating Keycloak realm configuration from manual JSON imports to Terraform-managed infrastructure for reproducible, version-controlled setup across all environments.

What We're Building

  • Terraform Module: terraform/keycloak/ with realm, roles, clients configuration
  • Automation Script: scripts/setup-local-keycloak.sh for local dev setup
  • Documentation: Complete guide for local and production deployment

Implementation Status

Completed:

  • Research Terraform Keycloak provider (mrparkers/keycloak v4.3)
  • Create terraform/keycloak/ structure
  • Define realm configuration
  • Define roles (superadmin, institution_admin, resident, user)
  • Define frontend client (fastapi-frontend)
  • Define service account client (noumaris-admin-service)

🚧 In Progress:

  • Write and test setup-local-keycloak.sh script
  • Test on fresh Docker environment
  • Update CLAUDE.md documentation

📋 Remaining:

  • Production deployment configuration
  • CI/CD integration for Keycloak changes

Decision Points During Development

1. Terraform Provider Choice

Challenge: Which Terraform provider for Keycloak? Options:

  • mrparkers/keycloak (community, actively maintained)
  • keycloak/keycloak (official but less mature) Decision: Use mrparkers/keycloak v4.3 Rationale:
  • More mature and feature-complete
  • Better documentation
  • Active community support
  • Used by many production deployments

2. State Management

Challenge: Where to store Terraform state? Options:

  • Local state file (.tfstate)
  • Remote state (Terraform Cloud, GCS, S3) Decision: Local state for now, remote state for production Rationale:
  • Local development doesn't need remote state
  • Production will use Google Cloud Storage backend
  • Easier onboarding for developers

Challenges & Solutions

Challenge: Keycloak Docker container takes time to start Solution: Added health check loop in setup script with 30s timeout

Challenge: Terraform provider auth for local Keycloak Solution: Use admin/admin credentials for local, env vars for production

Testing Checklist

  • [x] Terraform plan succeeds
  • [x] Terraform apply creates realm
  • [x] All roles created correctly
  • [ ] Frontend client authentication works
  • [ ] Backend service account works
  • [ ] Fresh Docker setup succeeds
  • [ ] Documentation accurate

Next Steps

  1. Complete setup script testing
  2. Document in CLAUDE.md
  3. Create production configuration
  4. Add to CI/CD pipeline

Permissions Context (Frontend)

Status: 🚧 In Progress Started: 2025-10-16 Target: 2025-10-23 Owner: Development Team

Overview

Create React context for managing user permissions throughout the frontend application, enabling permission-based UI rendering and feature access control.

What We're Building

  • PermissionsContext: React context with permissions state
  • usePermissions Hook: Custom hook for accessing permissions
  • Permission Guards: Components like <RequirePermission feature="..." />
  • Integration: Connect to backend permission API

Implementation Status

📋 Planned:

  • Create PermissionsContext.jsx
  • Implement usePermissions hook
  • Create RequirePermission component
  • Add permission checks to existing components
  • Integrate with backend /permissions endpoint
  • Add loading and error states

Technical Design

javascript
// Example usage
const { hasPermission, loading } = usePermissions();

if (loading) return <Skeleton />;

if (hasPermission('live_transcription')) {
  return <TranscriptionButton />;
}

return <UpgradePrompt feature="live_transcription" />;

Next Steps

  1. Design context structure
  2. Implement basic context and hook
  3. Add to App.jsx provider tree
  4. Integrate with backend API
  5. Add to existing components

Frontend TypeScript Migration

Status: 🚧 In Progress Started: 2025-10-20 Target: 2025-11-05 Owner: Frontend Guild

Overview

Gradually converting React modules from JavaScript to TypeScript to unlock type-safe API integration, reduce runtime bugs, and standardize shared admin primitives.

What We're Building

  • Typed Shared Components: Convert features/admin/shared/components/* to .tsx with discriminated unions where needed.
  • Typed API Clients: Move REST helpers to frontend/src/lib/api/*.ts and generate types/*.ts models.
  • Query Layer: Centralize keys in lib/queryClient.ts with typed helpers for invalidation.
  • Developer Notes: Track decisions and blockers in frontend/ts-migration-notes.md.

Implementation Status

Completed:

  • ConfirmDialog, DataTable, EmptyState, LoadingSkeleton, and StatusBadge rewritten in TypeScript.
  • SuperadminInstitutionContext.tsx typed with React Query integration.
  • API clients for admin and invitations now export typed responses.
  • queryClient.ts introduces typed query keys and retry behaviour.

🚧 In Progress:

  • Convert admin layout shell (AdminLayout.tsx) to strict typing and migrate sidebar props.
  • Migrate resident feature components with evolving data models.
  • Adopt TypeScript-aware ESLint rules once coverage exceeds 70%.

📋 Remaining:

  • Update analytics dashboards (SystemAnalyticsDashboard.jsx) to TypeScript once charting types are ready.
  • Replace legacy lib/api.js helpers with typed wrappers or remove after migration.
  • Wire TypeScript builds into CI (npm run typecheck) as a required status check.

Risks & Mitigations

  • Third-party typings (e.g., older chart libraries) still rely on ambient any. Document workarounds in ts-migration-notes.md.
  • Mixed modules may break imports from .js.ts. Track rename tasks per folder to avoid circular dependencies.

Documentation System (VitePress)

Status: 🚧 In Progress (Current Task) Started: 2025-10-21 Target: 2025-10-23 Owner: Development Team

Overview

Building a comprehensive documentation system using VitePress to serve AI agents (Claude) and human developers with ~25 core documentation files organized in a layered pyramid structure.

Implementation Status

Completed:

  • Phase 1: VitePress setup and directory structure
  • Phase 2: Core documentation files (indexes, onboarding)

🚧 In Progress:

  • Phase 3: Migrating existing documentation

📋 Remaining:

  • Phase 4: Create Architecture Decision Records (ADRs)
  • Phase 5: Detailed documentation expansion
  • Phase 6: Reference & compliance docs
  • Phase 7: Update CLAUDE.md

Benefits

  • Token Efficiency: ~2-3k tokens per AI query (vs 15k+ with scattered docs)
  • Better Onboarding: New developers productive in <4 hours
  • Decision Transparency: All architectural decisions documented
  • Knowledge Retention: Zero tribal knowledge

Next Steps

  1. Complete migration of existing docs
  2. Create 7+ ADRs
  3. Expand architecture documentation
  4. Add reference materials
  5. Update CLAUDE.md

Last Updated: 2025-10-21

Internal documentation for Noumaris platform