Rename public discovery app from "finder" to "koja"

Rebrand the public café-discovery app: directories web/finder→web/koja and
docker/finder→docker/koja, plus all service wiring (docker-compose, Caddy
subdomain koja.meezi.ir, env vars KOJA_PORT / NEXT_PUBLIC_KOJA_URL, CI
workflows) and the app's display name (Koja / کجا).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-05-29 17:02:22 +03:30
parent 16cff8730b
commit 289c808257
43 changed files with 74 additions and 58 deletions
+5 -5
View File
@@ -24,7 +24,7 @@ JWT_KEY=change-me-64-char-random-string-use-openssl-rand-hex-32-output
NEXT_PUBLIC_API_URL=http://171.22.25.73:5080 NEXT_PUBLIC_API_URL=http://171.22.25.73:5080
NEXT_PUBLIC_ADMIN_API_URL=http://171.22.25.73:5081 NEXT_PUBLIC_ADMIN_API_URL=http://171.22.25.73:5081
NEXT_PUBLIC_SITE_URL=http://171.22.25.73:3010 NEXT_PUBLIC_SITE_URL=http://171.22.25.73:3010
NEXT_PUBLIC_FINDER_URL=http://171.22.25.73:3103 NEXT_PUBLIC_KOJA_URL=http://171.22.25.73:3103
APP_QR_BASE_URL=http://171.22.25.73:3101 APP_QR_BASE_URL=http://171.22.25.73:3101
BILLING_DASHBOARD_URL=http://171.22.25.73:3101 BILLING_DASHBOARD_URL=http://171.22.25.73:3101
@@ -40,7 +40,7 @@ ADMIN_API_PORT=5081
WEB_PORT=3101 WEB_PORT=3101
ADMIN_WEB_PORT=3102 ADMIN_WEB_PORT=3102
WEBSITE_PORT=3010 WEBSITE_PORT=3010
FINDER_PORT=3103 KOJA_PORT=3103
POSTGRES_PORT=5434 POSTGRES_PORT=5434
REDIS_PORT=6381 REDIS_PORT=6381
@@ -51,19 +51,19 @@ REDIS_PORT=6381
# NEXT_PUBLIC_API_URL=https://api.meezi.ir # NEXT_PUBLIC_API_URL=https://api.meezi.ir
# NEXT_PUBLIC_ADMIN_API_URL=https://admin-api.meezi.ir # NEXT_PUBLIC_ADMIN_API_URL=https://admin-api.meezi.ir
# NEXT_PUBLIC_SITE_URL=https://meezi.ir # NEXT_PUBLIC_SITE_URL=https://meezi.ir
# NEXT_PUBLIC_FINDER_URL=https://finder.meezi.ir # NEXT_PUBLIC_KOJA_URL=https://koja.meezi.ir
# #
# APP_QR_BASE_URL=https://app.meezi.ir # APP_QR_BASE_URL=https://app.meezi.ir
# BILLING_DASHBOARD_URL=https://app.meezi.ir # BILLING_DASHBOARD_URL=https://app.meezi.ir
# #
# CORS_ORIGIN_0=https://app.meezi.ir # CORS_ORIGIN_0=https://app.meezi.ir
# CORS_ORIGIN_1=https://meezi.ir # CORS_ORIGIN_1=https://meezi.ir
# CORS_ORIGIN_2=https://finder.meezi.ir # CORS_ORIGIN_2=https://koja.meezi.ir
# CORS_ADMIN_ORIGIN_0=https://admin.meezi.ir # CORS_ADMIN_ORIGIN_0=https://admin.meezi.ir
# #
# Then run CI once to rebuild images with the new URLs baked in. # Then run CI once to rebuild images with the new URLs baked in.
# DNS required: meezi.ir, app.meezi.ir, api.meezi.ir, # DNS required: meezi.ir, app.meezi.ir, api.meezi.ir,
# finder.meezi.ir, admin.meezi.ir, admin-api.meezi.ir → server IP # koja.meezi.ir, admin.meezi.ir, admin-api.meezi.ir → server IP
# ── Migrations ──────────────────────────────────────────────────────────────── # ── Migrations ────────────────────────────────────────────────────────────────
RUN_MIGRATIONS=true RUN_MIGRATIONS=true
+8 -8
View File
@@ -228,8 +228,8 @@ jobs:
env: env:
MEEZI_API_URL: http://localhost:5080 MEEZI_API_URL: http://localhost:5080
finder-check: koja-check:
name: "CI · Finder (tsc)" name: "CI · Koja (tsc)"
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: 171.22.25.73:5000/library/node:20-alpine image: 171.22.25.73:5000/library/node:20-alpine
@@ -250,11 +250,11 @@ jobs:
rm -f /tmp/repo.tar.gz rm -f /tmp/repo.tar.gz
- name: Install dependencies - name: Install dependencies
working-directory: web/finder working-directory: web/koja
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-group/ run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-group/
- name: TypeScript check - name: TypeScript check
working-directory: web/finder working-directory: web/koja
run: npx tsc --noEmit run: npx tsc --noEmit
env: env:
NEXT_PUBLIC_API_URL: http://localhost:5080 NEXT_PUBLIC_API_URL: http://localhost:5080
@@ -276,7 +276,7 @@ jobs:
- dashboard-check - dashboard-check
- admin-web-check - admin-web-check
- website-check - website-check
- finder-check - koja-check
if: github.event_name == 'push' && github.ref == 'refs/heads/main' if: github.event_name == 'push' && github.ref == 'refs/heads/main'
timeout-minutes: 40 timeout-minutes: 40
@@ -297,8 +297,8 @@ jobs:
env: env:
ENV_FILE: ${{ secrets.ENV_FILE }} ENV_FILE: ${{ secrets.ENV_FILE }}
- name: Build main images (api, web, website, finder) - name: Build main images (api, web, website, koja)
run: docker compose build --parallel api web website finder run: docker compose build --parallel api web website koja
env: env:
DOCKER_BUILDKIT: 1 DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1 COMPOSE_DOCKER_CLI_BUILD: 1
@@ -318,7 +318,7 @@ jobs:
docker compose up -d \ docker compose up -d \
--remove-orphans \ --remove-orphans \
--no-deps \ --no-deps \
postgres redis api web website finder postgres redis api web website koja
- name: Start admin services - name: Start admin services
run: | run: |
+5 -5
View File
@@ -58,20 +58,20 @@ jobs:
env: env:
NEXT_PUBLIC_API_URL: http://localhost:5080 NEXT_PUBLIC_API_URL: http://localhost:5080
# ── Finder: typecheck ────────────────────────────────────────────────────── # ── Koja: typecheck ─────────────────────────────────────────────────────────
finder: koja:
name: Finder (Next.js typecheck) name: Koja (Next.js typecheck)
runs-on: ubuntu-latest runs-on: ubuntu-latest
defaults: defaults:
run: run:
working-directory: web/finder working-directory: web/koja
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: "20" node-version: "20"
cache: npm cache: npm
cache-dependency-path: web/finder/package-lock.json cache-dependency-path: web/koja/package-lock.json
- run: npm install --legacy-peer-deps --ignore-scripts - run: npm install --legacy-peer-deps --ignore-scripts
- run: npx tsc --noEmit - run: npx tsc --noEmit
env: env:
+2 -2
View File
@@ -32,7 +32,7 @@ jobs:
run: | run: |
docker compose build --parallel \ docker compose build --parallel \
--build-arg BUILDKIT_INLINE_CACHE=1 \ --build-arg BUILDKIT_INLINE_CACHE=1 \
api web website finder api web website koja
env: env:
DOCKER_BUILDKIT: 1 DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1 COMPOSE_DOCKER_CLI_BUILD: 1
@@ -43,7 +43,7 @@ jobs:
docker compose up -d \ docker compose up -d \
--remove-orphans \ --remove-orphans \
--no-deps \ --no-deps \
postgres redis api web website finder postgres redis api web website koja
# Wait for API healthcheck before declaring success # Wait for API healthcheck before declaring success
- name: Wait for API health - name: Wait for API health
+4 -4
View File
@@ -6,7 +6,7 @@
# Caddy auto-provisions Let's Encrypt TLS — no certbot needed. # Caddy auto-provisions Let's Encrypt TLS — no certbot needed.
# Domains needed in DNS (all → same server IP): # Domains needed in DNS (all → same server IP):
# meezi.ir, app.meezi.ir, api.meezi.ir, # meezi.ir, app.meezi.ir, api.meezi.ir,
# finder.meezi.ir, admin.meezi.ir, admin-api.meezi.ir # koja.meezi.ir, admin.meezi.ir, admin-api.meezi.ir
{ {
email {$ACME_EMAIL} email {$ACME_EMAIL}
@@ -27,9 +27,9 @@ api.{$DOMAIN} {
reverse_proxy api:8080 reverse_proxy api:8080
} }
# ── Finder (public discovery) ──────────────────────────────────────────────── # ── Koja (public discovery) ──────────────────────────────────────────────────
finder.{$DOMAIN} { koja.{$DOMAIN} {
reverse_proxy finder:3000 reverse_proxy koja:3000
} }
# ── Super-Admin panel ──────────────────────────────────────────────────────── # ── Super-Admin panel ────────────────────────────────────────────────────────
+8 -8
View File
@@ -13,7 +13,7 @@ Server: 171.22.25.73
├── meezi-web :3101 ← Next.js cafe owner dashboard ├── meezi-web :3101 ← Next.js cafe owner dashboard
├── meezi-admin-web:3102 ← Next.js super-admin panel ├── meezi-admin-web:3102 ← Next.js super-admin panel
├── meezi-website :3010 ← Next.js marketing website ├── meezi-website :3010 ← Next.js marketing website
├── meezi-finder :3103 ← Next.js public finder ├── meezi-koja :3103 ← Next.js public discovery (Koja)
├── meezi-db :5434 ← PostgreSQL (not internet-facing) ├── meezi-db :5434 ← PostgreSQL (not internet-facing)
└── meezi-redis :6381 ← Redis (not internet-facing) └── meezi-redis :6381 ← Redis (not internet-facing)
``` ```
@@ -21,7 +21,7 @@ Server: 171.22.25.73
Docker Compose files: Docker Compose files:
``` ```
docker-compose.yml main services (postgres, redis, api, web, website, finder) docker-compose.yml main services (postgres, redis, api, web, website, koja)
docker-compose.admin.yml admin overlay (+admin-api, +admin-web) docker-compose.admin.yml admin overlay (+admin-api, +admin-web)
docker-compose.mirror.yml Nexus mirror — run once separately, stays running docker-compose.mirror.yml Nexus mirror — run once separately, stays running
docker-compose.caddy.yml Caddy HTTPS proxy — add when domain is ready docker-compose.caddy.yml Caddy HTTPS proxy — add when domain is ready
@@ -60,7 +60,7 @@ RUN_MIGRATIONS=true
NEXT_PUBLIC_API_URL=http://171.22.25.73:5080 NEXT_PUBLIC_API_URL=http://171.22.25.73:5080
NEXT_PUBLIC_ADMIN_API_URL=http://171.22.25.73:5081 NEXT_PUBLIC_ADMIN_API_URL=http://171.22.25.73:5081
NEXT_PUBLIC_SITE_URL=http://171.22.25.73:3010 NEXT_PUBLIC_SITE_URL=http://171.22.25.73:3010
NEXT_PUBLIC_FINDER_URL=http://171.22.25.73:3103 NEXT_PUBLIC_KOJA_URL=http://171.22.25.73:3103
APP_QR_BASE_URL=http://171.22.25.73:3101 APP_QR_BASE_URL=http://171.22.25.73:3101
BILLING_DASHBOARD_URL=http://171.22.25.73:3101 BILLING_DASHBOARD_URL=http://171.22.25.73:3101
@@ -77,7 +77,7 @@ ADMIN_API_PORT=5081
WEB_PORT=3101 WEB_PORT=3101
ADMIN_WEB_PORT=3102 ADMIN_WEB_PORT=3102
WEBSITE_PORT=3010 WEBSITE_PORT=3010
FINDER_PORT=3103 KOJA_PORT=3103
POSTGRES_PORT=5434 POSTGRES_PORT=5434
REDIS_PORT=6381 REDIS_PORT=6381
@@ -123,7 +123,7 @@ CI takes ~510 minutes: builds 6 Docker images, runs all checks, then deploys.
|---|---| |---|---|
| Marketing website | http://171.22.25.73:3010/fa | | Marketing website | http://171.22.25.73:3010/fa |
| Cafe owner dashboard | http://171.22.25.73:3101/fa/login | | Cafe owner dashboard | http://171.22.25.73:3101/fa/login |
| Public finder | http://171.22.25.73:3103/fa | | Public Koja | http://171.22.25.73:3103/fa |
| Super-admin panel | http://171.22.25.73:3102/fa/admin/login | | Super-admin panel | http://171.22.25.73:3102/fa/admin/login |
| Main API (Swagger) | http://171.22.25.73:5080/swagger | | Main API (Swagger) | http://171.22.25.73:5080/swagger |
| Admin API (Swagger) | http://171.22.25.73:5081/swagger | | Admin API (Swagger) | http://171.22.25.73:5081/swagger |
@@ -173,7 +173,7 @@ Create these A records — all pointing to `171.22.25.73`:
| `meezi.ir` | Marketing website | | `meezi.ir` | Marketing website |
| `app.meezi.ir` | Cafe dashboard | | `app.meezi.ir` | Cafe dashboard |
| `api.meezi.ir` | Main API | | `api.meezi.ir` | Main API |
| `finder.meezi.ir` | Finder | | `koja.meezi.ir` | Koja |
| `admin.meezi.ir` | Admin panel | | `admin.meezi.ir` | Admin panel |
| `admin-api.meezi.ir` | Admin API | | `admin-api.meezi.ir` | Admin API |
@@ -189,14 +189,14 @@ ACME_EMAIL=you@example.com
NEXT_PUBLIC_API_URL=https://api.meezi.ir NEXT_PUBLIC_API_URL=https://api.meezi.ir
NEXT_PUBLIC_ADMIN_API_URL=https://admin-api.meezi.ir NEXT_PUBLIC_ADMIN_API_URL=https://admin-api.meezi.ir
NEXT_PUBLIC_SITE_URL=https://meezi.ir NEXT_PUBLIC_SITE_URL=https://meezi.ir
NEXT_PUBLIC_FINDER_URL=https://finder.meezi.ir NEXT_PUBLIC_KOJA_URL=https://koja.meezi.ir
APP_QR_BASE_URL=https://app.meezi.ir APP_QR_BASE_URL=https://app.meezi.ir
BILLING_DASHBOARD_URL=https://app.meezi.ir BILLING_DASHBOARD_URL=https://app.meezi.ir
CORS_ORIGIN_0=https://app.meezi.ir CORS_ORIGIN_0=https://app.meezi.ir
CORS_ORIGIN_1=https://meezi.ir CORS_ORIGIN_1=https://meezi.ir
CORS_ORIGIN_2=https://finder.meezi.ir CORS_ORIGIN_2=https://koja.meezi.ir
CORS_ADMIN_ORIGIN_0=https://admin.meezi.ir CORS_ADMIN_ORIGIN_0=https://admin.meezi.ir
# Remove all PORT= lines — Caddy is the only public endpoint # Remove all PORT= lines — Caddy is the only public endpoint
+1 -1
View File
@@ -36,7 +36,7 @@ services:
- api - api
- web - web
- website - website
- finder - koja
- admin-api - admin-api
- admin-web - admin-web
+8 -8
View File
@@ -1,4 +1,4 @@
# Meezi — main stack (Postgres, Redis, API, Dashboard, Website, Finder) # Meezi — main stack (Postgres, Redis, API, Dashboard, Website, Koja)
# #
# Local dev: # Local dev:
# cp .env.example .env # cp .env.example .env
@@ -13,7 +13,7 @@
# URLs (port-based defaults): # URLs (port-based defaults):
# Dashboard http://SERVER:3101/fa/login # Dashboard http://SERVER:3101/fa/login
# Website http://SERVER:3010/fa # Website http://SERVER:3010/fa
# Finder http://SERVER:3103/fa # Koja http://SERVER:3103/fa
# API http://SERVER:5080/swagger # API http://SERVER:5080/swagger
services: services:
@@ -141,18 +141,18 @@ services:
ports: ports:
- "${WEBSITE_PORT:-3010}:3000" - "${WEBSITE_PORT:-3010}:3000"
finder: koja:
build: build:
context: . context: .
dockerfile: docker/finder/Dockerfile dockerfile: docker/koja/Dockerfile
extra_hosts: extra_hosts:
- "mirror:host-gateway" - "mirror:host-gateway"
args: args:
NODE_IMAGE: ${NODE_IMAGE:-docker-mirror.liara.ir/library/node:20-alpine} NODE_IMAGE: ${NODE_IMAGE:-docker-mirror.liara.ir/library/node:20-alpine}
NPM_REGISTRY: ${NPM_REGISTRY:-https://package-mirror.liara.ir/repository/npm/} NPM_REGISTRY: ${NPM_REGISTRY:-https://package-mirror.liara.ir/repository/npm/}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080} NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-http://localhost:5080}
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_FINDER_URL:-http://localhost:3103} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_KOJA_URL:-http://localhost:3103}
container_name: meezi-finder container_name: meezi-koja
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
api: api:
@@ -161,9 +161,9 @@ services:
PORT: "3000" PORT: "3000"
HOSTNAME: 0.0.0.0 HOSTNAME: 0.0.0.0
NEXT_PUBLIC_API_URL: "${NEXT_PUBLIC_API_URL:-http://localhost:5080}" NEXT_PUBLIC_API_URL: "${NEXT_PUBLIC_API_URL:-http://localhost:5080}"
NEXT_PUBLIC_SITE_URL: "${NEXT_PUBLIC_FINDER_URL:-http://localhost:3103}" NEXT_PUBLIC_SITE_URL: "${NEXT_PUBLIC_KOJA_URL:-http://localhost:3103}"
ports: ports:
- "${FINDER_PORT:-3103}:3000" - "${KOJA_PORT:-3103}:3000"
volumes: volumes:
postgres_data: postgres_data:
@@ -2,7 +2,7 @@ ARG NODE_IMAGE=docker-mirror.liara.ir/library/node:20-alpine
FROM ${NODE_IMAGE} AS deps FROM ${NODE_IMAGE} AS deps
WORKDIR /app WORKDIR /app
COPY web/finder/package*.json ./ COPY web/koja/package*.json ./
ARG NPM_REGISTRY=https://package-mirror.liara.ir/repository/npm/ ARG NPM_REGISTRY=https://package-mirror.liara.ir/repository/npm/
RUN npm install --legacy-peer-deps --ignore-scripts --registry ${NPM_REGISTRY} RUN npm install --legacy-peer-deps --ignore-scripts --registry ${NPM_REGISTRY}
@@ -10,13 +10,13 @@ FROM ${NODE_IMAGE} AS builder
WORKDIR /app WORKDIR /app
ARG NEXT_PUBLIC_API_URL=http://localhost:5080 ARG NEXT_PUBLIC_API_URL=http://localhost:5080
ARG NEXT_PUBLIC_SITE_URL=https://find.meezi.ir ARG NEXT_PUBLIC_SITE_URL=https://koja.meezi.ir
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_SITE_URL=$NEXT_PUBLIC_SITE_URL ENV NEXT_PUBLIC_SITE_URL=$NEXT_PUBLIC_SITE_URL
ENV NEXT_TELEMETRY_DISABLED=1 ENV NEXT_TELEMETRY_DISABLED=1
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY web/finder/ . COPY web/koja/ .
RUN npm run build RUN npm run build
FROM ${NODE_IMAGE} AS runner FROM ${NODE_IMAGE} AS runner
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "meezi-finder", "name": "koja",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "meezi-finder", "name": "koja",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@ducanh2912/next-pwa": "^10.2.9", "@ducanh2912/next-pwa": "^10.2.9",
@@ -1,14 +1,20 @@
{ {
"name": "meezi-finder", "name": "koja",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
"lint": "next lint" "lint": "next lint",
"cap:sync": "cap sync android",
"cap:open": "cap open android"
}, },
"dependencies": { "dependencies": {
"@capacitor/android": "^6.2.0",
"@capacitor/core": "^6.2.0",
"@capacitor/splash-screen": "^6.0.3",
"cordova-plugin-pushe": "^2.5.0",
"next": "16.2.6", "next": "16.2.6",
"react": "19.2.6", "react": "19.2.6",
"react-dom": "19.2.6", "react-dom": "19.2.6",
@@ -22,6 +28,7 @@
"date-fns-jalali": "^3.4.0-0" "date-fns-jalali": "^3.4.0-0"
}, },
"devDependencies": { "devDependencies": {
"@capacitor/cli": "^6.2.0",
"typescript": "5.8.3", "typescript": "5.8.3",
"@types/node": "^22", "@types/node": "^22",
"@types/react": "19.1.4", "@types/react": "19.1.4",

Before

Width:  |  Height:  |  Size: 547 B

After

Width:  |  Height:  |  Size: 547 B

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -2,8 +2,9 @@ import type { MetadataRoute } from "next";
export default function manifest(): MetadataRoute.Manifest { export default function manifest(): MetadataRoute.Manifest {
return { return {
name: "میزی‌یاب — جستجوی کافه و رستوران", id: "/fa",
short_name: "میزی‌یاب", name: "کجا — جستجوی کافه و رستوران",
short_name: "کجا",
description: "بهترین کافه‌ها و رستوران‌های ایران را با هوش مصنوعی پیدا کنید", description: "بهترین کافه‌ها و رستوران‌های ایران را با هوش مصنوعی پیدا کنید",
start_url: "/fa", start_url: "/fa",
display: "standalone", display: "standalone",
@@ -33,6 +34,14 @@ export default function manifest(): MetadataRoute.Manifest {
purpose: "maskable", purpose: "maskable",
}, },
], ],
shortcuts: [
{
name: "جستجوی کافه",
short_name: "جستجو",
url: "/fa/search",
icons: [{ src: "/icons/icon-192.png", sizes: "192x192" }],
},
],
screenshots: [], screenshots: [],
}; };
} }
@@ -16,7 +16,7 @@ export function Footer() {
<MapPin className="h-3.5 w-3.5 text-white" /> <MapPin className="h-3.5 w-3.5 text-white" />
</div> </div>
<span className="font-bold text-gray-900"> <span className="font-bold text-gray-900">
{locale === "fa" ? "میزی‌یاب" : "Meezi Finder"} {locale === "fa" ? "کجا" : "Koja"}
</span> </span>
</div> </div>
<p className="mt-3 text-xs leading-relaxed text-gray-500">{t("tagline")}</p> <p className="mt-3 text-xs leading-relaxed text-gray-500">{t("tagline")}</p>
@@ -30,7 +30,7 @@ export function Navbar() {
<MapPin className="h-4 w-4 text-white" /> <MapPin className="h-4 w-4 text-white" />
</div> </div>
<span className="text-base font-bold text-gray-900"> <span className="text-base font-bold text-gray-900">
{locale === "fa" ? "میزی‌یاب" : "Meezi Finder"} {locale === "fa" ? "کجا" : "Koja"}
</span> </span>
</a> </a>
@@ -1,8 +1,8 @@
{ {
"meta": { "meta": {
"siteName": "Meezi Finder", "siteName": "Koja",
"siteDescription": "Discover the best cafes and restaurants in Iran with AI", "siteDescription": "Discover the best cafes and restaurants in Iran with AI",
"homeTitle": "Meezi Finder — AI-Powered Cafe Discovery", "homeTitle": "Koja — AI-Powered Cafe Discovery",
"homeDescription": "Find the best cafes and restaurants near you with AI-powered search. Filter by vibe, price, menu, and amenities.", "homeDescription": "Find the best cafes and restaurants near you with AI-powered search. Filter by vibe, price, menu, and amenities.",
"searchTitle": "Search Cafes & Restaurants", "searchTitle": "Search Cafes & Restaurants",
"offlineTitle": "You're Offline", "offlineTitle": "You're Offline",
@@ -102,7 +102,7 @@
"copyright": "© 2025 Meezi. All rights reserved." "copyright": "© 2025 Meezi. All rights reserved."
}, },
"pwa": { "pwa": {
"installTitle": "Install Meezi Finder", "installTitle": "Install Koja",
"installDesc": "Add to your home screen for faster access", "installDesc": "Add to your home screen for faster access",
"installBtn": "Install", "installBtn": "Install",
"dismissBtn": "Later", "dismissBtn": "Later",
@@ -1,8 +1,8 @@
{ {
"meta": { "meta": {
"siteName": "میزی‌یاب", "siteName": "کجا",
"siteDescription": "بهترین کافه‌ها و رستوران‌های ایران را با هوش مصنوعی پیدا کنید", "siteDescription": "بهترین کافه‌ها و رستوران‌های ایران را با هوش مصنوعی پیدا کنید",
"homeTitle": "میزی‌یاب — جستجوی هوشمند کافه و رستوران", "homeTitle": "کجا — جستجوی هوشمند کافه و رستوران",
"homeDescription": "بهترین کافه‌ها و رستوران‌های شهر را با جستجوی هوش مصنوعی پیدا کنید. فیلتر براساس فضا، قیمت، منو و امکانات.", "homeDescription": "بهترین کافه‌ها و رستوران‌های شهر را با جستجوی هوش مصنوعی پیدا کنید. فیلتر براساس فضا، قیمت، منو و امکانات.",
"searchTitle": "جستجوی کافه و رستوران", "searchTitle": "جستجوی کافه و رستوران",
"offlineTitle": "بدون اینترنت", "offlineTitle": "بدون اینترنت",
@@ -102,7 +102,7 @@
"copyright": "© ۱۴۰۵ میزی. تمام حقوق محفوظ است." "copyright": "© ۱۴۰۵ میزی. تمام حقوق محفوظ است."
}, },
"pwa": { "pwa": {
"installTitle": "نصب اپ میزی‌یاب", "installTitle": "نصب اپ کجا",
"installDesc": "برای دسترسی سریع‌تر روی گوشی نصب کنید", "installDesc": "برای دسترسی سریع‌تر روی گوشی نصب کنید",
"installBtn": "نصب", "installBtn": "نصب",
"dismissBtn": "بعداً", "dismissBtn": "بعداً",