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