π 1st Place SDx Replit Vibe Coding 2025 Hackathon
A web-based cybersecurity scanning tool that provides comprehensive website security checks. The platform offers a free tier with basic features and a premium one-time purchase option for advanced functionality.
- Simple URL input interface
- Comprehensive security checks
- HTTPS implementation
- SSL certificate validity
- Content Security Policy (CSP)
- X-Frame-Options
- HTTP Strict Transport Security (HSTS)
- Directory listing vulnerabilities
- Server information leakage
- Admin page exposure
- HTTPS form submission
- Referrer policy
All free tier checks plus:
- CORS configuration
- Cookie security
- Debug mode detection
- Redirect analysis
- Rate limiting
- Additional advanced checks like:
- Free Users: Pass/Fail/Warning indicators for 10 checks
- Premium Users:
- Detailed results for all 20 checks
- "Fix Prompt" button for each identified issue
- PDF/JSON export capability
- Firebase Authentication (email/password or Google OAuth)
- Scan History:
- Free: Up to 5 scans
- Premium: Unlimited scans
- Premium Fix Prompts: Pre-written LLM prompts for issue resolution
- 10 security checks
- 5 scan history limit
- Basic results dashboard
- All 20 security checks
- Fix prompts for identified issues
- Unlimited scan history
- Export functionality (PDF/JSON)
- Multi-user access
- API integration
- Custom branding options
pip install -r requirements.txtThe security scanner is implemented in Go for improved performance. To build the scanner:
# Install Go dependencies
go mod tidy
# Build for multiple platforms (recommended)
chmod +x build.sh && ./build.sh
# OR build for current platform only
go build -o goscan main.goThe scanner automatically detects the platform and uses the correct executable:
goscan-linux-amd64- Linux servers (Render, AWS, etc.)goscan-darwin-amd64- Intel macOSgoscan-darwin-arm64- Apple Silicon macOS
# Run tests
pytest
# Lint code
ruff check .
# Format code
ruff format .
# Run both linting and tests
ruff check . && ruff format . && pytest-
Copy
.env.exampleto.env:cp .env.example .env
-
Configure Firebase credentials in
.env:FIREBASE_API_KEY=your_firebase_api_key FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com FIREBASE_PROJECT_ID=your_project_id FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app FIREBASE_MESSAGING_SENDER_ID=your_sender_id FIREBASE_APP_ID=your_app_id FIREBASE_MEASUREMENT_ID=your_measurement_id
-
Place your Firebase service account JSON file in the project root
- Never commit this file to version control!
- The file should be named similar to:
projectname-firebase-adminsdk-xxxxx.json
python main.pyApplication will start on http://localhost:8000
βββ main.py # Application entry point
βββ config.py # Firebase & FastAPI configuration
βββ auth.py # Authentication utilities
βββ tasks.py # Background scheduled tasks
βββ scanner.py # Security scanning wrapper (calls Go executable)
βββ main.go # Go-based security scanner implementation
βββ go.mod # Go module dependencies
βββ goscan # Compiled Go scanner executable
βββ routes/ # Route modules
β βββ main.py # Page routes (/, /dashboard, /blog, /privacy, /terms)
β βββ api.py # Core API (scan, contact, verify-token)
β βββ admin.py # Admin endpoints (user management)
β βββ debug.py # Debug & diagnostics
β βββ replit.py # Replit security checks
β βββ stats.py # Statistics & analytics
β βββ scans.py # Scan management (history, scheduling)
βββ static/ # Frontend assets
β βββ css/ # Stylesheets
β βββ js/ # JavaScript modules
βββ templates/ # HTML templates
β βββ index.html # Main landing page
β βββ dashboard.html # User dashboard
β βββ blog.html # Security blog
β βββ stats.html # Usage statistics
β βββ privacy.html # Privacy policy
β βββ terms.html # Terms of service
βββ .env.example # Environment variables template
graph LR
USER[π€ User] --> PAGES[π Web Pages]
PAGES --> MAIN[π main.py]
MAIN --> ROUTES[π Route Modules]
ROUTES --> API[π API Routes]
ROUTES --> SCANS[π Scan Routes]
ROUTES --> STATS[π Stats Routes]
API --> SCANNER[π Scanner]
API --> AUTH[π Auth]
API --> DB[(πΎ Firestore)]
SCANS --> AUTH
SCANS --> DB
STATS --> DB
MAIN --> TASKS[β° Background Tasks]
TASKS --> SCANNER
SCANNER --> WEB[π Target Sites]
%% Clean styling
classDef default fill:#f8fafc,stroke:#64748b,stroke-width:2px,color:#334155
classDef user fill:#dbeafe,stroke:#3b82f6,stroke-width:2px,color:#1e40af
classDef app fill:#dcfce7,stroke:#22c55e,stroke-width:2px,color:#15803d
classDef routes fill:#fef3c7,stroke:#f59e0b,stroke-width:2px,color:#d97706
classDef services fill:#fce7f3,stroke:#ec4899,stroke-width:2px,color:#be185d
classDef external fill:#e0f2fe,stroke:#0891b2,stroke-width:2px,color:#0e7490
class USER user
class PAGES,MAIN app
class ROUTES,API,SCANS,STATS routes
class SCANNER,AUTH,TASKS services
class DB,WEB external
- Modular Design: Separated concerns with dedicated modules
- FastAPI: High-performance async Python web framework
- Firebase: Authentication and Firestore database
- Background Tasks: Scheduled scanning with asyncio
- Backend: FastAPI + Firebase (Auth & Firestore)
- Scanner: Go (high-performance security scanning)
- Frontend: HTML/CSS/JavaScript (modular approach)
- Styling: Tailwind CSS + Custom CSS
- Database: Firestore (NoSQL document database)
- Authentication: Firebase Auth
- Deployment: Render + Firebase Hosting
- Security Scanning: High-performance Go-based website vulnerability assessment
- User Authentication: Firebase-based secure login system
- Scan History: Persistent storage and management of scan results
- Scheduled Scans: Automated background scanning with configurable intervals
- Real-time Statistics: Usage analytics and performance metrics
- Premium Features: Advanced scanning and export capabilities
- Never commit credentials (API keys, service accounts, etc.)
- Use environment variables for all sensitive configuration
- Test security changes thoroughly before submitting PRs
- Fork and clone the repository
- Follow the environment setup instructions above
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Submit a pull request
- Follow existing code patterns and conventions
- Keep modules focused on single responsibilities
- Add docstrings to new functions and classes
- Test your changes before submitting
