Skip to content

MSA-I/Hanan

Repository files navigation

🏛️ Hanan — מערכת תכנון וסידור אולמות אירועים

פלטפורמת ווב מקצועית לעיצוב, הדמיה ותכנון פריסת אולמות אירועים — עם תצוגה דו-ממדית ותלת-ממדית מסונכרנות.


📋 תיאור המערכת

Hanan היא אפליקציית ווב המאפשרת ללקוחות לתכנן ולהדמות פריסת אולמות אירועים בצורה אינטראקטיבית.

יכולות עיקריות

  • עורך 2D — גרירה ושחרור של שולחנות, כסאות ואלמנטי עיצוב על גבי תוכנית הקומה
  • הדמיה תלת-ממדית — תצוגת Three.js מסונכרנת עם העורך הדו-ממדי בזמן אמת
  • מנגנון מגבלות — מניעת חפיפות, שמירה על מסלולי הליכה, הגדרת אזורים קבועים
  • ניהול פריסות — שמירה, טעינה ושיתוף תצורות עם קישורי snapshot
  • תמיכה במספר אולמות — תצורות שונות עם ממדים ואזורים מוגדרים מראש
  • הגדרות חומרים — בחירת מפות שולחן, מפות כסאות ועיצובי עיצוב

טכנולוגיות

שכבה טכנולוגיה
Frontend React 19, TypeScript, Vite
עורך 2D Konva.js, react-konva
הדמיה 3D Three.js
ניהול State Zustand (Immer)
Backend NestJS, TypeORM
מסד נתונים PostgreSQL 16
אחסון קבצים MinIO (S3-compatible)
אינפרה Docker, Docker Compose, Nginx

🗂️ מבנה הפרוייקט

HANAN/
├── frontend/          # אפליקציית React + Vite
│   ├── src/
│   │   ├── components/    # רכיבי UI
│   │   ├── stores/        # Zustand state management
│   │   ├── types/         # הגדרות TypeScript
│   │   └── lib/           # ספריות עזר
├── backend/           # NestJS REST API
│   ├── src/
│   │   ├── halls/         # ניהול אולמות
│   │   ├── layouts/       # שמירת פריסות
│   │   └── database/      # הגדרות DB וseeding
├── assets/            # קבצי GLB ל-3D
├── presets/           # הגדרות פריסה מוכנות
├── architecture/      # תיעוד ארכיטקטוני
├── docker-compose.yml # הגדרות Docker
└── claude.md          # חוקת הפרוייקט

🚀 הפעלה מהירה

דרישות מקדימות


1. הורדת הקוד

git clone https://github.com/MSA-I/Hanan.git
cd Hanan

2. הפעלת שירותי תשתית (PostgreSQL + MinIO)

docker-compose up -d

וודא שהשירותים עלו:

docker-compose ps

3. הגדרת Backend

cd backend
npm install

צור קובץ .env בתוך תיקיית backend/:

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=hanan
DB_PASSWORD=hanan
DB_DATABASE=hanan_dev

MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_ACCESS_KEY=hanan
MINIO_SECRET_KEY=hanan_minio_dev

PORT=3000

הרץ seeding למסד הנתונים (נדרש בהרצה ראשונה):

npm run seed

הפעל את השרת:

# מצב פיתוח (עם hot-reload)
npm run start:dev

# מצב ייצור
npm run build
npm run start:prod

השרת יעלה על: http://localhost:3000


4. הגדרת Frontend

פתח טרמינל חדש:

cd frontend
npm install
npm run dev

האפליקציה תפתח על: http://localhost:5173


🏗️ הרצה בסביבת ייצור (Docker)

ניתן להריץ את כל המערכת עם Docker Compose מלא (כולל frontend מ-build):

docker-compose up --build

🧪 בדיקות

# Backend unit tests
cd backend
npm run test

# Backend e2e tests
npm run test:e2e

# Coverage report
npm run test:cov

📡 API Endpoints

Method URL תיאור
GET /halls רשימת כל האולמות
GET /halls/:id פרטי אולם ספציפי
GET /layouts רשימת פריסות שמורות
POST /layouts שמירת פריסה חדשה
GET /layouts/:id טעינת פריסה לפי ID
PUT /layouts/:id עדכון פריסה קיימת

🔧 כלי ניהול

כלי URL פרטי גישה
MinIO Console http://localhost:9001 user: hanan / pass: hanan_minio_dev
PostgreSQL localhost:5432 user: hanan / pass: hanan / db: hanan_dev

🏛️ עקרונות ארכיטקטוניים

  • Single Source of Truth — כל ה-state מנוהל ב-sceneStore (Zustand)
  • 2D ↔ 3D סינכרון — שני התצוגות קוראות מה-store בלבד, ללא תקשורת ישירה
  • מנגנון מגבלות — constraint engine הוא ליבת המערכת, לא AI
  • Client-side rendering — כל הרינדור מבוצע על ה-GPU של המשתמש

📋 דרישות מינימום לדפדפן

  • WebGL2 נדרש
  • iPad Safari 15+ ומעלה
  • יעד: 60 FPS במחשב, 30 FPS ב-iPad

📄 רישיון

פרוייקט פרטי — כל הזכויות שמורות.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages