A comprehensive AI-powered platform for IMEI device compatibility analysis, network coverage monitoring, and user feedback collection with multilingual support and voice synthesis.
Last Updated: November 11, 2025
- Overview
- Features
- Recent Developments
- Quick Start
- Environment Setup
- API Documentation
- Project Structure
- Development Guide
- Deployment
- Contributing
- License
This full-stack platform provides comprehensive IMEI device analysis and network monitoring capabilities, designed for mobile carriers, MVNOs, device compatibility services, and network infrastructure monitoring. Built with modern technologies and AI-powered insights, it offers real-time device identification, network compatibility analysis, and user satisfaction tracking.
- MVNO Operations: Device compatibility verification for customer onboarding
- Network Carriers: Coverage analysis and quality monitoring across regions
- Device Retailers: Pre-sale compatibility checks for customer assurance
- Technical Support: Automated device identification and troubleshooting
- Market Research: User satisfaction tracking via NPS surveys
- API Integration: RESTful APIs for third-party service integration
- Google Gemini Integration: Advanced AI identification using TAC (Type Allocation Code) analysis
- Intelligent Fallback System: Comprehensive device database for offline operation
- Network Compatibility: Complete 4G/5G/VoLTE/Wi-Fi Calling capability analysis
- Multi-Carrier Support: AT&T, Verizon, T-Mobile, Rogers, Bell, Telus, and more
- Real-time Analysis: Sub-second IMEI lookup with detailed specifications
- Provider Comparison: Side-by-side coverage analysis for multiple carriers
- AI-Powered Insights: Gemini-driven coverage quality assessment
- Downdetector Integration: Real-time outage and issue detection
- Google Maps Integration: Visual coverage maps with interactive markers
- Location-Based Analysis: Automatic carrier detection based on GPS coordinates
- Issue Reporting: User-submitted network problems with AI pattern recognition
- ElevenLabs Integration: High-quality AI voice synthesis
- Voice Styles: Standard, harmonizing, singing, and rock ballad modes
- USSD Instructions: Voice-guided help for finding IMEI (*#06#) in any language
- Supported Languages: English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Polish, Turkish, Chinese (Mandarin & Cantonese), Japanese, Korean, Hindi, Thai, Vietnamese, Indonesian, Arabic, Hebrew, Swedish, Norwegian, Danish, Finnish, Greek, Czech, Hungarian, Romanian, Bulgarian, Croatian, Slovak
- NPS (Net Promoter Score) System: Non-intrusive feedback collection after searches
- Admin Dashboard: Comprehensive metrics including:
- Real-time NPS score calculation
- Promoter/Passive/Detractor breakdown
- Recent feedback with sentiment analysis
- User satisfaction trends
- Search Analytics: Device popularity, success rates, geographic distribution
- Rate Limit Monitoring: Track API usage and enforce limits by tier
- Monthly Email Insights: Automated connectivity reports for registered users
- Magic Link Authentication: Secure email-based admin access via Resend
- Real-time Notifications: Firebase Cloud Messaging for alerts
- Admin Access Tracking: Complete audit trail of authentication attempts
- API Key Management: Secure key generation and validation
- Enhanced Rate Limiting: Tiered limits (100/500/1000 requests per hour)
- PostgreSQL Database: Robust data persistence with Drizzle ORM
- Session Management: Secure admin sessions with PostgreSQL storage
- Input Validation: Zod schemas for all API endpoints
- CORS Configuration: Production-ready cross-origin controls
- RESTful Architecture: Clean, documented endpoints
- OpenAPI Compatible: Easy integration with any language/framework
- JSON Responses: Structured data perfect for LLM/AI processing
- Export Capabilities: CSV and JSON data export with example data for unauthenticated users
- Versioned APIs:
/api/v1for stable production use - MCP Server Ready: Optimized for Model Context Protocol integration
- Demo-Friendly: Download example exports without authentication for testing
- β Non-intrusive Widget: Appears 3 seconds after successful IMEI search
- β Smart Positioning: Bottom-right desktop, bottom-center mobile
- β 0-10 Rating Scale: Standard NPS methodology with optional text feedback
- β Admin Dashboard: Real-time NPS metrics with distribution charts
- β
Database Schema: Complete
nps_responsestable with timestamps - β
API Endpoints:
/api/nps/submitand/api/admin/nps/*
- β Resend Magic Links: Email-based admin authentication from rbm@dotmobile.app
- β Access Request Tracking: All login attempts recorded with metadata
- β Firebase Bypass: Backend-only approach avoids domain whitelist issues
- β Session Metadata: IP, user agent, location, and timestamp tracking
- β ElevenLabs Integration: Template-based caching for cost optimization
- β 30+ Language Support: Complete voice synthesis across all languages
- β Harmonizing Modes: Multi-voice singing for USSD instructions
- β Voice Agent API: Endpoints for language/voice selection
- β Provider Selection: Choose specific carrier or auto-detect by location
- β Issue Analyzer: AI-powered network problem classification
- β Pattern Recognition: Identify widespread vs. isolated issues
- β Mobile/Broadband Split: Separate analysis for service types
- β Optional Authentication: Export works with or without API key
- β Example Data: Download sample exports for testing and demonstration
- β Clear Indicators: Example files clearly marked with instructions
- β User-Friendly: No authentication errors for casual users exploring features
- β Smart Detection: Frontend automatically detects and labels example data
- Node.js v18+ (Download)
- PostgreSQL v12+ (Download)
- Git (Download)
- API Keys (see Environment Setup)
# Clone the repository (replace with your GitHub repository URL after pushing)
git clone https://github.com/YOUR_USERNAME/imei-device-checker.git
cd imei-device-checker
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your API keys and database URL
# Initialize database
npm run db:push
# Start development server
npm run devThe application will be available at http://localhost:5000
Create a .env file in the root directory:
# === DATABASE ===
DATABASE_URL="postgresql://username:password@localhost:5432/app_dev"
# === AI SERVICES ===
# Google Gemini API for device identification
GEMINI_API_KEY="your_gemini_api_key"
# === FIREBASE (Authentication & Messaging) ===
VITE_FIREBASE_API_KEY="your_firebase_api_key"
VITE_FIREBASE_PROJECT_ID="your_project_id"
VITE_FIREBASE_APP_ID="your_app_id"
FIREBASE_SERVICE_ACCOUNT_JSON='{"type":"service_account",...}'
# === MAPS & LOCATION ===
GORSE_GOOGLE_API_KEY="your_google_maps_api_key"
GOOGLE_MAPS_API_KEY="your_google_maps_api_key"
# === EMAIL SERVICES ===
# Resend for magic link authentication
RESEND_API_KEY="your_resend_api_key"
# SendGrid for monthly insights (optional)
SENDGRID_API_KEY="your_sendgrid_api_key"
# === VOICE SYNTHESIS (Optional) ===
ELEVENLABS_API_KEY="your_elevenlabs_api_key"
# === APPLICATION CONFIG ===
NODE_ENV="development"
PORT="5000"
SESSION_SECRET="your_secure_random_string_here"
ADMIN_EMAIL="rbm@dotmobile.app"- Visit Google AI Studio
- Create new project or select existing
- Generate API key
- Add to
.envasGEMINI_API_KEY
- Go to Firebase Console
- Create project
- Enable Authentication (Email/Password + Google)
- Enable Cloud Messaging (FCM)
- Download service account key (JSON)
- Add credentials to
.env
- Visit Google Cloud Console
- Enable Maps Static API and Maps JavaScript API
- Create API key
- Restrict key to your domain
- Add to
.env
- Sign up at Resend
- Verify domain or use test domain
- Create API key
- Add to
.envasRESEND_API_KEY
- Sign up at ElevenLabs
- Generate API key from settings
- Add to
.envasELEVENLABS_API_KEY - Note: Limited free tier, monitor usage
# Start PostgreSQL
# macOS (Homebrew)
brew services start postgresql
# Ubuntu/Debian
sudo systemctl start postgresql
# Windows: Use Services or PostgreSQL installer
# Create database
psql -U postgres
CREATE DATABASE app_dev;
CREATE USER app_user WITH PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE app_dev TO app_user;
\q
# Update DATABASE_URL in .env
DATABASE_URL="postgresql://app_user:your_secure_password@localhost:5432/app_dev"
# Run migrations
npm run db:push# 1. Sign up at https://neon.tech/
# 2. Create new project
# 3. Copy connection string
# 4. Add to .env:
DATABASE_URL="postgresql://user:password@ep-xxx.neon.tech/app_prod?sslmode=require"
# 5. Run migrations
npm run db:pushPOST /api/v1/check
Authorization: Bearer your_api_key
Content-Type: application/json
{
"imei": "123456789012345",
"location": "New York, NY",
"network": "AT&T",
"accept_policy": true
}Response:
{
"searchId": 12345,
"success": true,
"device": {
"make": "Apple",
"model": "iPhone 14 Pro",
"year": 2022,
"modelNumber": "A2892"
},
"networkCompatibility": {
"fourG": true,
"fiveG": true,
"volte": true,
"wifiCalling": "supported"
},
"tacAnalysis": "TAC 01326600 identifies this as Apple iPhone 14 Pro (US model)",
"location": "New York, NY",
"coordinates": { "lat": 40.7128, "lng": -74.0060 }
}POST /api/coverage/analyze
Content-Type: application/json
{
"lat": 40.7128,
"lng": -74.0060,
"address": "New York, NY",
"provider": "auto"
}Response:
{
"location": {
"lat": 40.7128,
"lng": -74.0060,
"address": "New York, NY"
},
"mobile_providers": {
"Verizon": {
"coverage_score": 92,
"reliability_rating": 4.5,
"recent_issues": 3,
"recommendation": "excellent"
},
"AT&T": {
"coverage_score": 88,
"reliability_rating": 4.2,
"recent_issues": 5,
"recommendation": "good"
}
},
"broadband_providers": { ... }
}POST /api/nps/submit
Content-Type: application/json
{
"searchId": 12345,
"rating": 9,
"feedback": "Great tool, very accurate results!"
}GET /api/admin/nps/stats
Authorization: Bearer admin_session_tokenResponse:
{
"totalResponses": 1247,
"npsScore": 56,
"promoters": 687,
"passives": 412,
"detractors": 148,
"promoterPercentage": 55.1,
"passivePercentage": 33.0,
"detractorPercentage": 11.9
}POST /api/voice/ussd-help
Content-Type: application/json
{
"language": "es",
"voiceCount": 4,
"location": {
"city": "Madrid",
"country": "Spain"
}
}POST /api/users/register
Content-Type: application/json
{
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe",
"emailPreferences": {
"monthlyInsights": true,
"interruptionAlerts": true,
"speedAlerts": false
}
}GET /api/v1/stats
Authorization: Bearer your_api_keyWith API Key (Real Data):
GET /api/v1/export?format=csv
Authorization: Bearer your_api_keyWithout API Key (Example Data):
GET /api/v1/export?format=json
# No authentication required - returns anonymized example dataResponse (Example Data):
{
"isExampleData": true,
"notice": "This is example data. Sign up for a free API key to export your real search data.",
"searches": [
{
"id": 1,
"imei": "123456789012345",
"device": {
"make": "Apple",
"model": "iPhone 15 Pro",
"year": "2023"
},
"location": "New York, USA",
"searchedAt": "2025-01-23T12:00:00Z"
}
],
"apiKeyName": "Example Data",
"totalCount": 5
}Features:
- β Both CSV and JSON formats supported
- β
Example data clearly marked with
isExampleDataflag - β CSV files include header comments with instructions
- β
Example files use
_examplesuffix in filename - β Real data requires valid API key authentication
| Tier | Limit | Use Case |
|---|---|---|
| Standard | 100 req/hour | Individual developers, testing |
| MCP Server | 500 req/hour | Automated AI services |
| Premium | 1000 req/hour | Production applications |
Rate Limit Headers:
RateLimit-Limit: 500
RateLimit-Remaining: 487
RateLimit-Reset: 1640995200
RateLimit-Policy: 500;w=3600
imei-device-checker/
βββ client/ # Frontend React application
β βββ public/
β β βββ firebase-messaging-sw.js # Service worker for push notifications
β βββ src/
β βββ components/
β β βββ ui/ # Shadcn/ui components
β β βββ imei-checker.tsx # Main IMEI input form
β β βββ device-results.tsx # Results display
β β βββ nps-feedback.tsx # NPS feedback widget
β β βββ nps-metrics.tsx # Admin NPS dashboard
β β βββ admin-dashboard.tsx # Analytics dashboard
β β βββ admin-login.tsx # Magic link auth
β β βββ coverage-maps.tsx # Network coverage
β β βββ voice-helper.tsx # Voice instructions
β β βββ ...
β βββ pages/
β β βββ home.tsx # Landing page
β β βββ admin.tsx # Admin portal
β β βββ coverage-maps.tsx # Coverage analysis page
β β βββ analytics.tsx # Public analytics
β βββ lib/
β β βββ queryClient.ts # TanStack Query setup
β β βββ firebase.ts # Firebase client
β β βββ utils.ts # Utilities
β βββ App.tsx
β
βββ server/ # Backend Express application
β βββ services/
β β βββ gemini.ts # AI device analysis
β β βββ elevenlabs.ts # Voice synthesis
β β βββ coverage-analyzer.ts # Network coverage AI
β β βββ issue-analyzer.ts # Problem classification
β β βββ email-insights.ts # Monthly email reports
β β βββ resend.ts # Magic link emails
β β βββ firebase-admin.ts # Push notifications
β βββ middleware/
β β βββ enhanced-rate-limit.ts # Tiered rate limiting
β βββ routes/
β β βββ pdf-generator.ts # Policy PDF generation
β βββ storage.ts # Database operations (Drizzle)
β βββ routes.ts # API route handlers
β βββ db.ts # Database connection
β βββ vite.ts # Frontend serving
β βββ index.ts # Server entry point
β
βββ shared/
β βββ schema.ts # Database schema (Drizzle ORM)
β
βββ migrations/ # Database migrations
βββ docs/ # Additional documentation
β βββ CONTRIBUTING.md
β βββ SECURITY_ANALYSIS.md
β βββ ...
β
βββ package.json
βββ drizzle.config.ts # Database config
βββ vite.config.ts # Frontend build config
βββ tailwind.config.ts # Styling config
βββ tsconfig.json # TypeScript config
βββ .env # Environment variables
βββ .gitignore
βββ README.md
# Development mode (hot reload)
npm run dev
# Production build
npm run build
npm start
# Database operations
npm run db:push # Apply schema changes
npm run db:studio # Open Drizzle Studio GUI
npm run db:generate # Generate migrationsThe application uses Drizzle ORM with push-based schema updates:
# 1. Edit schema in shared/schema.ts
# 2. Push changes to database
npm run db:push
# 3. For breaking changes, use force push (careful!)
npm run db:push --forceMain Tables:
imei_searches- IMEI analysis recordsusers- Registered users for email insightsapi_keys- API authenticationblacklisted_imeis- Blocked devicesnps_responses- User feedback (NEW)admin_access_requests- Auth audit trail (NEW)
-
Update Database Schema
// shared/schema.ts export const newFeature = pgTable('new_feature', { id: serial('id').primaryKey(), name: text('name').notNull(), createdAt: timestamp('created_at').defaultNow() });
-
Update Storage Interface
// server/storage.ts interface IStorage { // Add new methods createFeature(data: NewFeature): Promise<Feature>; getFeatures(): Promise<Feature[]>; }
-
Add API Route
// server/routes.ts app.post('/api/features', async (req, res) => { const data = await storage.createFeature(req.body); res.json(data); });
-
Create Frontend Component
// client/src/components/feature.tsx export default function Feature() { const { data } = useQuery({ queryKey: ['/api/features'] }); return <div>{/* Component JSX */}</div>; }
# Test IMEI analysis
curl -X POST http://localhost:5000/api/check \
-H "Content-Type: application/json" \
-d '{"imei":"123456789012345","network":"AT&T","accept_policy":true}'
# Test NPS submission
curl -X POST http://localhost:5000/api/nps/submit \
-H "Content-Type: application/json" \
-d '{"searchId":1,"rating":9,"feedback":"Excellent!"}'
# Test coverage analysis
curl -X POST http://localhost:5000/api/coverage/analyze \
-H "Content-Type: application/json" \
-d '{"lat":40.7128,"lng":-74.0060,"provider":"auto"}'- TypeScript: Strict mode enabled
- Prettier: Auto-formatting on save
- ESLint: Follow configured rules
- Naming: camelCase for variables, PascalCase for components
- Git Commits: Conventional commits format
NODE_ENV="production"
DATABASE_URL="postgresql://user:pass@production-db.com:5432/prod"
SESSION_SECRET="<generate-strong-random-string>"
# Update all API keys with production credentials
GEMINI_API_KEY="prod_key_..."
RESEND_API_KEY="prod_key_..."
# ... etc# 1. Install dependencies
npm ci
# 2. Build application
npm run build
# 3. Run database migrations
npm run db:push
# 4. Start production server
npm start- β Automatic deployment on push
- β Built-in PostgreSQL database
- β Environment variable management
- β Domain configuration included
- β One-click publishing
vercel deploy --prodgit push heroku main
heroku run npm run db:pushFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
RUN npm run build
CMD ["npm", "start"]GET /api/healthResponse:
{
"status": "healthy",
"database": "connected",
"timestamp": "2025-01-30T12:00:00Z"
}- API Reference - Complete API documentation
- Coverage API - Network coverage endpoints
- Contributing Guide - How to contribute
- Security Analysis - Security practices
- Architecture - Technical architecture details
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
- Use conventional commits
- Add tests for new features
- Update documentation
- Ensure all checks pass
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini - AI-powered device identification
- ElevenLabs - High-quality voice synthesis
- Resend - Reliable email delivery
- Firebase - Real-time notifications
- Neon - Serverless PostgreSQL
- Shadcn/ui - Beautiful UI components
- Drizzle ORM - Type-safe database operations
- Email: rbm@dotmobile.app
- Documentation: See
docs/folder for additional guides - Issues: Report issues via GitHub Issues after repository is published
- NPS feedback system
- Enhanced admin authentication
- Multilingual voice support
- Real-time WebSocket updates
- Advanced analytics dashboard
- Mobile app (React Native)
- Advanced reporting
- Custom branding options
- Enterprise tier
- GraphQL API
- Real-time collaboration
- Predictive analytics
- IoT device support
Made with β€οΈ by Data On Tap Inc.
Last updated: January 2025