Skip to content

Repository files navigation

Salary Tracker

Salary Tracker — это простое веб-приложение для отслеживания вашей зарплаты, отработанных часов и анализа доходов. Данные хранятся в базе данных Supabase, что обеспечивает их сохранность и доступность с любого устройства.

Особенности

  • Отслеживание доходов: Добавляйте записи о зарплате и отработанных часах за каждый месяц.
  • Управление работами: Создавайте несколько профилей работ с разными базовыми ставками.
  • Расширенная аналитика: Просматривайте общую статистику по доходам, часам и средней ставке. Настройки аналитики теперь по умолчанию включают все работы при загрузке страницы.
  • Визуализация: Интерактивный график для визуализации доходов или почасовой ставки с течением времени.
  • Безопасность: Данные хранятся в вашей личной базе данных Supabase и защищены аутентификацией.
  • Миграция данных: Возможность переноса данных из локального хранилища при первом запуске.
  • Темы: Светлая и темная темы оформления.

Настройка и запуск

Для запуска проекта выполните следующие шаги:

1. Настройте Supabase

  • Создайте новый проект на Supabase.
  • Перейдите в настройки проекта -> API. Скопируйте Project URL и anon (public) key.
  • Перейдите в SQL Editor и выполните следующий скрипт для создания таблиц и настройки политик безопасности:
-- Создание таблицы jobs
CREATE TABLE jobs (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id UUID REFERENCES auth.users(id) NOT NULL,
    name TEXT NOT NULL,
    base_rate FLOAT8 NOT NULL,
    base_hours FLOAT8 NOT NULL,
    created_at TIMESTAMPTZ DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- Создание таблицы entries
CREATE TABLE entries (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    job_id UUID REFERENCES jobs(id) ON DELETE CASCADE,
    user_id UUID REFERENCES auth.users(id) NOT NULL,
    month TEXT NOT NULL,
    salary FLOAT8 NOT NULL,
    hours FLOAT8 NOT NULL,
    created_at TIMESTAMPTZ DEFAULT timezone('utc'::text, now()) NOT NULL
);

-- Включение Row Level Security
ALTER TABLE jobs ENABLE ROW LEVEL SECURITY;
ALTER TABLE entries ENABLE ROW LEVEL SECURITY;

-- Политики для таблицы jobs
CREATE POLICY "Разрешить пользователям управлять своими работами"
ON jobs
FOR ALL
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);

-- Политики для таблицы entries
CREATE POLICY "Разрешить пользователям управлять своими записями"
ON entries
FOR ALL
USING (auth.uid() = user_id)
WITH CHECK (auth.uid() = user_id);

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

  • Обновите файл config.js в корневой директории проекта, заменив значения на ваши:
    const SUPABASE_URL = 'ВАШ_SUPABASE_URL';
    const SUPABASE_ANON_KEY = 'ВАШ_SUPABASE_ANON_KEY';

3. Запустите приложение

  • Просто откройте файл index.html в вашем любимом браузере.

Как использовать

  1. Регистрация/Вход: При первом посещении создайте аккаунт или войдите, если он у вас уже есть.
  2. Добавление работ: Перейдите в "Job Settings" и добавьте свои места работы, указав базовую ставку и часы.
  3. Добавление записей: В форме "Add Salary Data" вносите данные о зарплате за каждый месяц.
  4. Анализ: Просматривайте статистику и графики для анализа своих доходов. Настройки аналитики теперь по умолчанию включают все работы при загрузке страницы.

Улучшения

Внесены следующие исправления и улучшения:

  • Исправлена ошибка this.getAnalyticsSummary is not a function: Добавлена отсутствующая функция getAnalyticsSummary.
  • Исправлено отображение данных: Обеспечено корректное преобразование job_id в jobId при загрузке, добавлении и редактировании записей, что решает проблему с пустыми разделами аналитики и истории зарплат.
  • Исправлено отображение NaN: Добавлены проверки на деление на ноль и некорректные числовые значения в расчетах "Salary Diff" и "Rate Diff".
  • Автоматический выбор всех работ в Analytics Settings: При загрузке страницы в настройках аналитики теперь автоматически выбираются все доступные работы.

Releases

Packages

Contributors

Languages