World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
Каталог продуктов с ценами Dina, Dana и Fix Price в Актау: категории и товары с самой большой разницей в цене между сетями.
Translation pending
CommerceTypeScript · GoGitHub @kiratonineOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Сравнение цен на продукты в Актау с городской аналитикой и интеграцией с Siri.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Сервис для жителей Актау, который сравнивает цены на продукты, показывает городскую аналитику и помогает найти самое выгодное предложение через web и Siri. Adil Bağa (Әділ баға, «Справедливая цена») — веб-сервис мониторинга и сравнения цен на социально значимые и повседневные продукты в Актау. Проект объединяет данные магазинов в единый каталог и помогает быстро получить ответ на простой вопрос: Где нужный товар сегодня дешевле и где находится ближайшая точка этого магазина? В MVP используются данные трёх торговых сетей:Read the full README ↗
Aktau Market — веб-сервис мониторинга и сравнения цен на социально значимые и повседневные продукты в Актау.
Публичное имя Aktau Market утверждено одинаково для RU/KK. Историческое имя —
Adil Bağa (Әділ баға, «Справедливая цена»); GitHub repository kiratonine/AdilBaga
и Vercel project adil-baga не переименовываются. Existing зелёный SVG-знак выше
утверждён как финальный логотип; новый знак не требуется. Старый assets/logo/Logo.jpg
и скриншоты сохранены как исторические материалы. Frontend branding/SEO implementation
подготовлена как source candidate, ещё не merged/deployed. Контакты и юридические
данные остаются pending: Part17 Frontend handoff.
Проект объединяет данные магазинов в единый каталог и помогает быстро получить ответ на простой вопрос:
Где нужный товар сегодня дешевле и где находится ближайшая точка этого магазина?
Используются данные трёх торговых сетей:
Во время работы приложения backend не обращается к сайтам магазинов. Каталоги были собраны заранее, нормализованы и сохранены как snapshot в PostgreSQL.
Цена одного и того же продукта может отличаться от магазина к магазину, но сравнивать её неудобно:
В результате более выгодное предложение может находиться в нескольких минутах от человека, но он о нём не знает.
Aktau Market сокращает путь от поиска до конкретного решения:
Нужный товар
↓
Единый каталог
↓
Сравнение предложений
↓
Минимальная цена
↓
Магазин
↓
Ближайшая точка
Пользователь получает уже подготовленный результат — frontend не агрегирует цены самостоятельно.
Числа 849 товаров / 6 категорий ниже относятся к историческому исходному snapshot, не являются текущими live counts; актуальный опубликованный каталог меняется.
Dana Market / Dina Market / Fix Price
↓
одноразовый import
↓
deterministic normalization
↓
product matching
↓
canonical snapshot
↓
PostgreSQL / Supabase
Next.js App Router (SSR, ru/kk)
↓ REST
Go API (production)
↓
PostgreSQL
backend-go/ уже реализует frozen v1 business parity для catalog/dashboard/voice.
Production frontend: main → Vercel → https://aktau.market.
Production API: immutable Go container на VPS → Cloudflare Tunnel →
https://api.aktau.market; PostgreSQL остаётся Supabase. Railway retired.
NestJS backend/ остаётся reference для frozen v1 parity, не production traffic
owner. Запуск и проверки: backend-go/README.md.
Это документирование принятого deployment, не новая проверка VPS.
Siri
↓
POST /api/voice/start
↓
Gemini: текст → intent + filters
↓
Go / PostgreSQL: поиск и сравнение цен
↓
Nearest Store / Haversine
↓
готовый structured result
↓
Siri speech + notification
Важно: Gemini не сравнивает цены, не выбирает магазин и не определяет самый дешёвый товар. Эти решения выполняются детерминированно в Go/PostgreSQL; NestJS сохранён как reference.
| Слой | Технологии |
|---|---|
| Frontend | Next.js 16 App Router, React 19, TypeScript |
| UI / routing | Tailwind CSS, Next.js routing, ru/kk URL prefixes |
| Data fetching | TanStack Query |
| Карта | Leaflet / React Leaflet |
| Backend | Go — production API с frozen v1 parity; NestJS 11 / TypeScript — reference |
| Database | PostgreSQL / Supabase |
| DB tooling / reference ORM | Prisma; Go runtime — pgx |
| Voice NLP | Gemini API |
| Voice sessions | Upstash Redis |
| Geolocation | Haversine distance |
| Tests | Node Test Runner, Vitest, Playwright |
| Frontend deploy | Vercel |
| Backend production target | VPS / immutable Go container; Cloudflare Tunnel, loopback-only origin |
| Railway | Retired; not a production target |
Основные публичные endpoints:
GET /api/categories
GET /api/categories/:slug/filters
GET /api/products
GET /api/products/:id
GET /api/dashboard
POST /api/voice/start
POST /api/voice/continue
GET /api/products поддерживает:
По умолчанию товары сортируются по минимальной цене; limit=24, максимум 100.
Wire contract v1: OpenAPI,
семантика и совместимость,
reproducible contract checks.
git clone https://github.com/kiratonine/AdilBaga.git
cd AdilBaga
cd backend
pnpm install
cp .env.example .env
Заполните backend/.env:
DATABASE_URL=
DIRECT_URL=
GEMINI_API_KEY=
GEMINI_API_KEY2=
GEMINI_API_KEY3=
GEMINI_MODEL=gemini-3.1-flash-lite
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
Подготовьте Prisma client и соберите backend:
pnpm db:generate
pnpm build
Запуск:
node --env-file=.env dist/src/main.js
Backend по умолчанию доступен на:
http://localhost:3000
В новом терминале:
cd frontend
pnpm install
cp .env.example .env
Для работы с локальным backend (не записывайте secrets в frontend env):
NEXT_PUBLIC_API_MODE=http
NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:3000
API_BASE_URL=http://127.0.0.1:3000
NEXT_PUBLIC_SITE_URL=http://localhost:3100
NEXT_PUBLIC_ENABLE_TEST_MOCKS=0
Запуск:
pnpm dev --port 3100
Frontend:
http://localhost:3100/ru/catalog
Для runtime используется PostgreSQL snapshot.
Если поднимается новая локальная база:
cd backend
pnpm db:generate
pnpm exec prisma migrate deploy
pnpm db:seed
pnpm db:verify
Для обычного runtime и live demo повторный парсинг сайтов магазинов не требуется.
cd backend
pnpm build
pnpm test
pnpm test:matching
pnpm test:audit
frontend/)cd frontend
rtk proxy pnpm typecheck
rtk proxy pnpm lint
NEXT_PUBLIC_API_MODE=mock rtk pnpm test
# HTTP env из раздела запуска обязателен и для build/start.
rtk pnpm build
PW_CHANNEL=chrome rtk pnpm test:e2e # explicit test-only mock build
При запущенном backend:
cd frontend
E2E_API=http \
NEXT_PUBLIC_API_MODE=http \
NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:3000 \
API_BASE_URL=http://127.0.0.1:3000 \
NEXT_PUBLIC_SITE_URL=http://localhost:3100 \
PW_CHANNEL=chrome \
pnpm test:e2e
Siri-flow дополнительно проверяется вручную на реальном iPhone.
Production build/start требуют явных HTTP mode, публичного API URL и site URL.
Production адреса: https://aktau.market и https://api.aktau.market.
Публичное имя — Aktau Market; frontend branding/SEO изменения реализованы
как source candidate и ещё не выпущены в production.
Part16 signed production verification ещё открыт; Automatic CI/CD Activation
остаётся FROZEN / WAITING_FOR_OWNER. Backend может быть
недоступен при next build: каталог, Dashboard и sitemap читают API в runtime;
серверные GET кешируются до 3600 секунд. Mock production build разрешён только
через NEXT_PUBLIC_ENABLE_TEST_MOCKS=1 для Playwright, не для deployment.
На /mnt/d известен Vitest worker-startup issue: см. Production Part 01 report
для проверки byte-identical native-WSL test copy без изменения timeout/dependencies.
AdilBaga/
├── assets/
│ ├── logo/
│ │ └── Logo.jpg
│ └── screenshots/
│ ├── catalog.png
│ ├── analytics.png
│ └── siri.png
│
├── backend/
│ ├── prisma/ # Prisma schema, migration, seed
│ ├── scripts/ # audit / verification utilities
│ └── src/
│ ├── database/ # PostgreSQL adapters
│ ├── modules/ # import / normalization / matching
│ └── voice/ # Gemini, sessions, voice flow
│
├── data/
│ └── snapshots/ # frozen dataset used by the MVP
│
├── docs/ # техническая документация и reports
│
├── frontend/
│ ├── public/
│ └── src/
│ ├── api/
│ ├── components/
│ ├── app/ # Next App Router, SSR/SEO
│ ├── views/
│ └── mocks/
│
├── scripts/
└── README.md