This guide helps you validate that all components are working correctly.
- Backend running on
http://localhost:8000 - Frontend running on
http://localhost:5173 - MongoDB running (verify with
mongo --version) - Redis running (verify with
redis-cli ping) -
.envfile filled with API keys
Status: ✅ Verifies backend is running
curl http://localhost:8000/Expected Response:
{
"status": "healthy",
"service": "HackQuest AI Backend",
"version": "1.0.0",
"environment": "development"
}Status: ✅ Create new user account
curl -X POST http://localhost:8000/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "testuser@example.com",
"password": "TestPassword123!",
"username": "testuser",
"full_name": "Test User"
}'Expected Response:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"token_type": "bearer",
"expires_in": 86400
}Success Criteria:
- ✅ Returns access and refresh tokens
- ✅ Status code: 200
- ✅ Token is JWT format
Status: ✅ Login with credentials
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "testuser@example.com",
"password": "TestPassword123!"
}'Expected Response:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"token_type": "bearer",
"expires_in": 86400
}Status: ✅ List all active hackathons
curl "http://localhost:8000/api/matches/hackathons"Expected Response:
{
"success": true,
"data": [
{
"id": "...",
"title": "HackStart 2024",
"platform": "devpost",
"difficulty": "intermediate",
"skills_match": 0.75,
"win_probability": 0.65,
"prize_pool": 10000,
...
}
],
"total": 0,
"message": "Retrieved 0 hackathons"
}Success Criteria:
- ✅ Returns array of hackathons
- ✅ Each hackathon has required fields
- ✅ Status code: 200
Status: ✅ Retrieve profile information
# Get user ID from registration response, then:
curl "http://localhost:8000/api/profile/{user_id}"Expected Response:
{
"success": true,
"data": {
"id": "...",
"email": "testuser@example.com",
"username": "testuser",
"full_name": "Test User",
"skills": [],
"github_username": null,
"hackathons_participated": 0,
"win_rate": 0.0,
...
},
"message": "Profile retrieved successfully"
}Success Criteria:
- ✅ Returns user profile data
- ✅ Email matches login
- ✅ Status code: 200
- URL: http://localhost:5173
- Expected: See login page
- Criteria: ✅ Page loads, no console errors
- Click "Sign In" tab
- Enter test email:
testuser@example.com - Enter password:
TestPassword123! - Click "Sign In"
Success Criteria:
- ✅ Redirects to Dashboard
- ✅ User name appears in navbar
- ✅ No error toasts
- URL: http://localhost:5173/dashboard
- Expected: See match cards with stats
- Criteria:
- ✅ Loads without errors
- ✅ Shows stats cards (Total Matches, Avg Win Probability, Best Prize)
- ✅ WebGL background animates
- URL: http://localhost:5173/matches
- Expected: See filter dropdowns and match list
- Criteria:
- ✅ Difficulty and Platform filters work
- ✅ Match cards display properly
- ✅ Clicking card shows details
- URL: http://localhost:5173/generate
- Expected: See step-by-step wizard
- Criteria:
- ✅ All 4 steps are functional
- ✅ Framework selection works
- ✅ Skill tags toggle properly
- Check: Bottom-left corner of screen
- Expected: Floating particles and animated lines
- Criteria:
- ✅ Particles move smoothly
- ✅ Lines rotate continuously
- ✅ No WebGL errors in console
# Connect to MongoDB
mongo
# Check database
use hackquest
# Check collections
show collections
# Count documents
db.users.countDocuments()
db.hackathons.countDocuments()
# View sample user
db.users.findOne()Success Criteria:
- ✅ Database
hackquestexists - ✅ Collections: users, hackathons, submissions, matches
- ✅ User document has correct structure
# Check Redis connectivity
redis-cli ping
# Check cached data
redis-cli keys "matches:*"
# View cached match
redis-cli get "matches:{user_id}"Success Criteria:
- ✅
PONGresponse to ping - ✅ Keys exist for cached matches
- ✅ Values are valid JSON
curl -H "Authorization: Bearer invalid_token" \
http://localhost:8000/api/profile/useridExpected:
- Status: 401 Unauthorized
- Message about invalid token
curl -X POST http://localhost:8000/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com"
}'Expected:
- Status: 422 Unprocessable Entity
- Details about missing fields
curl -H "Origin: http://localhost:5173" \
-H "Access-Control-Request-Method: GET" \
-H "Access-Control-Request-Headers: content-type" \
-X OPTIONS http://localhost:8000/api/matches/hackathonsExpected:
Access-Control-Allow-Origin: http://localhost:5173- Status: 200
# Test dashboard response time
time curl http://localhost:8000/api/matches/hackathonsTarget: < 500ms for initial request
# Using Apache Bench (if installed)
ab -n 100 -c 10 http://localhost:8000/api/healthSuccess Criteria:
- ✅ All requests complete
- ✅ No errors
- ✅ Average response < 100ms
# Terminal where backend is running
# Should show:
# - ✅ Database connection messages
# - ✅ Request logs
# - No error tracesBrowser DevTools → Console
Should show:
- ✅ No red errors
- ✅ API responses logged
- ✅ Animation frames updating
Browser DevTools → Network
Should show:
- ✅ All requests returning 200/201
- ✅ Response payload sizes reasonable
- ✅ No 401/403 errors
Backend:
- Health check passes
- User registration works
- User login works
- Get hackathons returns data
- Get profile works
- All endpoints have proper error handling
- MongoDB has user documents
- Redis is caching properly
Frontend:
- Login page renders
- Dashboard loads after login
- Matches page shows data
- Code Generator wizard works
- Navigation between pages works
- WebGL animation visible
- Mobile layout responsive
- No console errors
Infrastructure:
- MongoDB running
- Redis running
- Backend on :8000
- Frontend on :5173
- .env file complete
- ✅ Visit home page
- ✅ Register new account
- ✅ Login with new credentials
- ✅ View dashboard
- ✅ Browse matches
- ✅ Generate code
- ✅ Download generated code
- ✅ Logout
- ✅ User submits GitHub username
- ✅ Sync GitHub data via profile update
- ✅ View GitHub stats in profile
- ✅ Skills extracted and displayed
- ✅ Open WebSocket connection
- ✅ Send find_matches event
- ✅ Receive status updates
- ✅ Get final results
| Metric | Target | Status |
|---|---|---|
| Page Load Time | < 2s | ✅ |
| API Response Time | < 500ms | ✅ |
| Authentication Success Rate | 99.9% | ✅ |
| Database Latency | < 100ms | ✅ |
| WebGL FPS | 60 FPS | ✅ |
# Check Python version
python --version # Should be 3.9+
# Check port 8000 is free
lsof -i :8000
# Check all dependencies installed
pip list | grep fastapi# Check MongoDB
mongosh # or: mongo
# Check Redis
redis-cli ping1. Check browser console for errors
2. Verify config.api.baseUrl is correct
3. Check backend is running
4. Clear browser cache
# Token expired or invalid
# Re-login to get new token
# Verify token in Authorization headerIf tests fail:
- Check SETUP.md for prerequisites
- Review error messages in terminal
- Check .env file is complete
- Verify all services are running
- Check GitHub Issues for similar problems
Status: Ready to Test! 🧪
Run through these tests to validate your installation is complete and working correctly.