"Empowering tenants. Fixing communities. Anonymously."
TenantWatch is a modern platform designed to help tenants report housing issues anonymously and securely. By aggregating reports on an interactive heatmap, it identifies problem areas and bad actors (negligent landlords) without exposing the identity of the reporter.
Submit issues without fear of retaliation. Your personal contact details are encrypted and visible only to verified admins, never to landlords or the public.
Simply describe your issue (e.g., "The ceiling is leaking and there's mold"). Our built-in AI Engine (powered by Hugging Face) automatically categorizes it as Maintenance, Safety Hazard, Harassment, or Unfair Rent.
Visualize the density of reports in your neighborhood.
- Search & Jump: Instantly find your area (e.g., "Whitefield").
- Smart Filters: Filter by Category (e.g., Safety Only) or Date (Last 7 Days).
- Severity Indicators: Color-coded zones (Red = High Severity).
A dedicated portal for community moderators to:
- Verify incoming reports with evidence.
- Update Status (Reported → In Progress → Resolved).
- Access Private Contact Info for emergencies.
- Framework: Next.js 14 (App Router)
- Styling: Tailwind CSS + Shadcn/UI
- Animations: Framer Motion
- Maps: Leaflet (via React-Leaflet)
- API: FastAPI (Python 3.10+)
- Database: MongoDB Atlas (Cloud)
- AI/ML: Hugging Face Inference API (Zero-Shot Classification)
- ODM: Motor (Async MongoDB driver)
Follow these instructions to set up the project locally.
- Node.js (v18+)
- Python (v3.10+)
- MongoDB Atlas Account
git clone https://github.com/your-username/tenant-watch.git
cd tenant-watchcd backend
python -m venv venv
# Windows
.\venv\Scripts\activate
# Mac/Linux
source venv/bin/activate
pip install -r requirements.txtCreate a .env file in backend/:
MONGODB_URI=mongodb+srv://<your_user>:<your_pass>@cluster.mongodb.net/?retryWrites=true&w=majority
HF_TOKEN=hf_your_hugging_face_tokenRun the server:
uvicorn app:app --reload
# API running at http://localhost:8000cd ../frontend
npm installCreate a .env.local file in frontend/:
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_name
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=your_presetRun the client:
npm run dev
# App running at http://localhost:3000tenant-watch/
├── backend/ # FastAPI Server
│ ├── app.py # Main Application Entry
│ ├── classifier.py # AI Logic
│ └── database.py # DB Connection
├── frontend/ # Next.js Application
│ ├── src/app/ # Pages & Routes
│ ├── src/components/ # UI Components (Heatmap, Forms)
│ └── src/lib/ # Utilities (Store, Admin API)
└── README.md
Contributions are welcome! Please open an issue or PR to suggest improvements.
MIT License.