Link to lab docs: ...
- Название проекта: Приложение по саморазвитию для достижения целей.
- Автор: Тиханёнок Илья Александрович
- Номер группы: 153504
- Аутентификация / Авторизация/ Регистрация пользователя
- Возможность у авторизированного/зарегистрированного пользователя:
- возможность создавать / удалять / редактировать задачи:
- добавление описания к задачи
- добавления приоритетности задачи (добавление категории)
- добавление времени выполнения на данную задачу
- дата добавления будет задаваться автоматически / дата выполнения будет создаваться автоматически, после выполнения задачи пользователем
- отслеживания прогресса по конкретной задаче
- отслеживания прогресса по выполненным задачам (после выполнения задачи будет увеличен average_score в users
- добавления обзора (это страница, которая будет предлагаться пользователю, по окончании дня для отслеживания его впечатлений / настроения - будет представлять обычное текстовое поле, чтобы пользователя ни в чём не ограничивать, где пользователь сможет делиться впечатлениями за день
- добавление постов - пост, который уже смогут видеть другие пользователи, а также смогут его комментировать и оценивать
- возможная покупка неких вещей, за собственную валюту(счетчик выполненных задач)
- возможность просматривать историю покупок для самоанализа куда были потрачены деньги и на что
- возможность создавать / удалять / редактировать задачи:
- Система ролей (авторизованный / неавторизованный пользователь; администратор(тот, кто будет отслеживать прогресс пользователя(будет выступать в качестве наблюдателя, он не сможет создавать пользователя)))
- Отслеживания прогресса пользователей (возможность администратора)
- Пользователь (Users)
- Пользователь представляет собой основную сущность, хранящую информацию о зарегистрированных пользователях.
- Роль (Roles)
- Роль определяет уровень доступа и права пользователя в системе:
- авторизованный / зарегестрированный
- администратор - пользователь, который является наблюдателем, может отслеживать прогресс зарегестрированных пользователей (выполненные задачи)
- Роль определяет уровень доступа и права пользователя в системе:
- Обзор (Review)
- Это это страница, которая будет предлагаться пользователю, по окончании дня для отслеживания его впечатлений / настроения - будет представлять обычное текстовое поле, чтобы пользователя ни в чём не ограничивать, где пользователь сможет делиться впечатлениями за день(добавить картинку по настроению и описание к ней и потом спустя некоторое время - будет возможность вернуться просмотреть каждый день))(это как личная страница, которая видна только автору данного "обзора"
- Задача (Tasks)
- Эта сущность представляет задачи, которые пользователи могут создавать и управлять(создавать описание задачи, давать приорететность(добавлять категорию)).
- Категория задачи (Label)
- Эта сущность позволяет группировать задачи по категориям (по приоритетам), добавлять стили(цвета и тп) для задачи, чтобы их различать и было удобно сортировать самому пользователю.
- Прогресс задачи (прогресс задачи) (UserProgress)
- Эта сущность отслеживает прогресс выполнения конкретной задачи пользователя.
- Пост (Posts)
- Эта сущность представляет собой страницу, которую сможет заполнять зарегестрированный пользователь, как пост в соцсети, который смогут видеть другие пользователи, а также его комментировать.
- Комментарии (Comments)
- Эта сущность позволит авторизованным пользователям оставлять комментарии к постам других пользователей.
- Достижения (Achievements)
- Эта сущность позволяет пользователям зарабатывать награды и достижения за выполнение определенных задач, достижение определенных целей или активное использование приложения. Это может быть стимулом для участия и мотивации пользователей.
- Товар (Products)
- Эта сущность представляет собой конкретный товар, который доступен для покупки в магазине(стиль для задачи, кастомная картинка и тп).
- История покупок (Purchase History):
- Каждый пользователь может иметь доступ к своей собственной истории покупок, чтобы просматривать информацию о своих предыдущих покупках и возможность анализировать историю покупок. Это может быть полезно для учета активности.
- Пользователь (Users)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Имя (Username): varchar(50), unique, NOT NULL.
- Электронная почта (Email): varchar(255), unique.
- Пароль (Password): varchar(255), хешированный пароль, NOT NULL.
- Связь:
- У пользователя может быть одна роль (One-to-One).
- У пользователя может быть много задач (One-to-Many).
- У пользователя может быть один или несколько отзывов (One-to-Many).
- У пользователя может быть одно или несколько достижений (One-to-Many).
- У всех пользователя может быть только один магазин.(Many-to-One)
- Поля:
- Роль (Roles)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Название (Role_Name): varchar(50), unique, NOT NULL.
- Связь:
- У пользователя может быть одна роль (One-to-One).
- Поля:
- Обзор (Review)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Описание (description): text, NOT NULL.
- Дата создания(create_time): datetime - timestamp NOT NULL.
- Связь:
- У одного пользователя может быть много постов (One-to-Many).
- Поля:
- Задача (Tasks)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Заголовок - название задачи (Title): varchar(255), NOT NULL.
- Описание (Description): text.
- Время выполнения (Due Date): дата и время - будет создаваться сразу после добавления задачи(datetime - timestamp), NOT NULL.
- Выполнение (Check):boolean, NOT NULL.
- Связь:
- У одной задачи может быть несколько категорий и у одной категории может быть неск задач(label) (Many-to-Many).
- Каждая задача имеет связь с прогрессом выполнения (One-to-One).
- Каждая задача принадлежит определенному пользователю (One-to-One).
- Поля:
- Категория задачи (Label)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Категория (Category): varchar(255), NOT NULL.
- Приоритет (Priority): varchar(255), NOT NULL.
- Стиль (Style): varchar(100).
- Связь:
- Категории задач связаны с задачами - одна задача может иметь неск категорий и одна категория может иметь неск задач (Many-to-Many).
- Поля:
- Прогресс задачи (UserProgress)/..
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Прогресс задачи (Progress): integer, NOT NULL.
- Время начала (Start Time): дата и время - тоже будет добавляться автоматически (datetime - timestamp), NOT NULL.
- Время завершения (End Time): дата и время - тоже будет добавляться автоматически (datetime - timestamp), NOT NULL.
- Связь:
- Каждая запись о прогрессе выполнения связана с определенной задачей (One-to-One).
- Поля:
- Пост (Posts)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Автор поста (Authot): varchar(255), NOT NULL.
- Название поста (Title): varchar(255), NOT NULL.
- Текст статьи (Content): text.
- Дата создания (Creation Date): дата и время (datetime - timestamp), NOT NULL.
- Связь:
- У пользователя может быть несколько постов (Many-to-One).
- Поля:
- Комментарии (Comments)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Автор поста (Authot): varchar(255), NOT NULL.
- Название поста (Title): varchar(255), NOT NULL.
- Текст статьи (Content): text.
- Дата создания (Creation Date): дата и время (datetime - timestamp), NOT NULL.
- Связь:
- К одному посту может быть много комментариев (Many-to-One).
- Поля:
- Достижения (Achievements)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Название (Name): varchar(255), NOT NULL.
- Описание (Description): text.
- Связь:
- Достижения могут быть заработаны пользователями - у одного пользователя может быть неск достижений (например, выполнено 10 задач за день, выполнено за такое-то время и т.д.) (Many-to-One).
- Поля:
- Товар (Products)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Название (Name): varchar(255), NOT NULL.
- Описание (Description): text.
- Цена (Price): float - decimal, NOT NULL.
- Изображение (Image): string - путь к изображению товара.
- Доступность (Availability): boolean, NOT NULL.
- Связь:
- Товары связаны с пользователем - у одного пользователя может быть много товаров и у разных пользователей может быть одинаковый товар (Many-to-Many).
- Поля:
- История покупок (PurchaseHistory)
- Поля:
- Идентификатор (ID): integer, primary key, auto-increment.
- Список купленных продуктов (Product List): text.
- Потраченная сумма (Total amount): decimal.
- Связь:
- Достижения могут быть заработаны пользователями - у одного пользователя может быть неск достижений (например, выполнено 10 задач за день, выполнено за такое-то время и т.д.) (Many-to-One).
- Поля:
