Application link : https://argusweb.tech/
A comprehensive municipal grievance management system with AI-powered complaint classification, multi-channel support, and automated escalation management.
Features โข Architecture โข Getting Started โข API Documentation โข Documentation
Argus is an enterprise-grade public grievance redressal system designed for municipal corporations. It enables citizens to file complaints through multiple channels (Web Portal & WhatsApp), leverages AI for intelligent complaint classification and prioritization, and provides comprehensive dashboards for various administrative roles.
- ๐ค AI-Powered Classification - Automatic categorization, priority assignment, and SLA calculation using Google Gemini
- ๐ฑ Multi-Channel Support - File complaints via Web Portal or WhatsApp (Twilio integration)
- ๐ธ Image Evidence Analysis - Multimodal AI analyzes uploaded images for verification and severity assessment
- โฐ Automated Escalation - Time-based escalation to department heads and municipal commissioners
- ๐ฎ Gamification System - Points, tiers, and leaderboards for citizens and staff performance tracking
- ๐ Role-Based Access Control - Six distinct user roles with granular permissions
- ๐ Real-time Dashboards - Role-specific dashboards with actionable insights
| Feature | Description |
|---|---|
| ๐ File Complaints | Submit grievances with descriptions, locations, and image evidence |
| ๐ Location Mapping | Interactive maps using Leaflet for precise location tagging |
| ๐ฒ WhatsApp Integration | Conversational complaint filing via WhatsApp |
| ๐ Status Tracking | Real-time updates on complaint progress |
| โญ Rate Resolutions | Provide feedback on resolved complaints |
| ๐ Earn Points | Gamification rewards for civic participation |
| Feature | Description |
|---|---|
| ๐ Complaint Queue | View and manage assigned complaints |
| โ Resolution Workflow | Mark complaints as resolved with notes |
| ๐ Performance Metrics | Track resolution times and satisfaction scores |
| ๐จ Escalation Alerts | Notifications for SLA breaches and escalations |
| Feature | Description |
|---|---|
| ๐ฅ User Management | Create and manage citizens, staff, and department heads |
| ๐ข Department Configuration | Manage 7 civic departments and staff assignments |
| ๐ Category Management | Configure complaint categories and mappings |
| โฑ๏ธ SLA Configuration | Define service level agreements per category |
| ๐ Analytics Dashboard | System-wide statistics and insights |
| Feature | Description |
|---|---|
| ๐ง Smart Classification | AI categorizes complaints into predefined categories |
| โก Priority Assignment | Context-aware priority (LOW to CRITICAL) with upgrade rules |
| ๐ผ๏ธ Image Analysis | Multimodal AI verifies evidence and detects safety risks |
| โฌ๏ธ Auto-Escalation | Scheduled escalation based on SLA breaches |
| ๐ State Machine | Robust complaint lifecycle management |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ARGUS ARCHITECTURE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ React โ โ WhatsApp โ โ Spring Boot โโ
โ โ Frontend โโโโโโถโ (Twilio) โโโโโโถโ Backend API โโ
โ โ :3000 โ โ โ โ :8080 โโ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ
โ โ SERVICES โ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโ
โ โ โ Complaint โ โ Escalation โ โ Gamificationโ โ โโ
โ โ โ Service โ โ Service โ โ Service โ โ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโ
โ โ โ AI/Gemini โ โ S3 Storage โ โ State โ โ โโ
โ โ โ Service โ โ Service โ โ Machine โ โ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ
โ โ EXTERNAL SERVICES โผ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโ
โ โ โ Google โ โ AWS S3 โ โ MySQL Database โ โโ
โ โ โ Gemini AI โ โ Storage โ โ (Complaints, Users, Audit Logs) โ โโ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
com.backend.springapp/
โโโ SpringappApplication.java # Main application entry point
โโโ audit/ # Audit logging system
โโโ config/ # Application configuration
โโโ controller/ # REST API controllers
โโโ dto/ # Data Transfer Objects
โโโ enums/ # Enumerations (State, Priority, Role, etc.)
โโโ escalation/ # Escalation management system
โโโ exception/ # Custom exceptions & handlers
โโโ gamification/ # Points & leaderboard system
โโโ model/ # JPA entities
โโโ notification/ # Notification services
โโโ repository/ # Data access layer
โโโ security/ # Authentication & authorization
โโโ service/ # Business logic services
โโโ statemachine/ # Complaint state transitions
โโโ whatsapp/ # WhatsApp/Twilio integration
reactapp/src/
โโโ components/
โ โโโ admin/ # Admin-specific components
โ โโโ auth/ # Authentication components
โ โโโ common/ # Reusable components (ComplaintCard, etc.)
โ โโโ gamification/ # Leaderboards & badges
โ โโโ ui/ # UI primitives (shadcn/ui)
โโโ constants/ # Roles, permissions, configs
โโโ context/ # React context (UserContext)
โโโ hooks/ # Custom React hooks
โโโ layouts/ # Dashboard layouts
โโโ pages/
โ โโโ LandingPage.jsx # Public landing page
โ โโโ Login.jsx # Login page
โ โโโ Signup.jsx # Registration page
โ โโโ dashboards/ # Role-specific dashboards
โโโ router/ # Routing configuration
โโโ services/ # API service layer
โโโ lib/ # Utility functions
- Java 17 or higher
- Node.js 18+ and npm
- MySQL 8.0+
- Maven 3.8+
- AWS Account (for S3 image storage)
- Twilio Account (for WhatsApp integration)
-
Clone the repository
git clone https://github.com/your-org/argus.git cd argus/springapp -
Configure database
# Create MySQL database mysql -u root -p -e "CREATE DATABASE springdb;"
-
Set environment variables (or modify
application.properties)export DB_URL=jdbc:mysql://localhost:3306/springdb export DB_USERNAME=root export DB_PASSWORD=your_password export API_SECRET_KEY=your_gemini_api_key export AWS_ACCESS_KEY_ID=your_aws_key export AWS_SECRET_ACCESS_KEY=your_aws_secret export AWS_S3_BUCKET=your_bucket_name
-
Run the application
# Development mode (initializes sample data) mvn spring-boot:run # Production mode export INIT_SAMPLE_DATA=false mvn spring-boot:run
-
Backend starts at
http://localhost:8080
-
Navigate to frontend directory
cd argus/reactapp -
Install dependencies
npm install
-
Configure API endpoint
# Create .env file echo "REACT_APP_API_URL=http://localhost:8080/api" > .env
-
Start development server
npm start
-
Frontend starts at
http://localhost:3000
| Role | Password | |
|---|---|---|
| Citizen | citizen@gmail.com | argusargus |
| Staff | roads1@gmail.com | argusargus |
| Department Head | roadshead@gmail.com | argusargus |
| Admin | admin@gmail.com | argusargus |
| Super Admin | superadmin@gmail.com | argusargus |
| Municipal Commissioner | commissioner@gmail.com | argusargus |
POST /api/complaints/citizen/{citizenId} # Create complaint
POST /api/complaints/citizen/{citizenId}/with-image # Create with image
GET /api/complaints/{complaintId} # Get complaint
GET /api/complaints/{complaintId}/details # Get full details
PUT /api/complaints/{id}/state # Update state
PUT /api/complaints/{id}/resolve # Mark resolved
PUT /api/complaints/{id}/close # Close complaintGET /api/users # Get all users
POST /api/users # Create user
POST /api/users/staff?deptId=1 # Create staff
GET /api/users/department/{deptId}/staff # Get department staff
PUT /api/users/{userId}/assign-head?deptId=1 # Assign as dept headGET /api/departments # Get all departments
GET /api/categories # Get all categories
POST /api/categories # Create categoryGET /api/sla # Get all SLA configs
POST /api/sla?categoryId=1&departmentId=1 # Create SLA
PUT /api/sla/{id} # Update SLAGET /api/complaints/{id}/escalations # Get escalation history
GET /api/escalations/overdue # Get overdue complaints
GET /api/escalations/stats # Get statistics
POST /api/escalations/trigger # Manual triggerGET /api/gamification/citizens/leaderboard # Citizen leaderboard
GET /api/gamification/staff/leaderboard # Staff leaderboard
GET /api/gamification/citizens/{citizenId}/points # Citizen points
GET /api/gamification/staff/{staffId}/stats # Staff statistics
GET /api/gamification/thresholds # Tier thresholds| Document | Description |
|---|---|
| AI_INTEGRATION.md | AI classification prompts and examples |
| DEPLOYMENT.md | Production deployment guide |
| ENDPOINTS.md | Complete API reference |
| ERROR_HANDLING.md | Error codes and handling |
| ESCALATION_MANAGEMENT.md | Escalation rules and architecture |
| GAMIFICATION.md | Points system and leaderboards |
| IMAGE_INTEGRATION.md | Image upload and analysis |
| STAFF_MANAGEMENT.md | Staff roles and assignment |
| STATE_MANAGEMENT.md | Complaint lifecycle states |
| WHATSAPP_INTEGRATION.md | WhatsApp/Twilio setup |
| FRONTEND_ARCHITECTURE.md | Frontend structure guide |
| Variable | Default | Description |
|---|---|---|
DB_URL |
jdbc:mysql://localhost:3306/springdb |
Database connection URL |
DB_USERNAME |
root |
Database username |
DB_PASSWORD |
root |
Database password |
INIT_SAMPLE_DATA |
true |
Initialize sample data |
API_SECRET_KEY |
- | Google Gemini API key |
AWS_S3_ENABLED |
true |
Enable S3 storage |
AWS_ACCESS_KEY_ID |
- | AWS access key |
AWS_SECRET_ACCESS_KEY |
- | AWS secret key |
AWS_S3_BUCKET |
- | S3 bucket name |
AWS_REGION |
ap-south-1 |
AWS region |
TWILIO_ENABLED |
true |
Enable WhatsApp |
TWILIO_ACCOUNT_SID |
- | Twilio Account SID |
TWILIO_AUTH_TOKEN |
- | Twilio Auth Token |
ESCALATION_CRON |
0 0 0/6 * * * |
Escalation check interval |
| Role | Permissions |
|---|---|
| CITIZEN | File complaints, track status, rate resolutions, view leaderboard |
| STAFF | View assigned complaints, mark as resolved |
| DEPT_HEAD | Manage department staff, view department complaints, handle L1 escalations |
| ADMIN | Manage staff/heads, departments, categories, SLAs, all complaints |
| SUPER_ADMIN | Full system access including user management |
| MUNICIPAL_COMMISSIONER | View all complaints, handle L2 escalations, system oversight |
โโโโโโโโโโโ AI Processing โโโโโโโโโโโโโโโ Staff Action โโโโโโโโโโโโ
โ FILED โ โโโโโโโโโโโโโโโโโโโถ โ IN_PROGRESS โ โโโโโโโโโโโโโโโโโโถ โ RESOLVED โ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ โ
โ โ โ Citizen/Auto
โ โ โผ
โ โ โโโโโโโโโโโ
โโโโโโโโโโโโโโ Any State โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโถโ CLOSED โ
โ โโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโ
โ CANCELLED โ
โโโโโโโโโโโโโ
| Level | Assignee | Trigger |
|---|---|---|
| L0 | Staff | Default (within SLA) |
| L1 | Department Head | SLA + 1 day breached |
| L2 | Municipal Commissioner | SLA + 3 days breached |
| Action | Points |
|---|---|
| File complaint | +10 |
| Complaint resolved | +20 |
| Receive upvote | +5 |
| Clean record bonus | +50 |
| Tier | Points | Benefit |
|---|---|---|
| ๐ฅ Bronze | 0+ | Base level |
| ๐ฅ Silver | 100+ | Priority boost |
| ๐ฅ Gold | 200+ | Enhanced visibility |
| ๐ Platinum | 500+ | Top recognition |
- Framework: Spring Boot 3.5
- Language: Java 17
- Database: MySQL 8.0
- ORM: Spring Data JPA / Hibernate
- Validation: Jakarta Validation
- AI: Google Gemini API
- Storage: AWS S3
- Messaging: Twilio SDK
- Framework: React 19
- Routing: React Router 7
- Styling: Tailwind CSS 3.4
- Maps: Leaflet / React-Leaflet
- Icons: Lucide React
- Build: Create React App
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For support, please send a mail to contactforkishore@gmail.com .
Built by Maverick for better civic engagement
