Вопрос или проблема
Я хочу веб-приложение, которое мы с сыном можем использовать для отслеживания его домашних заданий.
Каждое домашнее задание должно быть расширяемым для добавления соответствующих колонок для пар ключ=значение, таких как сумма оплаты за выполнение задания, ожидаемая сложность/время выполнения, срок выполнения задания и т.д.
Данные о заданиях должны позволять организовывать их в иерархической структуре так, чтобы подзадания могли подводить свои соответствующие значения колонок к агрегированным сводкам. Например, сумма оплаты за выполнение супервикторины должна быть динамической суммой всех ее рекурсивных подзаданий.
Требования
- веб-приложение
- открытый исходный код
- основано на PHP
- иерархические списки с агрегированными атрибутами
Предпочтения
- простой
- объектно-ориентированный
- расширяемые атрибуты элементов списка
- перетаскиваемый интерфейс
- смешанное использование баз данных. Я вижу реляционную СУБД, такую как MySQL, для серверной части и документную СУБД, такую как MongoDB, для кэширования на клиентской стороне.
Я программист на PHP и могу написать это с нуля, поэтому я довольно гибок в своих требованиях. Но так как это в общем-то очень простый тривиальный проект, я уверен, что на GitHub уже доступно как минимум 100 таких проектов, если бы я только мог их найти – особенно учитывая список дел на главной странице Angular, который кажется классическим примером приложения в любом фреймворке. Я хотел бы найти лучшую отправную точку, которую смогу, и затем иметь возможность форкнуть проект и настроить его под свои нужды.
Существует расширение управления проектами для WordPress под названием WP-Project Manager
Большую часть времени, которое уйдет на его настройку, будет составлять косметические детали для клиентской части и детали для регулярного управления задачами.
Настроив его в вашей локальной сети с помощью XAMPP на Windows или MAMP на Mac, вы обеспечите безопасность и устраните необходимость в домене и веб-хостинге.
Ответ или решение
Создание веб-приложения для управления заданиями и домашними хлопотами может стать увлекательным и полезным проектом не только для вашего сына, но и для вас как программиста. Давайте рассмотрим, как вы можете разработать open-source веб-приложение на PHP для иерархического списка дел с возможностью расширения атрибутов, возможно, опираясь на существующие решения и библиотеки.
Общие характеристики проекта
Функциональные требования:
- Веб-приложение – доступное через браузер, обеспечивающее удобный интерфейс.
- Open-source – четко документированный код, доступный для модификаций и улучшений.
- PHP-базированное – использование PHP, как основного языка программирования.
- Иерархические списки – возможность создания подзадач и агрегации полей (например, сумма оплаты за выполнение задания).
Предпочтения в дизайне и архитектуре:
- Простота – минималистичный интерфейс для удобного использования.
- Объектно-ориентированное программирование – использование принципов OOP для удобства модификации кода.
- Расширяемые атрибуты – возможность добавления пользовательских полей, таких как сумма оплаты или срок выполнения.
- Драг-н-дроп интерфейс – для удобства редактирования и перемещения задач.
- Смешанное использование баз данных – использование реляционной СУБД (например, MySQL) для хранения основных данных и документной СУБД (например, MongoDB) для кэша на фронтенде.
Поиск существующих решений
Перед тем как приступить к разработке с нуля, рекомендуем обратить внимание на доступные на GitHub проекты. К сожалению, многие из них могут не полностью соответствовать вашим требованиям, однако вы сможете найти полезные компоненты:
- PHP To-Do List – многие репозитории предлагают базовые версии приложения с возможностью добавления задач и их редактирования, что может стать хорошей основой. Например, библиотеки, использующие фреймворк Laravel или CodeIgniter.
- Task Management Systems – рассмотрите проекты, похожие на WP-Project Manager, который предоставляет расширенные функции управления проектами и задачами.
- Примеры приложений на Angular – хотя вы ищете PHP-приложения, многие концепции из Angular-примеров можно адаптировать для вашего проекта.
Настройка локальной среды
Для разработки и тестирования вам потребуется установить локальный сервер. XAMPP (для Windows) или MAMP (для Mac) – отличные варианты для создания безопасной среды без необходимости в веб-хостинге.
Рекомендации по разработке
-
Структура базы данных: создайте таблицы для задач и подзадач с такими полями, как ID, название, описание, оплата, срок, и т.п. Используйте JSON для хранения пользовательских атрибутов в одном из полей.
-
API и взаимодействие: разработайте RESTful API, которое позволит взаимодействовать между клиентскими интерфейсами и серверной частью, обеспечивая гибкость и расширяемость.
-
UI/UX Дизайн: используйте библиотеки JavaScript для реализации драг-н-дроп интерфейса (например, jQuery UI или sortable.js).
-
Тестирование и деплой: выполните тестирование всех функциональных возможностей, а также убедитесь, что приложение работает на различных устройствах и браузерах.
Заключение
Предложенное решение представляет собой гибкую и мощную платформу для управления домашними заданиями и может быть адаптировано в соответствии с вашими требованиями. Начните с существующих проектов на GitHub, адаптируйте архитектуру базы данных, разработайте пользовательский интерфейс и погружайтесь в увлекательный процесс полного кастомизирования вашего приложения. Удачи в разработке!