A unified and actionable view of overall website health
SiteSense is a comprehensive web auditing platform that analyzes websites across four key dimensions:
- Performance: Lighthouse-powered metrics and optimization recommendations
- SEO: Search engine optimization analysis
- UX/Accessibility: Axe-core powered accessibility audits
- Security: OWASP ZAP vulnerability scanning
Next.js application providing an intuitive dashboard for viewing scan results.
Express server that orchestrates all auditing modules and provides REST API endpoints.
- crawler (
modules/crawler): Website endpoint discovery - performance (
modules/performance): Lighthouse performance & SEO audits - ux-audit (
modules/ux-audit): Axe-core accessibility testing - security (
modules/security): OWASP ZAP security scanning
- Node.js 18+
- npm or yarn
- OWASP ZAP installed (for security scans)
# Install all dependencies
npm install
# Start both API and frontend
npm run devThis will start:
- API Server: http://localhost:3001
- Web Frontend: http://localhost:3000
# Terminal 1: Start API
npm run start:api
# Terminal 2: Start Web Frontend
npm run dev:web- Navigate to http://localhost:3000
- Click "Start Audit"
- Enter a website URL
- Wait for the comprehensive scan to complete
- View detailed results across all modules
- Live progress updates during scans
- Asynchronous processing of all modules
- Poll-based status checks
- Overall health score (0-100)
- Module-specific scores (Performance, SEO, UX, Security)
- Detailed issue breakdowns with impact/effort analysis
- Visual charts and graphs
All scan results are automatically saved to JSON files in their respective module folders:
modules/crawler/scan-{id}-results.jsonmodules/performance/scan-{id}-results.jsonmodules/ux-audit/scan-{id}-results.jsonmodules/security/scan-{id}-results.json
Download comprehensive reports as PDF documents with all scan details.
See apps/api/README.md for complete API documentation.
POST /api/scan- Start a new scanGET /api/scan/:id- Get scan status and resultsGET /api/scans- Get all scansGET /api/health- Health check
Discovers all internal endpoints on a website using BFS traversal.
- Configurable depth and page limits
- Filters non-HTML resources
- Outputs endpoint list for other modules
Uses Google Lighthouse to audit:
- Core Web Vitals (FCP, LCP, TBT, CLS, SI)
- Performance score
- SEO score
- Optimization opportunities
Uses axe-core to detect:
- WCAG violations
- ARIA issues
- Color contrast problems
- Keyboard navigation issues
Uses OWASP ZAP to scan for:
- SQL injection vulnerabilities
- XSS vulnerabilities
- Security misconfigurations
- SSL/TLS issues
Copy apps/api/.env.example to apps/api/.env and adjust as needed.
To keep scan times reasonable:
- Performance/UX: Limited to 10 endpoints
- Security: Limited to 5 endpoints
- Adjust in
apps/api/index.jsif needed
SiteSense/
├── apps/
│ ├── api/ # Backend API server
│ ├── cli/ # CLI tools
│ └── web/ # Next.js frontend
├── modules/
│ ├── crawler/ # Endpoint discovery
│ ├── performance/ # Lighthouse audits
│ ├── security/ # OWASP ZAP scans
│ ├── ux-audit/ # Axe-core accessibility
│ └── shared/ # Shared utilities
├── db/ # Database utilities
└── package.json # Root workspace config
- Create module in
modules/ - Implement main export function
- Add to API orchestration in
apps/api/index.js - Update frontend to display new results
When adding commit comments, please use the following standard format:
([Commit Type] "Commit message")
Examples:
- (feat "Add user authentication module")
- (fix "Resolve issue with image loading on homepage")
- (docs "Update README with installation instructions")
- (refactor "Simplify database connection logic")
Commit Types:
feat– New featurefix– Bug fixdocs– Documentation changesrefactor– Code refactoringtest– Adding or updating testschore– Maintenance tasks
This format helps maintain clarity and consistency across the project.
Dependencies from individual workspace packages have been consolidated into the root package.json for easier installation and running from the repository root. Conflicts were resolved by choosing the most recent compatible versions where possible. If you prefer per-package isolation, you can continue using the workspace package.json files and adjust versions as needed.