Открытое, легковесное решение Trello для мейкеров и инди-хакеров.
Фокус на простоте, скорости и масштабируемости. Создано на современном стеке: Tailwind CSS, shadcn/ui, Supabase, интеграция Stripe. Поддержка неограниченного количества проектов, командная работа, светлый/тёмный режим и плавный пользовательский опыт. Идеально для одиночных разработчиков и небольших команд, желающих полного контроля без лишней сложности.
🌟 Если этот проект оказался для вас полезным, поставьте звезду! Это поможет другим тоже его найти.
Руководство по развертыванию
Обзор
Приложение теперь использует локальные маршруты API Next.js вместо Supabase Edge Functions для интеграции Stripe. Это упрощает развертывание и позволяет использовать стандартные файлы .env для конфигурации.Настройка переменных окружения
1. Создайте файл .env.local
Скопируйте.env.example в .env.local и заполните своими значениями:cp .env.example .env.local
2. Необходимые переменные окружения
#### Конфигурация Supabase
NEXT_PUBLIC_SUPABASE_URL- URL вашего проекта SupabaseNEXT_PUBLIC_SUPABASE_ANON_KEY- Анонимный ключ вашего SupabaseSUPABASE_SERVICE_ROLE_KEY- Ключ сервисной роли Supabase (только для серверной части)
STRIPE_SECRET_KEY- Ваш секретный ключ Stripe (только для серверной части)NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY- Ваш открытый ключ StripeSTRIPE_WEBHOOK_SECRET- Ваш секретный ключ Stripe webhook
NEXT_PUBLIC_SITE_URL- URL вашего сайта (для продакшена)NEXTAUTH_URL- URL вашего сайта (то же, что выше)NEXTAUTH_SECRET- Случайный секрет для NextAuth
Локальная разработка
- Установите зависимости:
npm install
- Настройте переменные окружения в файле
.env.local - Запустите сервер разработки:
npm run dev
- Протестируйте Stripe вебхуки локально с помощью Stripe CLI:
stripe listen --forward-to localhost:3000/api/stripe/webhook
Продакшн-развертывание
Развертывание на Vercel
- Развернуть на Vercel:
npx vercel
- Переменные окружения:
- Настройка Stripe Webhook:
- Укажите адрес webhook:
https://your-domain.vercel.app/api/stripe/webhook
API Endpoints
Приложение теперь использует следующие локальные API-маршруты:
POST /api/stripe/checkout- Создаёт сессии Stripe checkoutPOST /api/stripe/webhook- Обрабатывает события Stripe webhook
Преимущества локальных API-маршрутов
- Проще развертывание — нет необходимости развертывать отдельные edge-функции
- Переменные окружения — стандартная поддержка .env файлов
- Удобная отладка — проще отлаживать локально
- Интеграция с фреймворком — лучшая интеграция с Next.js
- Отсутствие привязки к платформе — можно развернуть на любой платформе с поддержкой Next.js
Устранение неполадок
- Проблемы с webhook:
- Убедитесь, что
STRIPE_WEBHOOK_SECRETсоответствует вашему endpoint Stripe webhook - Проверьте логи webhook в панели Stripe
- Убедитесь, что URL webhook указан верно
- Переменные окружения:
- Проверьте, что все необходимые переменные заданы
- Проверьте опечатки в именах переменных
- Убедитесь, что ключ service role Supabase имеет нужные права
- Проблемы с CORS:
- API-маршруты содержат корректные CORS-заголовки
- Убедитесь, что ваш домен включён в белый список при необходимости
Примечания по безопасности
- Никогда не раскрывайте
STRIPE_SECRET_KEYилиSUPABASE_SERVICE_ROLE_KEYна клиенте - Используйте префикс
NEXT_PUBLIC_только для переменных на клиенте - Регулярно меняйте ваши webhook-секреты
- Следите за доставкой webhook в панели Stripe