MapMind — это интерактивное веб-приложение и Telegram-бот, предназначенные для увлекательного изучения географии. Пользователи могут угадывать столицы, флаги стран, определять страны по фотографиям и по положению на карте. Игра ориентирована на обучение через игру, а также предоставляет рейтинговую систему для мотивации.
Cайт доступен по адресу https://mapmind.ru
- Столицы стран — выбери правильную столицу среди 4 вариантов
- Флаги — угадай страну по флагу
- Страна по фото — определи страну по известному фото
- Страна по контуру — выбери страну по её очертанию
- Поддержка команд:
/start - Интерактивные inline-кнопки и меню
- Поддержка одиночной игры и просмотр рейтинга
- Автоматическое сохранение и подсчёт очков
- Вывод топ-игроков с медалями (🥇🥈🥉)
| Часть | Технология |
|---|---|
| Фронтенд | Next.js 15, React 18 |
| Бэкенд/API | Next.js API Routes |
| Бот | Telegraf (Node.js) |
| Запросы | Axios |
| Хранение данных | Prisma / JSON |
| Деплой и сервер | Node.js + Nginx |
- Клонируй репозиторий:
git clone https://github.com/Sonenka/map-mind.git
cd map-mind- Установи зависимости:
npm install- Запусти dev-сервер:
npm run dev- Сборка и запуск в продакшн:
npm run build
npm start📂 Файл: src/telegram_bot/bot.js
- Установи зависимости:
npm install telegraf axios dotenv- Создай
.envфайл:
BOT_TOKEN=your_telegram_bot_token_here- Запусти бота:
node src/telegram_bot/bot.jsБот умеет:
- Отправлять картинки и вопросы
- Обрабатывать ответы пользователей
- Работать с API сервера
- Установи Node.js, PM2, и Nginx на сервере (Ubuntu)
- Прокинь порт 3000 через Nginx:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}- Установи SSL:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.comТеперь сайт доступен по адресу https://yourdomain.com
src/
├── app/ # Next.js страницы и API endpoints
├── components/ # React-компоненты UI
├── lib/ # Вспомогательные модули (например, prisma)
├── telegram_bot/
│ ├── bot.js # Telegram-бот Telegraf
│ └── handlers/ # Обработчики игровых режимов