005
Archive 005Инструмент
Feedplace
Маркетплейс специалистов и фрилансеров: профиль-визитка с портфолио и услугами, отзывы, чат в реальном времени, заказы, студии и Telegram-бот
01 /О проекте
Маркетплейс специалистов и фрилансеров: профиль-визитка с портфолио и услугами, отзывы, чат в реальном времени, заказы, студии и Telegram-бот.
Разрабатывалось под перепродажу / будущий продакшн проект
02 /🎯 Суть проекта
- 01Платформа для поиска специалистов/фрилансеров: у каждого своя визитка с портфолио, услугами и отзывами
- 02Позиционирование: «Платформа для поиска специалистов. Визитка, отзывы и портфолио — всё в одном профиле»
- 03Три роли: specialist, client, administrator; роль выбирается в онбординге после регистрации
- 04Отдельный саб-продукт Webreview — независимый каталог сторонних сайтов с отзывами о них
- 05Три языка интерфейса (ru/uk/en) с автоопределением по cookie, geo-IP и заголовку Accept-Language
03 /🏗️ Архитектура (backend/ + frontend/)
- 01Монорепозиторий из двух независимых частей: backend (FastAPI) и frontend (Next.js) без единого корневого конфигуратора
- 02Backend: асинхронный SQLAlchemy 2.0 + asyncpg, PostgreSQL с UUID/JSONB, 35+ ревизий Alembic
- 03Слои: routers/ → 24 сервисных *_services.py модуля → models.py (32 таблицы) → database.py
- 04Redis опционально: rate limiting, отзыв версий JWT, кэш публичных настроек и статистики, pub/sub для WebSocket между процессами
- 05Frontend: Next.js 16 (App Router), React 19, Tailwind CSS v4, Framer Motion; состояние — React Context (Auth, Messaging, Notifications, Theme, i18n)
04 /🧑💼 Профили специалистов
- 01Публичная страница /{username}: визитка, теги, локация, опыт, языки; контакты открываются только авторизованным
- 02Резюме — JSON-документ profile_resume: грейд (intern…lead), навыки, опыт, образование, каталог инструментов резюме
- 03Аватары через DiceBear: готовые стили, рандомизация, покомпонентный конструктор (цвета, форма, аксессуары)
- 04Оформление профиля по тарифу подписки (free/brand/studio): баннер, фон, тема, рамка аватара, стиль виджета
- 05Каталог специалистов: фильтры по категории/тегу/локации, поиск, сортировка (новые/рейтинг/отзывы)
05 /🛒 Услуги и заказы
- 01Публикация услуг (Product): цена (фиксированная/«от»/по договорённости), срок выполнения, состав работ, до 5 изображений
- 02Заказ создаётся прямо из чата как предложение (order_proposal) с отдельным сообщением в диалоге
- 03Жизненный цикл: proposed → accepted → awaiting_payment → payment_claimed → funded → in_progress → delivered → completed (+ cancelled/disputed/refunded)
- 04Контрпредложения (counter), ручной режим оплаты — клиент и специалист подтверждают оплату/получение вручную
- 05Модели Payment/EscrowHold и комиссия гаранта заложены в схеме, но платёжный провайдер для режима с гарантом пока не подключён
06 /🏢 Студии и команды
- 01Регистрация студии с модерацией администратора (approve/reject/needs_info)
- 02Публичная страница /studios/{slug}: описание, логотип, баннер, услуги, отзывы, команда
- 03Роли команды: owner/admin/manager/member; приглашения по email-токену через /invite/studio/{token}
- 04Услуги студии — из общего справочника категорий (ServiceCategory/ServiceCatalogItem) или собственные
- 05Отдельный тип диалога studio-conversation с назначением ответственного члена команды
07 /⭐ Отзывы, верификация и доверие
- 01Отзыв на профиль: рейтинг 1–5 и текст, один отзыв на пару «автор — профиль» (частичный уникальный индекс)
- 02Отзывы на сайты и студии работают по upsert / с уникальностью пары «автор — сущность»
- 03Модерация: скрытие отзыва администратором, жалобы (ReviewReport) с полиморфной привязкой к типу отзыва
- 04Верификация специалиста: анкета (имя, опыт, портфолио, документ), статусы pending/needs_info/approved/rejected, бейджи junior/middle/senior/expert
08 /💬 Сообщения и уведомления
- 01Realtime-чат: история по REST + постоянный WebSocket /api/v1/ws/me, вложения, редактирование, read receipts, presence, блокировка
- 0224 вида внутриплатформенных уведомлений с автоочисткой спустя несколько дней
- 03Email-уведомления через настраиваемый SMTP (приветствие, смена пароля, статусы заказа и верификации)
09 /🤖 Telegram-интеграция
- 01Отдельный бот на aiogram 3 (long polling): меню, сообщения, уведомления, услуги, поддержка
- 02Привязка аккаунта через deep-link или Telegram Login/OIDC (PKCE)
- 03Дублирование уведомлений платформы в Telegram при привязанном аккаунте
10 /🌐 Webreview и встраиваемый виджет
- 01Каталог сторонних сайтов: добавление домена (нормализация), модерация pending/approved
- 02Отзывы о сайтах по upsert, карточка домена со сводным рейтингом, жалобы на отзывы
- 03Виджет /widget/{username}.js: рейтинг со ссылкой на профиль, стили classic/premium, открытый CORS
11 /🖥️ Личный кабинет и админ-панель
- 01Кабинет специалиста: профиль, резюме, оформление, услуги, отзывы, верификация, сообщения, заказы, студия, поддержка
- 02Кабинет заказчика: поиск, избранное, сообщения, заказы, отзывы, поддержка
- 03Админка: пользователи, модерация сайтов/отзывов/верификации/студий, справочник услуг, тикеты, настройки сайта, SEO-аудит, аналитика, системные журналы
12 /🧩 Технические особенности
- 01Pydantic v2 схемы, JWT (python-jose) + bcrypt, rate limiting и версия JWT через Redis
- 02Docker Compose (PostgreSQL 16 + Redis 7) для локальной разработки, поддержка managed Postgres (Supabase)
- 03Единая обработка 5xx-ошибок: пользователю — обобщённое сообщение, детали — в журнал разработчика
- 0418 роутеров FastAPI, 32 ORM-модели, статическая раздача загрузок через /uploads
13 /Галерея




