AI-powered targeted wordlist generator and PII intelligence platform for security professionals and individuals who take password safety seriously.
| Service | URL | Status |
|---|---|---|
| Frontend (Vercel) | pii-casso.vercel.app | |
| Backend API (Render) | core-engine-woeg.onrender.com/api | |
| API Docs (Swagger) | /api/docs |
PIIcasso is a full-stack Deep Search Intelligence Platform with a dual-mode architecture:
- Security Mode (Tactical Dark/Red) — Red teams and penetration testers generate AI-powered, profile-based wordlists with 3D threat visualization, risk radar charts, and dossier PDF exports.
- User Mode (Midnight Cobalt Glass) — Individuals assess their own password strength against PII-based cracking patterns, with breach history visualization and real-time scoring.
The platform runs on Django REST Framework + React 18, containerized with Docker + Nginx, deployed to Render + Vercel, and powered by Google Gemini for intelligent wordlist generation.
| Feature | Description |
|---|---|
| AI Wordlist Generation | Google Gemini LLM generates profile-based wordlists from PII inputs |
| PII Detection Engine | Client-side piiEngine.js scores crackability from personal data patterns |
| Smart Permutations | Algorithmic generation: leetspeak, date variants, common suffixes |
| 3D Threat Globe | WebGL globe (react-globe.gl) with live user presence via cache heartbeats |
| Risk Radar | Chart.js radar visualization of password vulnerability dimensions |
| Dossier Export | PDF report generation (reportlab) of full intelligence output |
| Live Password Testing | Real-time strength scoring with vulnerability breakdown and recommendations |
| Operation History | Expandable rows showing vulnerabilities and per-entry recommendations |
| Team Management | Multi-user team workspaces with role-based access |
| Admin Panel | Super admin role promotion/demotion with management command bootstrap |
| Dual-Mode Theming | data-mode CSS variable system — Security (tactical red) / User (glass morphism) |
| Responsive | Mobile-first (320px+), tablet (768px+), desktop (1024px+) with 44px touch targets |
┌─────────────┐
Browser ──────▶│ Vercel │ React 18 SPA
│ (Frontend) │ Tailwind + Framer Motion
└──────┬──────┘
│ HTTPS / REST API
┌──────▼──────┐
│ Nginx │ least_conn + keepalive
│ (Render) │ Reverse proxy + SSL termination
└──────┬──────┘
┌───────────┼───────────┐
┌──────▼──────┐ ┌──────▼──────┐
│ Gunicorn │ ... │ Gunicorn │ 2 workers × N replicas
│ Worker 1 │ │ Worker N │ --scale web=N
└──────┬──────┘ └──────┬──────┘
└───────────┬───────────┘
┌──────▼──────┐
│ Django │ DRF · SimpleJWT · Google OAuth
│ 5.x API │ Gemini AI · ReportLab · Prometheus
└──────┬──────┘
┌───────────┼───────────┐
┌──────▼──────┐ ┌──────▼──────┐
│ PostgreSQL │ │ Redis │ Cache · Heartbeats
│ (Primary) │ │ (Cache) │ Rate limiting
└─────────────┘ └─────────────┘
Observability:
Django Middleware ──▶ Prometheus ──▶ Grafana Cloud
│
Sentry (errors) ────────┤
Better Stack (uptime) ──┘
| Technology | Version | Purpose |
|---|---|---|
| Django | 5.x | Web framework |
| Django REST Framework | latest | REST API |
| PostgreSQL | 15+ | Primary database |
| Redis | 7+ | Caching, live presence |
| SimpleJWT | latest | JWT auth + refresh tokens |
| Google Gemini API | v1 | AI wordlist generation |
| ReportLab | latest | PDF dossier export |
| Gunicorn | latest | WSGI server (2 workers, 120s timeout) |
| Prometheus | latest | Metrics middleware |
| Docker | 24+ | Containerization |
| Technology | Version | Purpose |
|---|---|---|
| React | 18 | UI framework |
| Tailwind CSS | 3.x | Utility-first styling |
| Framer Motion | 12.x | Page + component animations |
| Three.js / react-globe.gl | latest | 3D threat globe |
| Chart.js / react-chartjs-2 | latest | Radar + bar charts |
| Lucide React | latest | Icon library |
| @react-oauth/google | latest | Google SSO |
| class-variance-authority | latest | Component variants |
git clone https://github.com/yokesh-kumar-M/Piicasso.git
cd Piicasso/Piicasso
# Copy and configure environment variables
cp backend/.env.example backend/.env
# Edit backend/.env with your values (see Environment Variables below)
# Start all services
docker compose up --build
# Scale web workers (optional)
docker compose up --scale web=3Services start at:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000/api/
- Nginx proxy: http://localhost:80
Backend
cd Piicasso/backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Configure .env (see Environment Variables below)
python manage.py migrate
python manage.py ensure_admin # Creates default admin account
python manage.py runserver # http://localhost:8000Frontend
cd Piicasso/frontend
npm install
# Configure .env
echo "REACT_APP_API_URL=http://localhost:8000/api/" > .env
npm start # http://localhost:3000| Variable | Required | Description |
|---|---|---|
DJANGO_SECRET_KEY |
Yes | Django secret key |
DEBUG |
Yes | True for dev, False for prod |
ENV |
Yes | development or production |
DATABASE_URL |
Yes | postgresql://user:pass@host:5432/piicasso |
REDIS_URL |
No | redis://localhost:6379/0 |
GEMINI_API_KEY |
Yes | Google Gemini API key |
GOOGLE_CLIENT_ID |
No | Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
No | Google OAuth client secret |
ALLOWED_HOSTS |
Yes | Comma-separated hostnames |
CORS_ALLOWED_ORIGINS |
Yes | Comma-separated frontend origins |
SENTRY_DSN |
No | Sentry error tracking DSN |
| Variable | Required | Description |
|---|---|---|
REACT_APP_API_URL |
Yes | Backend API base URL |
REACT_APP_GOOGLE_CLIENT_ID |
No | Google OAuth client ID |
- Connect your GitHub repo to Render
- Create a Web Service pointing to
Piicasso/(root Dockerfile) - Set all required environment variables in the Render dashboard
- Render auto-deploys on push to
main
- Import the repo to Vercel
- Set root directory to
Piicasso/frontend - Add
REACT_APP_API_URLpointing to your Render backend URL - Deploy — Vercel handles builds automatically
| Component | Provider | Config |
|---|---|---|
| Backend hosting | Render (free tier) | 2 Gunicorn workers, 120s timeout |
| Frontend hosting | Vercel | Edge CDN, automatic HTTPS |
| Database | PostgreSQL | Managed (Render or external) |
| Cache | Redis | Render Redis or Upstash |
| Nginx | Docker (Render) | least_conn + keepalive upstream |
| Tool | Purpose | Coverage |
|---|---|---|
| Sentry | Error tracking | Backend + Frontend |
| Better Stack | Uptime monitoring | 3 endpoints |
| Prometheus | Metrics collection | Django middleware |
| Grafana Cloud | Dashboards | Performance + errors |
| Control | Status |
|---|---|
| HTTPS enforced | ✅ Render + Vercel |
| Security headers (CSP, HSTS, X-Frame) | ✅ |
| JWT + refresh tokens | ✅ SimpleJWT |
| Google OAuth | ✅ Cert caching enabled |
| CORS configured | ✅ Per-environment origins |
| Environment secrets | ✅ Never in version control |
GitHub Actions pings both services every 10 minutes to prevent Render/Supabase spin-down. View logs in Actions.
PIIcasso/
├── Piicasso/
│ ├── backend/ # Django API
│ │ ├── core/ # Django project settings
│ │ ├── generator/ # Wordlist generation + Gemini AI
│ │ ├── intelligence/ # Intelligence models + scoring
│ │ ├── operations/ # Operation history API
│ │ ├── password_security/ # Password strength + breach check
│ │ ├── teams/ # Team management
│ │ ├── wordgen/services/ # Wordgen metrics service
│ │ ├── start.sh # Gunicorn entrypoint (2w, 120s)
│ │ └── requirements.txt
│ │
│ ├── frontend/ # React SPA
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── design/ # Design system (11 components)
│ │ │ │ └── pages/ # 15+ page components
│ │ │ ├── context/ # AuthContext, ModeContext
│ │ │ ├── hooks/ # useResponsive, useAuth
│ │ │ ├── lib/ # piiEngine.js
│ │ │ └── api/ # Axios instance + interceptors
│ │ └── nginx.conf # Frontend Nginx config
│ │
│ ├── nginx/nginx.conf # Reverse proxy + load balancing
│ ├── docker-compose.yml # Full-stack orchestration
│ └── Dockerfile # Production backend image
│
├── .github/
│ ├── workflows/ci.yml # CI pipeline
│ └── workflows/keep-alive.yml # Free-tier keep-alive pings
└── README.md
Contributions are welcome. Please follow this flow:
- Fork the repo and create a branch:
git checkout -b feature/your-feature - Make your changes following the code style below
- Run checks:
flake8(backend),npm run lint(frontend) - Commit:
git commit -m 'feat: add your feature' - Push and open a Pull Request against
main
Code style:
- Backend: PEP 8, formatted with
black - Frontend: Airbnb style guide, formatted with
prettier
PIIcasso is intended strictly for authorized security testing, penetration testing, and personal password safety education. Generating wordlists targeting individuals or systems without explicit consent is illegal. The maintainers assume no liability for misuse.
MIT — see LICENSE for details.
© 2026 Yokesh Kumar · dezprox25@gmail.com · Live App