A web directory ("yellow pages") for companies across Ethiopia πͺπΉ and Djibouti π©π―.
# Yalla β Business directory for Ethiopia & Djibouti
Yalla is a mobile-, tablet-, and desktop-responsive web directory ("yellow pages")
for companies across **Ethiopia πͺπΉ** and **Djibouti π©π―**. People can search,
filter by category and country, view full business details, and **call, visit the
website, or get directions in one tap**.
It runs in three modes, in priority order:
| Mode | What it shows | Key location |
|------|---------------|--------------|
| **Proxy** (recommended) | Live, ranked Google listings β up to ~50 per category | On the **server** (never in the browser) |
| **Browser-key live** | Same live listings | Pasted into the page / "Connect" button |
| **Sample** (default) | ~75 curated real businesses | None |
The app auto-detects a running backend (`/api/health`) and uses the proxy
automatically. With no backend and no key, it shows the sample directory.
---
## Files
- `server.js` β the proxy backend (Node + Express): holds the key, fans out across
cities, caches, rate-limits, and serves the frontend.
- `package.json` β backend dependencies and `npm start` script.
- `.env.example` β copy to `.env` and add your key + optional settings.
- `Dockerfile` β for containerized deploys.
- `yalla.html` β the single-file frontend (works standalone in sample/browser-key mode).
- `favicon.svg` β the app icon (also embedded inline in `yalla.html`).
- `README.md` β this guide.
---
## Recommended: run the proxy backend
This keeps your Google key **server-side**, caches results to cut cost, and rate-limits
abuse. The server also serves the frontend, so the page calls a relative `/api/search` β
no key ever reaches the browser.
```bash
# 1. install (Node 18+ required)
npm install
# 2. add your key
cp .env.example .env # then edit .env and set GOOGLE_API_KEY=...
# (or just: export GOOGLE_API_KEY=your_key)
# 3. run
npm start
# β open
localhost
```
The status dot turns green ("Live data via secure server") and results stream from
your backe β¦