# taqsiimtq/compusconnect-android architecture

> Architecture diagram of the GitHub repository taqsiimtq/compusconnect-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/taqsiimtq/compusconnect-android
- Repository: https://github.com/taqsiimtq/compusconnect-android

## Overview

CampusConnect is an Android app for students and club managers. Users sign in or restore a session, then enter role-specific navigation: students discover clubs and events, participate in the feed, book rooms or facilities, report issues, and view notifications; managers handle club posts, events, requests, and attendance. Feature ViewModels mediate UI actions and repositories expose backend operations; authentication also persists a token and caches user data locally. The README and API surface establish major capabilities, but unsampled feature implementations limit confidence about their exact call wiring.

Main entry points: [`app/src/main/java/com/taqsiim/compusconnect/ui/student`](https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/student) (Student features), [`app/src/main/java/com/taqsiim/compusconnect/data/api/ApiService.kt`](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/api/ApiService.kt) (API service), [`app/src/main/java/com/taqsiim/compusconnect/data/repository/UserRepository.kt`](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/UserRepository.kt) (User repository), [`app/src/main/java/com/taqsiim/compusconnect/MainActivity.kt`](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/MainActivity.kt) (Role selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry"]
  node_main["Role selection<br/>[MainActivity.kt]"]
  node_nav["Role navigation<br/>[AppRoots.kt]"]
end

subgraph group_identity["Identity and data"]
  node_auth_ui["Login and session"]
  node_auth_vm["Auth state<br/>[AuthViewModel.kt]"]
  node_user_repo["User repository<br/>[UserRepository.kt]"]
  node_token["Token storage<br/>[TokenManager.kt]"]
  node_auth_interceptor["Auth interceptor<br/>[AuthInterceptor.kt]"]
  node_local_db[("Campus cache<br/>[CampusDatabase.kt]")]
  node_dao["Campus DAO<br/>[CampusDao.kt]"]
end

subgraph group_student["Student experience"]
  node_student_features["Student features"]
  node_club_repo["Club operations<br/>[ClubRepository.kt]"]
  node_event_repo["Event operations<br/>[EventRepository.kt]"]
  node_post_repo["Feed operations<br/>[PostRepository.kt]"]
  node_facility_repo["Facility bookings"]
  node_room_repo["Room bookings<br/>[RoomRepository.kt]"]
  node_report_repo["Issue reporting"]
end

subgraph group_management["Club management"]
  node_manager_features["Manager features"]
end

subgraph group_services["Backend services"]
  node_api["API service<br/>[ApiService.kt]"]
  node_backend[("Campus backend")]
end

node_student_actor(("Student"))
node_manager_actor(("Club manager"))

node_main -->|"shows"| node_auth_ui
node_main -->|"routes by role"| node_nav
node_student_actor -->|"uses"| node_main
node_manager_actor -->|"uses"| node_main
node_auth_ui -->|"dispatches intents"| node_auth_vm
node_auth_vm -->|"requests session"| node_user_repo
node_user_repo -->|"authenticates and fetches profile"| node_api
node_user_repo -->|"saves and reads token"| node_token
node_user_repo -->|"caches user"| node_dao
node_dao -->|"reads and writes"| node_local_db
node_auth_interceptor -->|"reads token"| node_token
node_nav -->|"opens student app"| node_student_features
node_nav -->|"opens manager app"| node_manager_features
node_student_features -->|"uses club operations"| node_club_repo
node_student_features -->|"uses event operations"| node_event_repo
node_student_features -->|"uses feed operations"| node_post_repo
node_student_features -->|"uses facility booking"| node_facility_repo
node_student_features -->|"uses room booking"| node_room_repo
node_student_features -->|"submits reports"| node_report_repo
node_manager_features -->|"manages posts"| node_post_repo
node_manager_features -->|"schedules and tracks events"| node_event_repo
node_club_repo -->|"calls"| node_api
node_event_repo -->|"calls"| node_api
node_post_repo -->|"calls"| node_api
node_facility_repo -->|"calls"| node_api
node_room_repo -->|"calls"| node_api
node_report_repo -->|"calls"| node_api
node_api -->|"sends requests"| node_backend

click node_main "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/MainActivity.kt"
click node_nav "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/ui/navigation/AppRoots.kt"
click node_auth_ui "https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/auth"
click node_auth_vm "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/ui/auth/AuthViewModel.kt"
click node_user_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/UserRepository.kt"
click node_token "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/TokenManager.kt"
click node_auth_interceptor "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/di/AuthInterceptor.kt"
click node_local_db "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/CampusDatabase.kt"
click node_dao "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/dao/CampusDao.kt"
click node_student_features "https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/student"
click node_club_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/ClubRepository.kt"
click node_event_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/EventRepository.kt"
click node_post_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/PostRepository.kt"
click node_facility_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/FacilityRepository.kt"
click node_room_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/RoomRepository.kt"
click node_report_repo "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/ReportRepository.kt"
click node_manager_features "https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/clubManager"
click node_api "https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/api/ApiService.kt"

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_main,node_nav toneBlue
class node_auth_ui,node_auth_vm,node_user_repo,node_token,node_auth_interceptor,node_local_db,node_dao toneAmber
class node_student_features,node_club_repo,node_event_repo,node_post_repo,node_facility_repo,node_room_repo,node_report_repo toneMint
class node_manager_features toneRose
class node_api,node_backend,node_student_actor,node_manager_actor toneIndigo
```

## Components

### App entry

- [Role selection](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/MainActivity.kt): `app/src/main/java/com/taqsiim/compusconnect/MainActivity.kt`
- [Role navigation](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/ui/navigation/AppRoots.kt): `app/src/main/java/com/taqsiim/compusconnect/ui/navigation/AppRoots.kt`

### Identity and data

- [Login and session](https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/auth): `app/src/main/java/com/taqsiim/compusconnect/ui/auth`
- [Auth state](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/ui/auth/AuthViewModel.kt): `app/src/main/java/com/taqsiim/compusconnect/ui/auth/AuthViewModel.kt`
- [User repository](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/UserRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/UserRepository.kt`
- [Token storage](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/TokenManager.kt): `app/src/main/java/com/taqsiim/compusconnect/data/local/TokenManager.kt`
- [Auth interceptor](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/di/AuthInterceptor.kt): `app/src/main/java/com/taqsiim/compusconnect/di/AuthInterceptor.kt`
- [Campus cache](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/CampusDatabase.kt): `app/src/main/java/com/taqsiim/compusconnect/data/local/CampusDatabase.kt`
- [Campus DAO](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/local/dao/CampusDao.kt): `app/src/main/java/com/taqsiim/compusconnect/data/local/dao/CampusDao.kt`

### Student experience

- [Student features](https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/student): `app/src/main/java/com/taqsiim/compusconnect/ui/student`
- [Club operations](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/ClubRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/ClubRepository.kt`
- [Event operations](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/EventRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/EventRepository.kt`
- [Feed operations](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/PostRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/PostRepository.kt`
- [Facility bookings](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/FacilityRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/FacilityRepository.kt`
- [Room bookings](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/RoomRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/RoomRepository.kt`
- [Issue reporting](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/repository/ReportRepository.kt): `app/src/main/java/com/taqsiim/compusconnect/data/repository/ReportRepository.kt`

### Club management

- [Manager features](https://github.com/taqsiimtq/compusconnect-android/tree/main/app/src/main/java/com/taqsiim/compusconnect/ui/clubManager): `app/src/main/java/com/taqsiim/compusconnect/ui/clubManager`

### Backend services

- [API service](https://github.com/taqsiimtq/compusconnect-android/blob/main/app/src/main/java/com/taqsiim/compusconnect/data/api/ApiService.kt): `app/src/main/java/com/taqsiim/compusconnect/data/api/ApiService.kt`
- **Campus backend**

### Other components

- **Student**
- **Club manager**

## Connections

- Role selection → Login and session: shows
- Role selection → Role navigation: routes by role
- Student → Role selection: uses
- Club manager → Role selection: uses
- Login and session → Auth state: dispatches intents
- Auth state → User repository: requests session
- User repository → API service: authenticates and fetches profile
- User repository → Token storage: saves and reads token
- User repository → Campus DAO: caches user
- Campus DAO → Campus cache: reads and writes
- Auth interceptor → Token storage: reads token
- Role navigation → Student features: opens student app
- Role navigation → Manager features: opens manager app
- Student features → Club operations: uses club operations
- Student features → Event operations: uses event operations
- Student features → Feed operations: uses feed operations
- Student features → Facility bookings: uses facility booking
- Student features → Room bookings: uses room booking
- Student features → Issue reporting: submits reports
- Manager features → Feed operations: manages posts
- Manager features → Event operations: schedules and tracks events
- Club operations → API service: calls
- Event operations → API service: calls
- Feed operations → API service: calls
- Facility bookings → API service: calls
- Room bookings → API service: calls
- Issue reporting → API service: calls
- API service → Campus backend: sends requests
