Salary Tracker — это простое веб-приложение для отслеживания вашей зарплаты, отработанных часов и анализа доходов. Данные хранятся в базе данных Supabase, что обеспечивает их сохранность и доступность с любого устройства.
- Отслеживание доходов: Добавляйте записи о зарплате и отработанных часах за каждый месяц.
- Управление работами: Создавайте несколько профилей работ с разными базовыми ставками.
- Расширенная аналитика: Просматривайте общую статистику по доходам, часам и средней ставке. Настройки аналитики теперь по умолчанию включают все работы при загрузке страницы.
- Визуализация: Интерактивный график для визуализации доходов или почасовой ставки с течением времени.
- Безопасность: Данные хранятся в вашей личной базе данных 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);
- Обновите файл
config.jsв корневой директории проекта, заменив значения на ваши:const SUPABASE_URL = 'ВАШ_SUPABASE_URL'; const SUPABASE_ANON_KEY = 'ВАШ_SUPABASE_ANON_KEY';
- Просто откройте файл
index.htmlв вашем любимом браузере.
- Регистрация/Вход: При первом посещении создайте аккаунт или войдите, если он у вас уже есть.
- Добавление работ: Перейдите в "Job Settings" и добавьте свои места работы, указав базовую ставку и часы.
- Добавление записей: В форме "Add Salary Data" вносите данные о зарплате за каждый месяц.
- Анализ: Просматривайте статистику и графики для анализа своих доходов. Настройки аналитики теперь по умолчанию включают все работы при загрузке страницы.
Внесены следующие исправления и улучшения:
- Исправлена ошибка
this.getAnalyticsSummary is not a function: Добавлена отсутствующая функцияgetAnalyticsSummary. - Исправлено отображение данных: Обеспечено корректное преобразование
job_idвjobIdпри загрузке, добавлении и редактировании записей, что решает проблему с пустыми разделами аналитики и истории зарплат. - Исправлено отображение
NaN: Добавлены проверки на деление на ноль и некорректные числовые значения в расчетах "Salary Diff" и "Rate Diff". - Автоматический выбор всех работ в Analytics Settings: При загрузке страницы в настройках аналитики теперь автоматически выбираются все доступные работы.