Autoilty.com is a comprehensive business curation platform for the Canadian automotive industry, inspired by the BestDubai.com model. It showcases vetted auto businessesโmechanics, dealerships, parts stores, detailing services, and moreโusing an advanced 10-point scoring system based on reviews, community engagement, social signals, and Canadian-specific excellence factors.
Frontend:
Backend:
Data Curation:
DevOps:
git clone https://github.com/your-org/autoilty.git
cd autoilty
npm install
cd client && npm install && cd ..
pip3 install -r requirements.txt
3. **Configure environment:**
```bash
cp .env.example .env
# Edit .env with your API keys and configuration
npm run seed
npm run dev
npm run client
npm run dev:full
6. **Access the application:**
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- GraphQL Playground: http://localhost:5000/graphql
---
## ๐ณ Docker Deployment
### Development
```bash
docker-compose up -d
docker-compose -f docker-compose.prod.yml up -d
Services:
# Scrape test cities (Toronto, Vancouver, Montreal, Calgary)
python3 scripts/data-scraper.py
# Full scraping (all major Canadian cities)
# Edit data-scraper.py and uncomment scraper.scrape_all_cities()
Rate Limiting: Built-in delays and API rate limit handling ensure ethical scraping.
Data Sources:
Scores are automatically calculated and can be updated:
# Update all business scores
node scripts/score-updater.js
# Update specific business
node scripts/score-updater.js --id BUSINESS_ID
# Run as scheduled daemon (daily at 2 AM)
node scripts/score-updater.js --schedule
npm test # Run all tests
npm test -- --coverage # With coverage report
npm run test:load # Artillery load test
Load Test Scenarios:
Target Metrics:
https://autoilty.com/sitemap.xml
https://autoilty.com/robots.txt
GET /api/businesses # List all businesses (paginated)
GET /api/businesses/:slug # Get business by slug
GET /api/businesses/top/:category # Top businesses by category
GET /api/businesses/nearby # Geospatial search
POST /api/businesses # Create business (auth required)
PUT /api/businesses/:id # Update business (auth required)
POST /api/businesses/:id/vote # Vote on business (auth required)
POST /api/businesses/:id/click/:type # Track analytics
GET /api/search # Full-text search
GET /api/search/autocomplete # Autocomplete suggestions
POST /api/auth/register # Register new user
POST /api/auth/login # Login
GET /api/auth/me # Get current user
PUT /api/auth/updateprofile # Update profile
GET /api/analytics/stats # Platform statistics
GET /api/analytics/business/:id # Business analytics (auth required)
Endpoint: /graphql
Sample Queries:
# Get top mechanics in Ontario
query {
topBusinesses(category: "mechanics", province: "ON", limit: 10) {
name
slug
score {
total
reviews
community
}
location {
address {
city
province
}
}
}
}
# Search businesses
query {
searchBusinesses(query: "auto repair toronto", page: 1, limit: 20) {
businesses {
name
score { total }
}
total
pages
}
}
# Vote on business
mutation {
voteBusiness(businessId: "507f1f77bcf86cd799439011", voteType: "upvote") {
upvotes
downvotes
score { total }
}
}
HomePage
- Hero section, categories grid, top businesses showcaseCategoryPage
- Filtered business listings with infinite scrollBusinessProfile
- Detailed business page with maps, reviews, score breakdownSearchResults
- Full-text search resultsFilterSidebar
- Advanced filtering (province, score, Canadian factors)BusinessCard
- Reusable business card componentTarget:
main # Production
develop # Development
feature/* # Feature branches
hotfix/* # Emergency fixes
npm run lint # ESLint
npm run format # Prettier
npm test # Jest tests
# Build for production
npm run build
# Deploy with Docker
docker-compose -f docker-compose.prod.yml up -d
# Database migrations
npm run migrate
Copyright ยฉ 2025 Autoilty.com. All rights reserved.
This project is proprietary software. Unauthorized copying, modification, or distribution is prohibited.
Built with โค๏ธ in Canada ๐จ๐ฆ
Autoilty.com - Driving Canadian Automotive Excellence