# aether-frame-creater/infinite-techfest-2026 architecture

> Architecture diagram of the GitHub repository aether-frame-creater/infinite-techfest-2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aether-frame-creater/infinite-techfest-2026
- Repository: https://github.com/aether-frame-creater/infinite-techfest-2026

## Overview

#### Purpose and Current Scope
Infinite Techfest 2026 is an Expo/React Native symposium-management client for R.P. Sarathy Institute of Technology. The intended platform spans authentication, registrations, payments, QR attendance, certificates, dashboards, and administration, but the current implementation is centered on app shell, authentication, and a student home route. Planned backend data and most symposium workflows are not yet present.

#### Application Entry and Navigation
Expo Router provides file-based navigation. The root layout establishes application-wide routing and providers; `app/index.tsx` is the initial route. Route groups isolate unauthenticated and student experiences:
- `app/_layout.tsx`
- `app/(authentication)/_layout.tsx`
- `app/(student)/_layout.tsx`

Authentication routes cover onboarding, login, registration, email verification, and password recovery. The only domain-facing role route currently present is `app/(student)/home.tsx`.

#### Authentication Feature Vertical
Authentication is the most developed vertical slice. Route files delegate presentation to reusable auth screen components, while validation and remote operations are separated from UI:
- `components/authentication/LoginScreen.tsx`
- `features/auth/schemas/loginSchema.ts`
- `services/authService.ts`

The flow is email/password oriented: registration/login invoke the auth service, Supabase errors are translated for display, and recovery/reset/verification are modeled as distinct screens and Zod schemas. User data is normalized at the integration boundary in `utils/mapSupabaseUser.ts`.

#### State, Session, and Provider Boundary
App-wide concerns are intended to be composed through providers. `AuthProvider` owns session/auth-context lifecycle; the Zustand store supplies client-side auth state; QueryProvider establishes the server-state boundary for future data fetching:
- `providers/AuthProvider.tsx`
- `store/authStore.ts`
- `providers/QueryProvider.tsx`

Role-aware routing is implied by shared role definitions and separate route groups, but only student navigation exists today. Roles are represented centrally rather than embedded in screens: `constants/roles.ts`, `types/role.ts`.

#### Backend and External Integration
Supabase is the active external backend integration, expected to provide authentication and PostgreSQL-backed application data. Its client configuration and environment access are isolated from UI:
- `lib/supabase.ts`
- `config/env.ts`
- `.env.example`

The repository reserves `database/` for future Drizzle schema, migrations, and seeds, but no database model files are currently present. Web cryptography compatibility is isolated in `lib/webCryptoPolyfill.ts`, an important runtime boundary for Supabase/auth behavior across Expo targets.

#### UI System and Cross-Platform Runtime
The client targets Android, iOS, and web through Expo. UI is intended to use NativeWind plus centralized theme tokens, with auth components constituting the current shared visual system:
- `global.css`
- `theme/index.ts`
- `tailwind.config.js`

Brand and authentication artwork are kept under `assets/images/Branding` and `assets/images/Authentication`. `app.json` is the Expo application/runtime configuration; `metro.config.js` and `babel.config.js` support bundling and transforms.

#### Intended Future Workflow Boundaries
The documented architecture separates lightweight route/UI layers from hooks/state, service-layer business operations, and integrations. Future event, payment, QR, notification, certificate, analytics, and admin capabilities should become feature-scoped modules and call services rather than access Supabase directly. Expected external capabilities include Expo Camera, Notifications, and pdf-lib, but these are roadmap dependencies rather than established repository components.

