«Doings done» — это веб-сервис для ведения списка дел, работающий на чистом PHP и MySQL, без использования фреймворков. Проект начального уровня сложности, реализован с помощью простой методологии процедурного программирования.
Демонстрационная версия доступна по адресу https://doingsdone.sokoloff-rv.ru/.
Для входа в демо-аккаунт используйте следующие данные:
- Логин: [email protected]
- Пароль: demopass
Основные возможности, реализованные в проекте:
- Регистрация на сайте;
- Авторизация;
- Добавление новых проектов (категорий);
- Создание задач (каждая задача привязывается к проекту, может иметь дату окончания и вложение в виде файла);
- Подсчет количества задач в проектах (не считая завершенные задачи);
- Фильтрация и отображение задач по группам:
- все задачи,
- повестка дня,
- задачи на завтра,
- просроченные задачи;
- Отображение задачи как важной, если до её дедлайна осталось менее 24 часов;
- Поиск по задачам;
- Скрытие или отображение выполненных задач;
- Валидация всех форм;
- Возврат страницы с ошибкой 404, если пользователь пытается открыть страницу с несуществующим проектом;
- Отправка уведомлений о запланированных задачах на email пользователя.
Чтобы развернуть проект локально или на хостинге, выполните последовательно несколько действий:
- Клонируйте репозиторий:
git clone https://github.com/sokoloff-rv/doingsdone.git doingsdone
- Перейдите в директорию проекта:
cd doingsdone
- Установите зависимости, выполнив команду:
composer install
- Создайте базу данных для проекта, используя схему из файла
schema.sql
:
CREATE DATABASE doingsdone
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
USE doingsdone;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
register_date DATETIME DEFAULT CURRENT_TIMESTAMP,
email VARCHAR(100) NOT NULL UNIQUE,
name VARCHAR(150) NOT NULL,
password VARCHAR(100) NOT NULL
);
CREATE TABLE projects (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
user_id INT NOT NULL
);
CREATE TABLE tasks (
id INT AUTO_INCREMENT PRIMARY KEY,
creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,
status BOOL NOT NULL DEFAULT '0',
title VARCHAR(255) NOT NULL,
filepath VARCHAR(255),
deadline DATETIME,
project_id INT NOT NULL,
user_id INT NOT NULL
);
CREATE FULLTEXT INDEX task_title_search ON tasks(title);
- Настройте подключение к базе данных, создав в корне проекта файл
database.php
и указав параметры своего окружения. Например, это может выглядеть так:
<?php
return [
'host' => '127.0.0.1',
'user' => 'root',
'password' => 'root',
'name' => 'doingsdone'
];