Открытая, легковесная альтернатива 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.local2. Необходимые переменные окружения
#### Конфигурация 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 Эндпоинты
Приложение теперь использует следующие локальные маршруты API:
POST /api/stripe/checkout- Создаёт сессии оплаты StripePOST /api/stripe/webhook- Обрабатывает события Stripe webhook
Преимущества локальных маршрутов API
- Проще деплой - Не требуется развертывать отдельные edge-функции
- Переменные окружения - Поддержка стандартного файла .env
- Удобная отладка - Проще отлаживать локально
- Интеграция с фреймворком - Лучшая интеграция с Next.js
- Нет привязки к поставщику - Можно развернуть на любой платформе, поддерживающей Next.js
Устранение неполадок
- Проблемы с Webhook:
- Убедитесь, что
STRIPE_WEBHOOK_SECRETсоответствует вашему endpoint'у Stripe webhook - Проверьте логи webhook в панели Stripe
- Убедитесь, что URL webhook указан верно
- Переменные окружения:
- Убедитесь, что все необходимые переменные установлены
- Проверьте опечатки в названиях переменных
- Убедитесь, что ключ роли службы Supabase имеет соответствующие разрешения
- Проблемы с CORS:
- Маршруты API включают необходимые заголовки CORS
- При необходимости убедитесь, что ваш домен находится в белом списке
Примечания по безопасности
- Никогда не передавайте
STRIPE_SECRET_KEYилиSUPABASE_SERVICE_ROLE_KEYна клиент - Используйте префикс
NEXT_PUBLIC_только для переменных на стороне клиента - Регулярно меняйте ваши webhook-секреты
- Контролируйте доставку webhook в панели Stripe