סביבת פיתוח מקומית
מסמך זה מתאר כיצד להקים סביבת פיתוח מלאה (Server, Client, Mobile) על המחשב האישי.
דרישות קדם (Prerequisites)
- Node.js (גרסה 18 או חדשה יותר).
- Docker Desktop (עבור DB, Redis, MQTT).
- Git.
- VS Code (מומלץ).
הכנת התשתית (Infrastructure)
אנו משתמשים ב-Docker Compose כדי להריץ את שירותי הליבה (MongoDB, Redis, Mosquitto).
- בתיקייה הראשית של הפרויקט, הרץ:
פקודה זו תרים את השירותים הבאים:
docker-compose up -d- MongoDB: פורט 27017
- Redis: פורט 6380
- Mosquitto (MQTT): פורט 1883 (רגיל) ו-9001 (WebSockets)
- Nginx & Grafana: (אופציונלי, לניטור)
הגדרת משתני סביבה (.env)
יש ליצור קבצי .env לפי התבניות בתיקיות השונות:
Server NestJS (server-nest/.env)
DATABASE_URL=mongodb://root:MONGO_ROOT_PASSWORD@localhost:27017/bt-management?authSource=admin
REDIS_URL=redis://:REDIS_PASSWORD@localhost:6380
JWT_SECRET=YOUR_SECRET_KEY
MQTT_BROKER_URL=mqtt://localhost:1883
Client (client/.env)
REACT_APP_API_URL=http://localhost:5000/api
Mobile (GabaiSmart/.env)
EXPO_PUBLIC_API_URL=http://192.168.1.X:5000 # הכתובת ה-IP המקומית של המחשב שלך
EXPO_PUBLIC_SOCKET_URL=ws://192.168.1.X:5000
הרצת הפרויקטים
1. שרת (Server NestJS)
cd server-nest
npm install
npx prisma generate # יצירת ה-Client של הפריזמה
npm run start:dev # הרצה במצב Watch
השרת יעלה בכתובת: http://localhost:5000
תיעוד API (Swagger): http://localhost:5000/api/docs
2. לקוח (Client React)
cd client
npm install
npm start
האפליקציה תפתח ב: http://localhost:3000
3. מובייל (GabaiSmart React Native)
cd GabaiSmart
npm install
npm run android # להרצה על אימולטור או מכשיר מחובר
פקודות שימושיות
- Prisma Studio: צפייה וניהול ה-DB בממשק גרפי.
cd server-nest && npx prisma studio - Type Check: בדיקת טייפים בכל הפרויקט.
npm run typecheck:all
Workflows ונהלים
- Commit Checklist: לפני דחיפת קוד, ודא שהרצת
typecheckואין שגיאות לינטר. - DTOs: השתמש תמיד ב-
nestjs-zodליצירת DTOs. - Migrations: ב-MongoDB אין מיגרציות SQL קלאסיות, אך יש להריץ
db pushאם משנים את הסכמה באופן משמעותי לפעמים (למרות שפריזמה-מונגו גמיש). - Multi-Tenancy: אסור להוסיף ידנית
where: { userId }בקונטרולר רגיל. ה-Middleware עושה זאת אוטומטית.