Журнал расхода времени
Реализуйте сервис, позволяющий отслеживать, куда расходуется ваше время.
Продумайте структуру базы данных для хранения пользователей, категорий и отметок времени. Реализуйте регистрацию и авторизацию пользователей. Настройте серверную часть для работы с API. Все операции должны выполняться через AJAX-запросы без перезагрузки страницы.
Основные возможности проекта
- Регистрация и авторизация пользователей.
- Кнопки для отметки деятельности (по умолчанию: "работаю" и "отдыхаю").
- Добавление своих категорий дел (создание новых кнопок).
- Удаление категорий.
- Статистика времени по дням, неделям, месяцам, годам, заданному периоду, за все время.
- Каждый пользователь видит только свои данные.
Регистрация и авторизация
На сайте должна быть реализована регистрация и авторизация пользователей:
- Регистрация - форма с полями: логин, email, пароль.
- Авторизация - форма с полями: логин, пароль.
- Каждый пользователь видит только свои данные.
- Все операции выполняются без перезагрузки страницы.
Главная страница
На странице должны быть размещены:
- Кнопки для выбора текущей деятельности.
- Блок с текущим состоянием (что сейчас делается и сколько времени).
- Раздел управления категориями.
- Блок с краткой статистикой за сегодня.
Кнопки деятельности
По умолчанию на странице есть две кнопки:
- "Работаю" - пользователь начинает работать.
- "Отдыхаю" - пользователь начинает отдыхать.
При нажатии на кнопку начинается отсчет времени в этой категории. При переключении на другую категорию отсчет предыдущей заканчивается и фиксируется на сервере без перезагрузки страницы.
Управление категориями
Пользователь может добавлять свои категории дел:
- Добавление - форма с полем для названия категории и кнопкой "Добавить категорию".
- Удаление - удаление категории (кнопка "Удалить" рядом с категорией).
При добавлении новой категории на странице появляется соответствующая кнопка. Данные отправляются на сервер.
Текущее состояние
На странице отображается текущее состояние пользователя:
- Какая категория выбрана в данный момент.
- Сколько времени в ней уже проведено (таймер).
Статистика
Сайт должен предоставлять статистику времени за разные периоды:
- За сегодня.
- За неделю (последние 7 дней).
- За месяц (текущий месяц).
- За год (текущий год).
- За заданный промежуток времени (выбор даты начала и конца).
- За все время (с первой записи).
Статистика должна отображать:
- Время, проведенное в каждой категории (в часах и минутах).
- Общее время за период.
Взаимодействие с сервером
Все операции выполняются через AJAX-запросы:
- При загрузке страницы данные (категории, статистика) загружаются с сервера.
- При переключении деятельности, добавлении или удалении категории данные отправляются на сервер, после успешного ответа обновляется интерфейс.
- При запросе статистики данные загружаются с сервера без перезагрузки страницы.
Дополнительные возможности
- Экспорт данных в CSV.
- Визуализация статистики в виде диаграммы.