# πŸ—ΊοΈ Ora Map - Family Location Mapping Application A full-stack web application for mapping and searching family locations in Yemen using interactive maps. ## πŸ“‹ Table of Contents - [Features](#features) - [Tech Stack](#tech-stack) - [Project Structure](#project-structure) - [Getting Started](#getting-started) - [Docker Deployment](#docker-deployment) - [Development](#development) - [API Endpoints](#api-endpoints) ## ✨ Features - πŸ” **Family Search**: Search for families by name with autocomplete suggestions - πŸ—ΊοΈ **Interactive Map**: Leaflet-based map with multiple tile layer options - πŸ“ **Location Markers**: View family locations with city information - 🎨 **Modern UI**: Clean and responsive design - 🐳 **Docker Ready**: Containerized for easy deployment - πŸ’š **Health Checks**: Built-in health monitoring ## πŸ› οΈ Tech Stack **Backend:** - Node.js - Express.js - JSON data storage **Frontend:** - HTML5/CSS3 - JavaScript (ES6+) - Leaflet.js (interactive maps) - Fuse.js (fuzzy search) **DevOps:** - Docker - Docker Compose ## πŸ“ Project Structure ``` oramap/ β”œβ”€β”€ backend/ β”‚ β”œβ”€β”€ server.js # Express server β”‚ β”œβ”€β”€ package.json # Backend dependencies β”‚ └── data/ β”‚ └── families.json # Family location data β”œβ”€β”€ public/ β”‚ β”œβ”€β”€ index.html # Frontend HTML β”‚ β”œβ”€β”€ script.js # Frontend JavaScript β”‚ └── style.css # Styles β”œβ”€β”€ Dockerfile # Multi-stage Docker build β”œβ”€β”€ docker-compose.yml # Docker Compose configuration └── .dockerignore # Docker ignore rules ``` ## πŸš€ Getting Started ### Prerequisites - Node.js (v18 or higher) - Docker & Docker Compose (optional, for containerized deployment) ### Local Development 1. **Install backend dependencies:** ```bash cd backend npm install ``` 2. **Start the server:** ```bash npm start ``` 3. **Open your browser:** Navigate to `http://localhost:3000` ## 🐳 Docker Deployment ### Using Docker Compose (Recommended) 1. **Build and start the application:** ```bash docker-compose up -d ``` 2. **View logs:** ```bash docker-compose logs -f ``` 3. **Stop the application:** ```bash docker-compose down ``` ### Using Docker directly 1. **Build the image:** ```bash docker build -t oramap:latest . ``` 2. **Run the container:** ```bash docker run -d -p 3000:3000 --name oramap-app oramap:latest ``` 3. **Check health:** ```bash docker ps ``` ## πŸ’» Development ### Running in Development Mode ```bash cd backend npm run dev ``` ### Adding New Families Edit `backend/data/families.json` and add entries in the following format: ```json { "family": "Family Name (Hebrew)", "city": "City Name (Hebrew)", "lat": 15.3545, "lng": 44.2064 } ``` ## πŸ“‘ API Endpoints ### Search Families ``` GET /api/search?family={familyName} ``` Returns matching family records with location data. **Example:** ```bash curl "http://localhost:3000/api/search?family=Kafe" ``` ### Health Check ``` GET /api/health ``` Returns server health status. **Example Response:** ```json { "status": "ok", "timestamp": "2026-03-24T10:30:00.000Z" } ``` ## πŸ—ΊοΈ Available Family Names - Kafe (קא׀ח) - Shiheb (Χ©Χ—Χ‘-Χ©Χ‘Χ—) - Uzeyri (Χ’Χ–Χ™Χ¨Χ™-Χ’Χ•Χ–Χ¨Χ™) - Salumi (Χ‘ΧœΧ•ΧžΧ™-Χ©ΧœΧ•ΧžΧ™) - Afgin (Χ’Χ€Χ’'Χ™ΧŸ) - Eraki (גראקי) ## πŸ“ License ISC ## 🀝 Contributing Contributions, issues, and feature requests are welcome!