Open Finapp
Разработка

Установка

Начало работы с Финапкой - клонирование, настройка переменных окружения, запуск локального бэкенда и dev-сервера.

Требования

Установка

Клонируйте репозиторий

Terminal
git clone https://github.com/ilkome/finapp.git
cd finapp

Установите зависимости

Terminal
pnpm install

Настройте переменные окружения

Скопируйте пример env-файла и заполните значения:

Terminal
cp app/.env.example app/.env
app/.env
VITE_SUPABASE_URL=http://localhost:54321
VITE_SUPABASE_ANON_KEY=<anon key из вывода supabase start>
VITE_POWERSYNC_URL=http://localhost:8080

При локальной разработке supabase start выводит API URL (использовать как VITE_SUPABASE_URL) и anon key (использовать как VITE_SUPABASE_ANON_KEY). VITE_POWERSYNC_URL - это сервис PowerSync, запускаемый на следующем шаге.

Запустите локальный бэкенд

Выполните три команды из директории app/. После первоначальной настройки достаточно просто запускать контейнеры при необходимости.

1. Запустите Supabase (Postgres + Auth на порту 54321):

Terminal - из app/
supabase start

2. Примените настройки репликации PowerSync:

Terminal - из app/
docker exec -i supabase_db_app psql -U postgres -d postgres < supabase/powersync_setup.sql

Эта команда создаёт роль powersync_role с правами репликации и публикацию powersync для пяти таблиц Финапки.

3. Запустите сервис PowerSync (порт 8080):

Terminal - из app/
docker compose -f powersync/docker-compose.yaml up -d

Запустите dev-сервер

Terminal
pnpm dev

Приложение доступно на http://localhost:3050.

Playground дизайн-системы доступен на http://localhost:3050/dev в режиме разработки (скрыт в продакшене).

Вход через Google (опционально)

На экране входа есть кнопка Войти через Google. Вход по почте и паролю работает без этой настройки - настраивайте Google, только если хотите протестировать этот флоу локально.

Создайте OAuth-клиент Google

В Google Cloud Console создайте OAuth 2.0 Client ID (Web application) и добавьте локальный callback Supabase как разрешённый redirect URI:

http://127.0.0.1:54321/auth/v1/callback

Добавьте ключи в app/.env

app/.env
SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID=<client id>
SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET=<client secret>

CLI Supabase загружает .env из директории запуска. Эти переменные подставляются в env() в app/supabase/config.toml и не попадают в клиент (без префикса VITE_).

Перезапустите Supabase

Terminal - из app/
supabase stop && supabase start

Провайдер Google уже включён в config.toml ([auth.external.google], skip_nonce_check = true для локали), а dev-origin http://localhost:3050 добавлен в additional_redirect_urls.

Сборка

pnpm build