ู ูุตุฉ ุตูุงูุฉ ุงูุฃุฌูุฒุฉ ุงูุฅููุชุฑูููุฉ ูู ุงูู ู ููุฉ ุงูุนุฑุจูุฉ ุงูุณุนูุฏูุฉ Mobile device repair platform for Saudi Arabia
ุงูุนุฑุจูุฉ ยท English ยท Live Demo
Fixate ู ูุตุฉ ุฐููุฉ ูุตูุงูุฉ ุงูุฌูุงูุงุช ูุงููุงุจุชูุจุงุช ูุงูุชุงุจูุช ูู ุงูุณุนูุฏูุฉ. ุงูููู ูุตู ุฅููู ุฃููู ุง ููุช ุจุนุฑุจุฉ ู ุฌูุฒุฉ ุจุงููุงู ูุ ุฃู ูุณุชูู ุฌูุงุฒู ูููุตูู ุจุนุฏ ุงูุฅุตูุงุญ. ุฎุฏู ุฉ ุณุฑูุนุฉุ ุดูุงูุฉุ ูู ุถู ููุฉ ูฆ ุฃุดูุฑ.
ูุฐุง ุงูู repo ูู ุงูู ููุน ุงูุชุณูููู + ุงูู backend API. ุชุทุจููุงุช ุงูู iOS ู Android ูุณู ููุฏ ุงููุดุฑ.
| ุงูู ูุฒุฉ | Feature | |
|---|---|---|
| ๐ | ุตูุงูุฉ ูู ู ููุนู | At-home repair service |
| โก | ุญุฌุฒ ูู ุฏูุงุฆู | Booking in minutes |
| ๐ | ุชุชุจุน ุงูููู ู ุจุงุดุฑุฉ | Live technician tracking |
| ๐ก๏ธ | ุถู ุงู ูฆ ุดููุฑ | 6-month warranty |
| ๐ | ุจุฑูุงู ุฌ ููุงุก ุจุงูููุงุท | Points-based loyalty program |
| ๐ฌ | ุดุงุช ุจูุช ุฐูู | AI-powered chatbot |
| ๐ฒ | ูุนู ู ูุชุทุจูู PWA | Installable PWA |
| ๐ | ูุถุน ูููู + RTL | Dark mode + RTL support |
| ๐ | ุนุฑุจู / ุฅูุฌููุฒู | Arabic / English |
Frontend
- React 19 ยท TypeScript ยท Vite 7
- TailwindCSS 4 ยท shadcn/ui ยท Framer Motion
- Wouter (routing) ยท TanStack Query
Backend
- Node.js 22 ยท Express 4
- tRPC 11 (type-safe API)
- PostgreSQL (Neon) ยท Drizzle ORM
- Helmet ยท express-rate-limit ยท CORS
DevOps
- Render (hosting) ยท GitHub Actions (CI)
- pnpm ยท esbuild
# 1. Clone & install
git clone https://github.com/muhammedatef98/fixate.git
cd fixate
pnpm install
# 2. Add .env at repo root
echo "DATABASE_URL=postgresql://..." > .env
echo "NODE_ENV=development" >> .env
# 3. Start dev server (Vite + Express on port 3000)
pnpm dev| Script | Purpose |
|---|---|
pnpm dev |
Dev server with HMR |
pnpm build |
Production build โ dist/ |
pnpm start |
Run production build |
pnpm check |
TypeScript type check |
pnpm test |
Run Vitest tests |
pnpm db:push |
Generate & run DB migrations |
fixate/
โโโ client/ # React frontend
โ โโโ src/
โ โ โโโ pages/ # Route components (Home, FAQ, Services, ...)
โ โ โโโ components/ # Shared UI (Header, Footer, SEO, ...)
โ โ โโโ contexts/ # Language (AR/EN) & Theme providers
โ โ โโโ lib/ # tRPC client, analytics, utilities
โ โโโ public/ # Static assets, sitemap, sw.js, icons
โโโ server/
โ โโโ _core/ # Express entry + Vite middleware
โ โโโ db/ # Drizzle schema & queries
โ โโโ routers/ # tRPC routers
โ โโโ routes/ # REST endpoints
โโโ shared/ # Types shared between client & server
โโโ render.yaml # Render deployment config
โโโ vite.config.ts
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/ping |
Keep-alive (no DB) |
GET |
/api/health |
DB connectivity check |
POST |
/api/contact |
Contact form submission |
GET |
/api/devices/types |
List device types |
GET |
/api/devices/models/:id |
Models by device type |
GET |
/api/services/types |
List service types |
GET |
/api/services/price |
Price lookup |
POST |
/api/auth/signup |
User signup (rate-limited) |
POST |
/api/auth/login |
User login (rate-limited) |
* |
/api/trpc/* |
Type-safe tRPC API |
ุงูู
ุดุฑูุน ู
ูุดูุฑ ุนูู Render (free tier) ู
ู ุฎูุงู render.yaml:
buildCommand: npm install -g pnpm@10 && pnpm install --frozen-lockfile && pnpm build
startCommand: node dist/index.jsTip: ุงูู free tier ุจูุฏุฎู sleep ุจุนุฏ ูกูฅ ุฏูููุฉ. ุงุณุชุฎุฏู cron-job.org ูู ping ุนูู
/api/pingูู ูกูค ุฏูููุฉ ุนุดุงู ููุถู ุตุงุญู.
ุชูุงุตูู ุฃูุชุฑ ูู DEPLOYMENT_GUIDE.md.
- Helmet โ CSP, HSTS, X-Frame-Options, ู security headers ุชุงููุฉ
- CORS โ ู
ูุตูุฑ ุนูู origins ู
ุนุชู
ุฏุฉ (
/api/*ููุท) - Rate limiting โ ูขู request / ูกูฅ ุฏูููุฉ ุนูู endpoints ุงูู auth
- PDPL compliant โ cookie consent ุจุซูุงุซ ู ุณุชููุงุช (necessary / analytics / marketing)
- Static OG/Twitter metadata + dynamic JSON-LD (LocalBusiness, FAQPage, Service)
- Sitemap.xml + robots.txt
- ุตูุญุงุช SEO landing ูู ูฆ ู ุฏู (ุงูุฑูุงุถุ ุฌุฏุฉุ ุงูุฏู ุงู ุ ุงูุฎุจุฑุ ู ูุฉุ ุงูู ุฏููุฉ) ู ูฆ ุฎุฏู ุงุช
- Lighthouse Performance >90 ุนูู mobile
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL |
โ | PostgreSQL connection (Neon) |
NODE_ENV |
โ | production on Render |
VITE_APP_STORE_URL |
โฌ | iOS App Store link |
VITE_PLAY_STORE_URL |
โฌ | Google Play link |
VITE_GA4_MEASUREMENT_ID |
โฌ | Google Analytics 4 |
VITE_CLARITY_PROJECT_ID |
โฌ | Microsoft Clarity |
OPENAI_API_KEY |
โฌ | AI chatbot |
Fixate is a smart mobile device repair platform for Saudi Arabia. Our certified technicians come to your location with fully-equipped vans, or we collect & deliver for advanced repairs. Fast, transparent, and backed by a 6-month warranty.
This repository hosts the marketing website + backend API. The native iOS / Android apps are not yet published.
Service options:
- ๐ง Mobile Technician โ On-site repair for screens, batteries, charging ports, and audio.
- ๐ Pickup & Delivery โ For complex repairs (motherboard, processor, precision work) handled at our partner workshops.
Service area: Riyadh, Jeddah, Dammam, Khobar, Mecca, Medina โ and expanding.
Released under the MIT License.
Built with โค๏ธ by Mohammed Atef
โญ Star this repo if you found it useful!