Все работы
SaaS · Mobile · KZ·2024—2026·Live · Production

Profi.kz — маркетплейс услуг для 16 городов Казахстана

Двухсторонний маркетплейс: клиент создаёт заказ (сантехник, электрик, клинер, ремонтник), мастера присылают предложения с ценой, клиент выбирает и оплачивает через Stripe. Внутренний WebSocket-чат, верификация мастеров, split 85/15, промокоды и вывод средств.

Profi.kz
Задача

Построить локальный аналог Профи.ру для KZ с нуля

Нужен был двухсторонний маркетплейс услуг под казахстанский рынок: локальные города, комиссия с расчётом через Stripe, миграция уже написанного Flutter-mobile на React Native без потерь данных и продакшн-uptime.

  • 2 роли: Клиент и Мастер в одном приложении
  • Верификация мастеров с ревью документов
  • Мгновенная связь: чат клиент ↔ мастер
  • Stripe split-payments 85/15 с кошельком мастера
  • Гео-поиск по 16 городам Казахстана
  • Миграция с Flutter без обрыва продакшена
Решение

FastAPI · React Native · WebSocket · Stripe

Backend на FastAPI + SQLAlchemy (24 модуля, 100+ endpoints, 22 модели). Mobile переписан с Flutter на React Native + Expo. WebSocket через socket.io для чата. Админ-панель на Next.js 14 + Radix UI + Recharts. Stripe split-платежи, Firebase Storage для файлов, Twilio SMS для OTP.

6 акцентов в продукте

Что внутри платформы

01

Order-flow из 6 статусов

PENDING → Proposals → ACCEPTED → IN_PROGRESS → COMPLETED (с фото) → PAID. Каждый статус — событие в системе с уведомлениями, Stripe-хуками и записью в историю.

02

WebSocket чат клиент↔мастер

Реалтайм-переписка на socket.io внутри приложения. Уведомления через FCM, файлы в Firebase Storage. Клиент и мастер могут договориться о деталях без выхода на сторонние мессенджеры.

03

Верификация мастеров

Мастер загружает документы → админ ревьюит → Approved/Rejected. Плюс портфолио, рейтинг, отзывы. Только верифицированные попадают в поиск клиентов.

04

Stripe split-платежи 85/15

После COMPLETED деньги списываются, платформа удерживает 15%, 85% зачисляется в кошелёк мастера. Мастер выводит средства через модуль Withdrawals.

05

Миграция Flutter → React Native

Проект начинали на Flutter, перевели на React Native + Expo для скорости релизов и общего стека с web-фронтендом. Все данные сохранены, новых сборок ждать не пришлось.

06

16 городов из коробки

Таблица City с координатами, категории по регионам, гео-поиск мастеров через PostgreSQL geo. Легко добавить новый город без релиза.

Метрики платформы
16
городов Казахстана
Алматы · Астана · Шымкент и др.
24
API-модуля
100+ endpoints
22
SQLAlchemy модели
User / Order / Proposal / Review / Message …
15%
комиссия платформы
Stripe split 85/15
6+
категорий услуг
Сантехника · Электрика · Уборка · Кондиционеры · Покраска
2
роли + admin
Клиент + Мастер + Админ-панель
Экраны mobile

Клиент и мастер в одном приложении

Клиент — главная: категории услуг и создание заказа
Клиент — главная: категории услуг и создание заказа
Мастер — доступные заказы, статистика новых / в работе / выполненных
Мастер — доступные заказы, статистика новых / в работе / выполненных
Мастер — карточка заказа: адрес, дата, сумма, действия
Мастер — карточка заказа: адрес, дата, сумма, действия
Чат — WebSocket соединение клиент ↔ мастер
Чат — WebSocket соединение клиент ↔ мастер
Профиль пользователя — рейтинг, отзывы, документы
Профиль пользователя — рейтинг, отзывы, документы
Стек

Технологии

React Native + ExpoMobile (миграция с Flutter)
FastAPI + PythonBackend API
SQLAlchemy + AlembicORM + migrations
PostgreSQLБД (22 модели)
WebSocket / socket.ioReal-time чат
Next.js 14 + Radix UIAdmin panel
RechartsАналитика
StripeПлатежи, split 85/15
Firebase StorageФайлы, фото портфолио
Twilio SMSOTP, уведомления
Google Maps APIГорода + геолокация
JWTAuth
Похожая задача?

Двухсторонний маркетплейс с чатом и Stripe?