Plan meetings with friends easily! Vote for locations on a map and find the best time through visual scheduling.
- 🗺️ Location Voting - Add location suggestions on Yandex Maps and vote for your favorites
- 📅 Time Scheduling - Visual timeline to find the best meeting time for everyone
- 🔗 Smart Link Parsing - Paste Yandex Maps links to add locations instantly
- 🚀 Real-time Updates - See votes and changes in real-time using Supabase subscriptions
- 📱 Native Telegram Experience - Built specifically for Telegram Mini Apps with haptic feedback
- Node.js 18+ and npm
- Telegram Bot (via @BotFather)
- Supabase account
- Yandex Maps API key
-
Clone the repository
git clone https://github.com/YOUR_USERNAME/event-tma.git cd event-tma -
Install dependencies
npm install
-
Set up environment variables
Copy the example file and fill in your credentials:
cp .env.example .env
Edit
.envwith your API keys:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_YANDEX_API_KEY=your_yandex_maps_api_key
-
Set up the database
Run the SQL schema from
docs/SETUP.mdin your Supabase project. -
Run the development server
npm run dev
-
Configure your Telegram Bot
Set the Mini App URL in BotFather to your development or production URL.
For detailed setup instructions, see docs/SETUP.md.
- Frontend: Vue 3 (Composition API), Vite
- Styling: Tailwind CSS with Telegram theme variables
- Maps: Vue Yandex Maps, Yandex Geocoder API
- Backend: Supabase (PostgreSQL, Real-time subscriptions)
- Telegram: @twa-dev/sdk
event-tma/
├── src/
│ ├── components/ # Vue components
│ ├── composables/ # Reusable composition functions
│ ├── utils/ # Helper functions
│ ├── config/ # Configuration and constants
│ ├── main.js # App entry point
│ ├── router.js # Vue Router configuration
│ └── supabase.js # Supabase client
├── public/ # Static assets
├── docs/ # Documentation
└── package.json
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Планируйте встречи с друзьями легко! Голосуйте за места на карте и выбирайте лучшее время через визуальный график.
- 🗺️ Голосование за место - Добавляйте варианты мест на Яндекс.Картах и голосуйте за понравившиеся
- 📅 Планирование времени - Визуальная временная шкала для поиска удобного времени для всех
- 🔗 Умная вставка ссылок - Вставляйте ссылки из Яндекс.Карт для быстрого добавления мест
- 🚀 Обновления в реальном времени - Видите голоса и изменения моментально благодаря Supabase
- 📱 Нативный Telegram опыт - Создано специально для Telegram Mini Apps с тактильной обратной связью
- Node.js 18+ и npm
- Telegram бот (через @BotFather)
- Аккаунт Supabase
- API ключ Яндекс.Карт
-
Склонируйте репозиторий
git clone https://github.com/YOUR_USERNAME/event-tma.git cd event-tma -
Установите зависимости
npm install
-
Настройте переменные окружения
Скопируйте пример и заполните данные:
cp .env.example .env
Отредактируйте
.envсвоими API ключами:VITE_SUPABASE_URL=ваш_supabase_url VITE_SUPABASE_ANON_KEY=ваш_supabase_anon_key VITE_YANDEX_API_KEY=ваш_yandex_maps_api_key
-
Настройте базу данных
Выполните SQL схему из
docs/SETUP.mdв вашем Supabase проекте. -
Запустите dev сервер
npm run dev
-
Настройте Telegram бота
Установите URL Mini App в BotFather на ваш dev или production URL.
Подробные инструкции по настройке см. в docs/SETUP.md.
- Frontend: Vue 3 (Composition API), Vite
- Стилизация: Tailwind CSS с темными переменными Telegram
- Карты: Vue Yandex Maps, Yandex Geocoder API
- Backend: Supabase (PostgreSQL, Real-time подписки)
- Telegram: @twa-dev/sdk
Проект распространяется под лицензией MIT - подробности в файле LICENSE.