Logo Lanfrica

tanvirpasha21/safe-passage

Domaine:

natural language processing

Type de record:

software
Créateur:
tan
Hôte:
Multilingual awareness platform showing real migration death statistics and legal immigration pathways. Built with Next.js, deployed on Vercel. Available in English, Arabic, French, Turkish, Somali & Tigrinya. migration, immigration, awareness, nextjs, vercel, i18n, multilingual, humanitarian, unhcr, iom # SafePassage A multilingual awareness platform about the real dangers of illegal immigration and the legal pathways that exist. **Live languages:** English · Arabic (RTL) · French · Turkish · Somali · Tigrinya --- ## Deploy to Vercel (5 minutes) ### Option A — Vercel CLI (recommended) ```bash npm install -g vercel cd safepassage npm install vercel ``` Follow prompts. Vercel auto-detects Next.js. Done. ### Option B — GitHub + Vercel Dashboard 1. Push this folder to a GitHub repo 2. Go to vercel.com 3. Import the repo → Framework: Next.js (auto-detected) 4. Click Deploy --- ## Local development ```bash npm install npm run dev # → localhost ``` --- ## Project structure ``` safepassage/ ├── pages/ │ ├── index.js # Main page (all sections, i18n) │ └── api/ │ └── iom-counter.js # IOM Missing Migrants API proxy ├── locales/ │ ├── en/common.json # English │ ├── ar/common.json # Arabic (RTL) │ ├── fr/common.json # French │ ├── tr/common.json # Turkish │ ├── so/common.json # Somali │ └── ti/common.json # Tigrinya ├── lib/ │ └── i18n.js # Translation loader + language list ├── styles/ │ ├── globals.css # Global variables, typography, utilities │ └── Home.module.css # All component-scoped styles ├── next.config.js # i18n locale config ├── vercel.json # Vercel settings (regions: London + Frankfurt) └── package.json ``` --- ## IOM Counter — how it works `/api/iom-counter` is a Vercel serverless function that: 1. Fetches the IOM Missing Migrants API for the current year's Mediterranean data 2. Returns `{ count, year, live: true }` if successful 3. Falls back to a formula `(day_of_year × 8.5)` if the API is unavailable 4. Is cached 1 hour at the Vercel CDN edge (no unnecessary API hits) The live counter widget on the page polls this endpoint on mount, then ticks slowly in JS (~1 death per 5 hours = 0.003/min). --- ## Adding languages 1. Create `locales/{code}/ …