Your Voice, Our Action.
A unified platform for citizens to register grievances and track resolutions with transparency and accountability.
π Live Demo β’ β¨ Features β’ π οΈ Tech Stack β’ π Getting Started
Setu (meaning "Bridge" in Hindi) is a full-stack Citizen Grievance Redressal Portal that bridges the gap between citizens and government departments. Citizens can submit complaints with photo evidence and GPS location, track resolution status in real-time, and earn civic points for participation. Government officials manage grievances through role-based dashboards.
- Register & Login β Email/password with OTP verification + Google OAuth sign-in
- Submit Grievances β File complaints with category selection, photo attachments, and GPS location
- Real-time Tracking β Track grievance status from submission to resolution
- Civic Points β Earn reward points for submitting reports and providing feedback
- Profile Management β Update personal details, view history
- Feedback System β Rate the resolution quality after closure
- Worker β View assigned grievances, update status
- Operator β Manage and assign grievances within department
- Department Admin β Oversee department-level operations, add users
- Super Admin β Full system control, manage departments, view analytics
- Interactive map powered by Leaflet.js showing grievance locations across India
- Color-coded markers by status (New, Under Review, Resolved, Closed)
- Available in 10 Indian languages including Hindi, Marathi, Tamil, Telugu, Bengali, and more
| Layer | Technology |
|---|---|
| Backend | Java Servlets & JSP (Jakarta EE 6.0) |
| Database | MySQL with HikariCP connection pooling |
| Authentication | BCrypt password hashing + Google OAuth 2.0 |
| Email Service | SendGrid API |
| Image Storage | Cloudinary |
| Frontend | HTML, Tailwind CSS, JavaScript |
| Maps | Leaflet.js |
| Animations | ScrollReveal.js |
| Build Tool | Maven |
| Deployment | Docker + Jetty 11 |
| Analytics | Google Analytics |
- Java 11+
- Maven 3.8+
- MySQL database
- Docker (optional, for containerized deployment)
Create a .env file or set these environment variables on your server:
| Variable | Description |
|---|---|
DB_URL |
MySQL JDBC connection URL |
DB_USER |
Database username |
DB_PASSWORD |
Database password |
CLIENT_ID |
Google OAuth 2.0 Client ID |
CLIENT_SECRET |
Google OAuth 2.0 Client Secret |
EMAIL_API |
SendGrid API key |
SENDER_EMAIL |
Sender email address for OTP/notifications |
CLOUD_NAME |
Cloudinary cloud name |
api_key |
Cloudinary API key |
api_secret |
Cloudinary API secret |
# Clone the repository
git clone https://github.com/Akshatsharma2205/Minor-Project-SETU.git
cd Minor-Project-SETU
# Build with Maven
mvn clean package
# Deploy the generated .war file to a Jetty/Tomcat server# Build the Docker image
docker build -t setu-portal .
# Run the container with environment variables
docker run -p 8080:8080 \
-e DB_URL=your_db_url \
-e DB_USER=your_db_user \
-e DB_PASSWORD=your_db_password \
-e CLIENT_ID=your_google_client_id \
-e CLIENT_SECRET=your_google_client_secret \
-e EMAIL_API=your_sendgrid_key \
-e SENDER_EMAIL=your_sender_email \
-e CLOUD_NAME=your_cloudinary_name \
-e api_key=your_cloudinary_key \
-e api_secret=your_cloudinary_secret \
setu-portalMinor-Project-SETU/
βββ src/main/java/
β βββ controller/ # Servlets (Login, Registration, Grievance, OAuth)
β βββ model/
β β βββ dao/ # Data Access Objects (CitizenDAO, GovDAO, ReportDAO)
β β βββ entity/ # Entity classes (Citizen, GovUser, Report)
β β βββ Database.java # HikariCP connection pool
β β βββ EmailUtil.java # SendGrid email utility
βββ src/main/webapp/
β βββ citizen/ # Citizen-facing JSP pages
β βββ gov/ # Government dashboard JSP pages
β βββ js/ # JavaScript files
β βββ style/ # CSS stylesheets
β βββ index.html # Landing page
βββ Dockerfile # Multi-stage Docker build
βββ pom.xml # Maven dependencies
βββ .gitignore
Designed, Developed and Hosted by Team SETU
This project is open source and available for educational purposes.
