# IGF EMS Project Structure

## Overview
Full-stack Event Management System using React (frontend) + Express/MongoDB (backend).

---

## Root Directory
```
igf-ems/
├── src/              # React frontend
├── dashboard/        # Express backend
├── middleware/       # Shared auth middleware
├── public/           # Static assets
├── uploads/          # File uploads
├── docs/             # Documentation
└── .env              # Environment config
```

---

## Frontend (`src/`)
| Folder | Purpose |
|--------|---------|
| `components/` | React UI components |
| `components/crm/` | CRM-related views |
| `components/ems/` | EMS-related views |
| `api/` | Axios instance & API helpers |
| `context/` | React context providers |
| `hooks/` | Custom React hooks |
| `services/` | Business logic services |
| `utils/` | Utility functions |

**Entry**: `App.js` → React Router setup

---

## Backend (`dashboard/`)
| Folder | Purpose |
|--------|---------|
| `server.js` | Express entry point |
| `Routes/` | API route handlers (30 files) |
| `models/` | Mongoose schemas (29 models) |
| `controllers/` | Route logic controllers |
| `services/` | Business logic |
| `config/` | DB connection config |
| `utils/` | Helper utilities |
| `migrations/` | DB migration scripts |

---

## Key Models
- `Person`, `Participant`, `Guest`
- `Organisation`, `OrgType`
- `Hotel`, `Room`, `Booking`, `AssignRoom`
- `Document`, `Form`, `Template`
- `User`, `Admin`, `Role`

---

## Auth Flow
1. JWT-based authentication
2. Tokens stored in `localStorage`
3. `middleware/authMiddleware.js` protects routes

---

## Environment
- `.env` / `.env.production` for backend
- `REACT_APP_*` vars for frontend
