A full-stack, anonymous crime-reporting platform built with Flask & MySQL.
👆 Click the image to launch the live preview
RapidReport lets people report crimes anonymously — without ever exposing their identity — and gives administrators a clean panel to track and resolve those reports.
| For Victims | For Admins |
|---|---|
| 🕶️ Report crimes 100% anonymously | 📊 Dashboard with live stats |
| 🔐 Secure account with hashed passwords | 📋 View & manage every report |
| 📁 Track your own reports in a dashboard | 🔄 Update report status in one click |
| ✉️ Reach out via the contact form | 👥 See registered-user counts |
| Feature | |
|---|---|
| ✅ | Anonymous Reporting — submit crime reports without revealing identity |
| ✅ | Secure Auth — bcrypt password hashing + Flask sessions |
| ✅ | User Dashboard — track the status of every report you file |
| ✅ | Admin Panel — view all reports, update statuses, monitor stats |
| ✅ | Contact Form — messages saved straight to the database |
| ✅ | Animated UI — scroll reveals, counters, responsive design |
| ✅ | Hardened Config — secrets via .env, debug off by default |
Prerequisites: Python 3.9+ · MySQL 8.0+
# 1️⃣ Enter the project & set up a virtual environment
cd rapidreport
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS / Linux
# 2️⃣ Install dependencies
pip install -r requirements.txt
# 3️⃣ Create the database
mysql -u root -p < schema.sql
# 4️⃣ Configure your secrets
cp .env.example .env # then edit .env → set DB_PASSWORD & SECRET_KEY
# 5️⃣ Launch 🚀
python app.pyThen open http://localhost:5000 — you're live.
| Field | Value |
|---|---|
admin@rapidreport.in |
|
| 🔑 Password | Admin@1234 |
⚠️ Change this password immediately after your first login. To promote any user to admin:UPDATE users SET role='admin' WHERE email='your@email.com';
| Table | Purpose |
|---|---|
users |
Registered users with bcrypt-hashed passwords |
reports |
All crime reports, with status tracking |
contact_messages |
Submissions from the contact form |
This build ships with sane security defaults:
- No hardcoded secrets — DB password & secret key load from
.env - Debug off by default — enable only via
FLASK_DEBUG=1for local dev - Passwords hashed with bcrypt (never stored in plaintext)
- SQL-injection safe — all queries are parameterized
- XSS safe — Jinja auto-escaping left intact
Recommended next steps for production: add CSRF protection, login rate-limiting, and set
SESSION_COOKIE_SECUREbehind HTTPS.
rapidreport/
├── app.py ← Main Flask application
├── schema.sql ← MySQL database schema
├── requirements.txt ← Python dependencies
├── .env.example ← Environment variables template
├── assets/
│ └── indexpage.png ← Homepage preview
├── templates/ ← HTML pages (Jinja2)
└── static/
├── css/style.css ← All styles
└── js/main.js ← Animations & counters
Backend · Python Flask | Database · MySQL | Auth · bcrypt + Flask sessions Frontend · HTML5 · CSS3 · Vanilla JS | Fonts · Bebas Neue · DM Sans · Space Mono
© 2026 RapidReport — Report. Protect. Empower.