Main entry points: [`app/_layout.tsx`](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/_layout.tsx) (Root layout), [`components/authentication/LoginScreen.tsx`](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/components/authentication/LoginScreen.tsx) (Auth screens), [`providers/AuthProvider.tsx`](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/providers/AuthProvider.tsx) (Auth provider), [`lib/supabase.ts`](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/lib/supabase.ts) (Supabase client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App navigation"]
  node_root_layout["Root layout<br/>router shell<br/>[_layout.tsx]"]
  node_index_route["Initial route<br/>[index.tsx]"]
  node_auth_routes["Authentication routes<br/>route group<br/>[_layout.tsx]"]
  node_student_routes["Student routes<br/>route group<br/>[_layout.tsx]"]
  node_student_home["Student home<br/>student route<br/>[home.tsx]"]
end

subgraph group_auth["Authentication"]
  node_auth_screens["Auth screens<br/>presentation components<br/>[LoginScreen.tsx]"]
  node_login_schema["Login validation<br/>Zod schema<br/>[loginSchema.ts]"]
  node_auth_service["Auth service<br/>service layer<br/>[authService.ts]"]
  node_auth_provider["Auth provider<br/>session lifecycle<br/>[AuthProvider.tsx]"]
  node_auth_store[("Auth store<br/>Zustand state<br/>[authStore.ts]")]
  node_roles["Role definitions<br/>shared authorization<br/>[roles.ts]"]
end

subgraph group_platform["Platform integration"]
  node_expo{{"Expo runtime<br/>cross-platform client<br/>[app.json]"}}
  node_query_provider["Query provider<br/>server-state boundary<br/>[QueryProvider.tsx]"]
  node_supabase_client[("Supabase client<br/>backend integration<br/>[supabase.ts]")]
  node_user_mapper["Supabase user mapper<br/>integration adapter<br/>[mapSupabaseUser.ts]"]
  node_crypto_polyfill{{"Web crypto polyfill<br/>runtime compatibility"}}
end

subgraph group_ui["UI system"]
  node_ui_theme["Theme and NativeWind<br/>design system<br/>[index.ts]"]
  node_auth_artwork["Auth artwork<br/>brand assets"]
end

node_future_workflows["Future symposium workflows<br/>roadmap modules"]

node_expo -->|"runs"| node_root_layout
node_root_layout -->|"starts at"| node_index_route
node_root_layout -->|"mounts"| node_auth_routes
node_root_layout -->|"mounts"| node_student_routes
node_student_routes -->|"contains"| node_student_home
node_root_layout -->|"provides"| node_auth_provider
node_root_layout -->|"provides"| node_query_provider
node_auth_routes -->|"renders"| node_auth_screens
node_auth_screens -->|"validates with"| node_login_schema
node_auth_screens -->|"invokes"| node_auth_service
node_auth_screens -->|"uses"| node_auth_artwork
node_auth_screens -->|"styles with"| node_ui_theme
node_auth_service -->|"authenticates via"| node_supabase_client
node_supabase_client -->|"returns users for"| node_user_mapper
node_auth_provider -->|"synchronizes"| node_auth_store
node_auth_provider -->|"uses"| node_auth_service
node_auth_provider -.->|"applies"| node_roles
node_crypto_polyfill -->|"supports runtime"| node_supabase_client
node_future_workflows -.->|"will fetch through"| node_query_provider
node_future_workflows -.->|"will access through services"| node_supabase_client

click node_expo "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app.json"
click node_root_layout "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/_layout.tsx"
click node_index_route "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/index.tsx"
click node_auth_routes "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(authentication)/_layout.tsx"
click node_student_routes "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(student)/_layout.tsx"
click node_student_home "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(student)/home.tsx"
click node_auth_screens "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/components/authentication/LoginScreen.tsx"
click node_login_schema "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/features/auth/schemas/loginSchema.ts"
click node_auth_service "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/services/authService.ts"
click node_auth_provider "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/providers/AuthProvider.tsx"
click node_auth_store "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/store/authStore.ts"
click node_roles "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/constants/roles.ts"
click node_query_provider "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/providers/QueryProvider.tsx"
click node_supabase_client "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/lib/supabase.ts"
click node_user_mapper "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/utils/mapSupabaseUser.ts"
click node_crypto_polyfill "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/lib/webCryptoPolyfill.ts"
click node_ui_theme "https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/theme/index.ts"
click node_auth_artwork "https://github.com/aether-frame-creater/infinite-techfest-2026/tree/main/assets/images/Authentication"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root_layout,node_index_route,node_auth_routes,node_student_routes,node_student_home toneBlue
class node_auth_screens,node_login_schema,node_auth_service,node_auth_provider,node_auth_store,node_roles toneAmber
class node_expo,node_query_provider,node_supabase_client,node_user_mapper,node_crypto_polyfill toneMint
class node_ui_theme,node_auth_artwork toneRose
class node_future_workflows toneNeutral
```

## Components

### App navigation

- [Root layout](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/_layout.tsx): router shell · Composes app-wide routing and providers. · `app/_layout.tsx`
- [Initial route](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/index.tsx): route · `app/index.tsx`
- [Authentication routes](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(authentication)/_layout.tsx): route group · Onboarding, login, registration, verification, and recovery. · `app/(authentication)/_layout.tsx`
- [Student routes](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(student)/_layout.tsx): route group · `app/(student)/_layout.tsx`
- [Student home](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app/(student)/home.tsx): student route · Only implemented domain-facing role route. · `app/(student)/home.tsx`

### Authentication

- [Auth screens](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/components/authentication/LoginScreen.tsx): presentation components · `components/authentication/LoginScreen.tsx`
- [Login validation](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/features/auth/schemas/loginSchema.ts): Zod schema · Other auth flows also have dedicated schemas. · `features/auth/schemas/loginSchema.ts`
- [Auth service](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/services/authService.ts): service layer · Performs email/password auth and translates backend errors. · `services/authService.ts`
- [Auth provider](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/providers/AuthProvider.tsx): session lifecycle · Owns auth context and session lifecycle. · `providers/AuthProvider.tsx`
- [Auth store](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/store/authStore.ts): Zustand state · `store/authStore.ts`
- [Role definitions](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/constants/roles.ts): shared authorization · Supports role-aware route boundaries. · `constants/roles.ts`

### Platform integration

- [Expo runtime](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/app.json): cross-platform client · Targets Android, iOS, and web. · `app.json`
- [Query provider](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/providers/QueryProvider.tsx): server-state boundary · Prepared for future remote data fetching. · `providers/QueryProvider.tsx`
- [Supabase client](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/lib/supabase.ts): backend integration · Authentication and planned PostgreSQL application data boundary. · `lib/supabase.ts`
- [Supabase user mapper](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/utils/mapSupabaseUser.ts): integration adapter · Normalizes backend users for the client. · `utils/mapSupabaseUser.ts`
- [Web crypto polyfill](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/lib/webCryptoPolyfill.ts): runtime compatibility · Ensures Supabase/auth compatibility across Expo targets. · `lib/webCryptoPolyfill.ts`

### UI system

- [Theme and NativeWind](https://github.com/aether-frame-creater/infinite-techfest-2026/blob/main/theme/index.ts): design system · Centralized tokens and cross-platform styling. · `theme/index.ts`
- [Auth artwork](https://github.com/aether-frame-creater/infinite-techfest-2026/tree/main/assets/images/Authentication): brand assets · `assets/images/Authentication`

### Other components

- **Future symposium workflows**: roadmap modules · Events, payments, QR, certificates, notifications, analytics, and admin remain unimplemented.

## Connections

- Expo runtime → Root layout: runs
- Root layout → Initial route: starts at
- Root layout → Authentication routes: mounts
- Root layout → Student routes: mounts
- Student routes → Student home: contains
- Root layout → Auth provider: provides
- Root layout → Query provider: provides
- Authentication routes → Auth screens: renders
- Auth screens → Login validation: validates with
- Auth screens → Auth service: invokes
- Auth screens → Auth artwork: uses
- Auth screens → Theme and NativeWind: styles with
- Auth service → Supabase client: authenticates via
- Supabase client → Supabase user mapper: returns users for
- Auth provider → Auth store: synchronizes
- Auth provider → Auth service: uses
- Auth provider → Role definitions: applies
- Web crypto polyfill → Supabase client: supports runtime
- Future symposium workflows → Query provider: will fetch through
- Future symposium workflows → Supabase client: will access through services
