How shubhan-12/civic-connect works
Purpose and deployable entry points
Civic Connect is a full-stack civic-complaint platform for citizens, municipal officers, and workers. The Android client starts at android/app/src/main/java/com/civicconnect/app/MainActivity.kt; the Spring Boot API starts at backend/src/main/java/com/civicconnect/backend/BackendApplication.java. The root src/App.jsx appears to be a separate/incomplete JavaScript entry point, not represented by the documented architecture.
Android client: Compose UI and session boundary
The Android app is Kotlin/Jetpack Compose. It presents complaint reporting, home, location selection, profile/history/details, and registration flows through screens such as android/app/src/main/java/com/civicconnect/app/ReportIssueScreen.kt, android/app/src/main/java/com/civicconnect/app/ui/theme/MyComplaintsScreen.kt, and android/app/src/main/java/com/civicconnect/app/ui/theme/ComplaintDetailsScreen.kt. Authentication/session state is persisted locally via android/app/src/main/java/com/civicconnect/app/local/SessionManager.kt.
Client API integration
Retrofit is the mobile-to-server boundary, centralized in android/app/src/main/java/com/civicconnect/app/network/RetrofitClient.kt. API contracts are divided by capability: authentication (android/app/src/main/java/com/civicconnect/app/network/AuthApi.kt), complaint lifecycle (android/app/src/main/java/com/civicconnect/app/network/ComplaintApi.kt), images and affected-user votes (android/app/src/main/java/com/civicconnect/app/network/ComplaintImageApi.kt, android/app/src/main/java/com/civicconnect/app/network/ComplaintVoteApi.kt). Kotlin request/response models mirror backend HTTP DTOs under android/app/src/main/java/com/civicconnect/app/data/model/.
API security and user roles
The Spring API exposes controllers for authentication/profile and role-oriented operations. JWT issuance/validation and request authentication are implemented by backend/src/main/java/com/civicconnect/backend/security/JwtService.java, backend/src/main/java/com/civicconnect/backend/security/JwtAuthenticationFilter.java, and backend/src/main/java/com/civicconnect/backend/config/SecurityConfig.java. User persistence and account workflows reside in backend/src/main/java/com/civicconnect/backend/user/entity/User.java, backend/src/main/java/com/civicconnect/backend/user/service/UserService.java, and backend/src/main/java/com/civicconnect/backend/user/controller/AuthController.java.
Complaint lifecycle orchestration
Complaint creation, retrieval, status updates, summaries, and history form the central domain flow: controller → service → JPA repositories/entities. Key paths are backend/src/main/java/com/civicconnect/backend/complaint/controller/ComplaintController.java, backend/src/main/java/com/civicconnect/backend/complaint/service/ComplaintService.java, and backend/src/main/java/com/civicconnect/backend/complaint/entity/ComplaintStatusHistory.java. Officers assign work through backend/src/main/java/com/civicconnect/backend/admin/controller/AdminController.java; worker assignment and worker-facing operations are modeled in backend/src/main/java/com/civicconnect/backend/worker/service/WorkerService.java.
Supporting complaint capabilities
Users can mark themselves affected through the vote domain (backend/src/main/java/com/civicconnect/backend/complaintvote/service/ComplaintVoteService.java). Complaint images are uploaded/served through backend/src/main/java/com/civicconnect/backend/file/controller/ComplaintImageController.java and stored behind backend/src/main/java/com/civicconnect/backend/file/service/FileStorageService.java. Location selection is backed by state/district/taluk APIs, notably backend/src/main/java/com/civicconnect/backend/location/controller/DistrictController.java and backend/src/main/java/com/civicconnect/backend/location/controller/TalukController.java.
Persistence and infrastructure
The backend is Maven/Spring Boot (backend/pom.xml) using PostgreSQL and JPA, with Flyway-style versioned schema/seed migrations under backend/src/main/resources/db/migration/. The schema covers users, geographic hierarchy, complaints, votes, status history, and workers; for example backend/src/main/resources/db/migration/V40__create_complaints_table.sql, backend/src/main/resources/db/migration/V45__create_complaint_status_history.sql, and backend/src/main/resources/db/migration/V47/V47__create_workers_table.sql. Runtime settings, database connectivity, JWT/security, and file storage are externalized in backend/src/main/resources/application.properties and backend/src/main/resources/application.yaml.
Main entry points: ComplaintStatusHistory.java JPA domain data · ComplaintService.java Complaint lifecycle · ReportIssueScreen.kt Citizen screens · BackendApplication.java API application
Components 18
Android client
- Compose app
android/app/src/main/java/com/civicconnect/app/MainActivity.kt - Citizen screens · Reporting, history, details, profile, and location flows.
android/app/src/main/java/com/civicconnect/app/ReportIssueScreen.kt - Session storage
android/app/src/main/java/com/civicconnect/app/local/SessionManager.kt - Retrofit client
android/app/src/main/java/com/civicconnect/app/network/RetrofitClient.kt - Mobile API contracts · Authentication, complaints, images, and affected-user votes.
android/app/src/main/java/com/civicconnect/app/network/ComplaintApi.kt
Spring Boot API
- API application
backend/src/main/java/com/civicconnect/backend/BackendApplication.java - JWT security · Validates bearer tokens and enforces role access.
backend/src/main/java/com/civicconnect/backend/security/JwtAuthenticationFilter.java - Accounts and auth
backend/src/main/java/com/civicconnect/backend/user/controller/AuthController.java - Complaint API · Creation, retrieval, status, summaries, and history endpoints.
backend/src/main/java/com/civicconnect/backend/complaint/controller/ComplaintController.java - Complaint lifecycle
backend/src/main/java/com/civicconnect/backend/complaint/service/ComplaintService.java - Assignment operations · Officers assign work; workers handle assigned complaints.
backend/src/main/java/com/civicconnect/backend/worker/service/WorkerService.java - Affected-user votes
backend/src/main/java/com/civicconnect/backend/complaintvote/service/ComplaintVoteService.java - Complaint images · Uploads and serves complaint images.
backend/src/main/java/com/civicconnect/backend/file/controller/ComplaintImageController.java - File storage
backend/src/main/java/com/civicconnect/backend/file/service/FileStorageService.java - Location API · Supplies state, district, and taluk selections.
backend/src/main/java/com/civicconnect/backend/location/controller/DistrictController.java
Persistence
- JPA domain data · Users, complaints, workers, votes, geography, and status history.
backend/src/main/java/com/civicconnect/backend/complaint/entity/ComplaintStatusHistory.java - PostgreSQL
- Schema migrations · Versioned schema and seed migrations.
backend/src/main/resources/db/migration/V40__create_complaints_table.sql
Connections 21
- Compose app → Citizen screens: hosts
- Citizen screens → Session storage: reads session
- Citizen screens → Mobile API contracts: uses
- Mobile API contracts → Retrofit client: executed by
- Retrofit client → API application: HTTPS API
- API application → JWT security: secures requests
- JWT security → Accounts and auth: authenticates access
- JWT security → Complaint API: authorizes
- API application → Location API: serves
- Complaint API → Complaint lifecycle: orchestrates
- Complaint lifecycle → Assignment operations: assignment lifecycle
- Complaint lifecycle → Affected-user votes: vote context
- Complaint lifecycle → JPA domain data: persists
- Accounts and auth → JPA domain data: accounts
- Assignment operations → JPA domain data: assignments
- Affected-user votes → JPA domain data: votes
- Complaint images → File storage: stores files
- Complaint images → JPA domain data: links images
- Location API → JPA domain data: queries geography
- JPA domain data → PostgreSQL: JPA
- Schema migrations → PostgreSQL: provisions