Skip to content

Latest commit

 

History

History
200 lines (136 loc) · 8.47 KB

File metadata and controls

200 lines (136 loc) · 8.47 KB

Finapp Logo

Finapp - финансовое приложение с открытым исходным кодом

English | Русский

Ваши деньги, ваш контроль - где угодно и когда угодно.

Finapp помогает легко отслеживать личные финансы и управлять ими. Репозиторий представляет собой pnpm-монорепозиторий с Nuxt-приложением и сайтом документации.

Демо

finapp.ilko.me

Документация

finapp-docs.ilko.me

Граф знаний

Интерактивная карта архитектуры кодовой базы: finapp-graph.ilko.me/ru

Почему Finapp?

  • Просто: ничего лишнего - только ваши транзакции и балансы.
  • Быстро: работает офлайн и мгновенно синхронизируется между устройствами.
  • Приватно: данные принадлежат вам - сначала хранятся локально и синхронизируются через ваш собственный бэкенд Supabase.
  • Гибко: поддержка нескольких валют с автоматическими курсами обмена.
  • Удобно: оптимизировано для мобильных и десктопных устройств, устанавливается как PWA.

Возможности

Финансы

  • Кошельки: 6 типов - наличные, банковские счета, кредитные карты, депозиты, криптовалюта, долги.
  • Транзакции: расход, доход, перевод, корректировка со встроенным калькулятором.
  • Категории: иерархические родительские и дочерние категории с произвольными иконками и цветами.
  • Мультивалютность: более 165 валют с ежедневным автоматическим обновлением курсов.

Аналитика

  • Дашборд со сводкой, расходами и доходами.
  • Столбчатые и линейные графики со средней линией.
  • Гибкие диапазоны дат: день, неделя, месяц, год или произвольный период.
  • Разбивка по категориям с разными режимами отображения.
  • Множественные фильтры по кошелькам и категориям.

Офлайн и синхронизация

  • Offline-first PWA, работает без интернета.
  • Локальное хранилище SQLite с автоматической фоновой синхронизацией при подключении.
  • Синхронизация между устройствами в реальном времени через PowerSync.

Кастомизация

  • Светлая, тёмная и системная темы.
  • Более 20 основных цветов и 5 нейтральных палитр.
  • Настраиваемый радиус скругления.
  • Конфигурация виджетов дашборда для каждой вкладки.
  • Английский и русский интерфейс.

Технологии

  • Vue 3
  • Nuxt 4
  • Pinia
  • @nuxt/ui v4 и Tailwind CSS v4
  • Supabase (Postgres)
  • PowerSync
  • Supabase Auth
  • Docus
  • pnpm workspaces

Структура репозитория

finapp/
  app/    # Nuxt-приложение, конфигурация Supabase + PowerSync, тесты, ассеты
  docs/   # Сайт документации на Docus

Корневой пакет содержит только workspace-скрипты. Зависимости приложения и документации хранятся в своих манифестах.

Начало работы

Требования

  • Node.js >=24.12.0
  • pnpm 10.x
  • Docker и Supabase CLI для локального бэкенда

Установка

git clone https://github.com/ilkome/finapp.git finapp
cd finapp
pnpm install

Настройка приложения

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

cp app/.env.example app/.env

Обязательные переменные окружения:

VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_POWERSYNC_URL=your_powersync_url

Для локальной разработки они указывают на локальный стек, запускаемый ниже: Supabase на http://localhost:54321 и PowerSync на http://localhost:8080.

Локальный бэкенд

Бэкенд - это локальный self-hosted Supabase (Postgres + Auth) плюс self-hosted сервис PowerSync. Выполните один раз из workspace app/:

cd app

# 1. Запустить Supabase (Postgres + Auth на :54321)
supabase start

# 2. Применить настройку репликации PowerSync (роль + публикация)
docker exec -i supabase_db_app psql -U postgres -d postgres < supabase/powersync_setup.sql

# 3. Запустить сервис PowerSync (:8080)
docker compose -f powersync/docker-compose.yaml up -d

Аутентификация - Supabase email/password. Зарегистрируйте новый аккаунт на экране входа или создайте его через Supabase CLI.

Env-файлы

Workspace приложения использует несколько .env файлов (все в gitignore, кроме .env.example):

Файл Назначение
app/.env Значения dev, читаются Nuxt
app/.env.prod Значения prod-деплоя, используются pnpm dev:prod

Разработка

Когда локальный бэкенд запущен, запустите Nuxt-приложение:

pnpm dev

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

Запустите сайт документации:

pnpm docs:dev

Документация доступна на http://localhost:3051.

Запуск dev-серверов приложения и документации одновременно:

pnpm dev:all

Скрипты

Команда Описание
pnpm dev Запуск dev-сервера приложения
pnpm docs:dev Запуск dev-сервера документации
pnpm dev:all Параллельный запуск dev-серверов приложения и документации
pnpm build Сборка всех workspace-пакетов с командой build
pnpm generate Генерация приложения для статического хостинга
pnpm docs:build Сборка сайта документации
pnpm lint Линтинг монорепозитория
pnpm lint:app Линтинг пакета приложения
pnpm lint:docs Линтинг пакета документации
pnpm lint:fix Линтинг с автоисправлением
pnpm test Запуск тестов в workspace-пакетах
pnpm typecheck Проверка типов в workspace-пакетах

Документация

Руководства пользователя, заметки по разработке и техническая справка находятся в docs/content. Запустите сайт документации командой pnpm docs:dev.

Предыдущая версия

Предыдущая версия Finapp на Firebase доступна в ветке firebase.

Контакты