Skip to content

shampsdev/dishdash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

307 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DishDash

DishDash — это веб-приложение для совместного выбора заведений с друзьями. Сервис решает извечную проблему «куда пойти» с помощью механики, похожей на Tinder: участники одного лобби свайпают карточки ресторанов, кафе и баров, пока не найдут взаимный лайк (match). Когда два человека свайпают одно и то же заведение в одну сторону — это считается матчем, и все участники лобби получают уведомление с адресом и деталями выбранного места.

Основные возможности

  • Создание лобби — пользователь может создать комнату и пригласить друзей по ссылке
  • Совместный свайп — все участники видят одни и те же карточки заведений и свайпают их в реальном времени
  • Матчинг — когда два участника свайпают заведение вправо (лайк), образуется матч
  • Интерактивная карта — на карте отображаются все заведения с информацией о них
  • Telegram Mini App — приложение работает внутри Telegram без необходимости отдельной установки
  • Админ-панель — для управления заведениями, пользователями и лобби

Технологии

Server

  • Язык: Go 1.22
  • Фреймворк: Gin
  • База данных: PostgreSQL (pgx)
  • WebSocket: Socket.IO
  • Документация: Swagger
  • Миграции: golang-migrate
  • Логирование: Logrus
  • Метрики: Prometheus

Dashboard

  • Язык: Go 1.23
  • Фреймворк: Gin
  • База данных: PostgreSQL (pgx)
  • AWS: AWS SDK (S3)

Dashboard UI

  • Фреймворк: React 19
  • Сборщик: Vite
  • Стили: Tailwind CSS
  • Карты: OpenLayers
  • Маршрутизация: React Router

Dashboard UI V2

  • Фреймворк: React 18
  • Сборщик: Vite
  • Стили: Tailwind CSS
  • UI-компоненты: Radix UI
  • Карты: Mapbox GL, MapLibre
  • Состояние: Zustand
  • Запросы: TanStack Query

Miniapp

  • Фреймворк: React 18
  • Сборщик: Vite
  • Стили: Tailwind CSS
  • UI-компоненты: Radix UI
  • Интеграция: Telegram Mini Apps SDK
  • Анимации: Framer Motion
  • WebSocket: Socket.IO
  • Карты: Mapbox GL, react-map-gl
  • Состояние: Zustand
  • Запросы: TanStack Query

Landing

  • Фреймворк: React
  • Сборщик: Vite

Bot

  • Язык: Node.js (TypeScript)
  • Сборщик: esbuild
  • Фреймворк: Telegraf, Express
  • Логирование: Winston
  • AWS: AWS SDK (S3)
  • Тестирование: Jest

Архитектура

Проект представляет собой монорепо с несколькими независимыми сервисами, которые взаимодействуют друг с другом через REST API и WebSocket:

dishdash/
├── server/           # Основное API (публичное)
├── dashboard/        # Админ-панель (Backend)
├── dashboard-ui/     # Админ-панель (Frontend v1)
├── dashboard-ui-v2/  # Админ-панель (Frontend v2)
├── miniapp/          # Telegram Mini App
├── landing/          # Landing page
└── bot/              # Telegram Bot

Взаимодействие сервисов

  • Miniapp взаимодействует с Server через REST API и Socket.IO для real-time коммуникации
  • Bot использует Server API для создания лобби и обработки webhook от Telegram
  • Dashboard и Dashboard UI обеспечивают управление контентом (заведения, пользователи, статистика)
  • Статические файлы (изображения заведений) хранятся в AWS S3

База данных

Используется PostgreSQL с пространственными расширениями (PostGIS) для работы с геоданными. Структура базы данных включает таблицы пользователей, заведений, лобби, матчей и сессий.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors