Skip to content

Онлайн-сервис для поиска исполнителей и заказчиков по типу YouDo. Проект разработан на фреймворке Yii2. Методология ООП, паттерн MVC. Используются внешние API.

License

Notifications You must be signed in to change notification settings

kiipod/task-force

 
 

Repository files navigation

Taskforce

PHP Version MySQL Version Yii2 Version

О проекте

«TaskForce» — это онлайн площадка для поиска исполнителей на разовые задачи. Сайт функционирует как биржа объявлений, где заказчики — физические лица публикуют задания. Исполнители могут откликаться на эти задания, предлагая свои услуги и стоимость работ. Проект разработан на базе фреймворка Yii2, использует методологию ООП и паттерн MVC. Также используется внешний API Яндекс.Карт и Вконтакте.

Функциональность

Основные возможности, реализованные в проекте:

  • Регистрация на сайте;
  • Авторизация;
  • Регистрация и авторизация через социальную сеть VK;
  • Профиль пользователя, отображаемый на отдельной странице:
    • аватар,
    • город,
    • возраст,
    • информация о пользователе,
    • блок с контактами,
    • специализации (для исполнителей),
    • отзывы заказчиков (для исполнителей),
    • статистика выполненных заказов (для исполнителей),
    • дата регистрации (для исполнителей),
    • место в общем рейтинге (для исполнителей),
    • статус (для исполнителей);
  • Редактирование профиля пользователя:
    • аватар,
    • электронная почта,
    • день рождения,
    • номер телефона,
    • telegram,
    • информация о себе,
    • пароль (с подтверждением старого);
  • Вывод списка заданий с пагинацией (каждый пользователь видит только задания из своего города, а также задания в формате удаленной работы);
  • Фильтрация заданий по категориям, времени размещения, наличию откликов и формату работы (удаленная работа или обычная);
  • Вывод карточки задания;
  • Статусы заданий (в зависимости от того, есть ли на задание отклики, находится ли задание в работе, выполнено оно или провалено);
  • Отображение локации задания на Яндекс.Карте через внешний API;
  • Возможность оставить отклик на задание (для исполнителей);
  • Просмотр откликов на задания (для заказчиков);
  • Раздел “Мои задания” для заказчиков:
    • список заданий, находящихся в процессе,
    • список просроченных заданий,
    • список завершенных заданий;
  • Раздел “Мои задания” для исполнителей:
    • список новых заданий, по которым ещё не выбран исполнитель,
    • список заданий, над которыми работают исполнители,
    • список завершенных заданий;
  • Страница с формой добавления нового задания (для заказчиков), включающая в себя следующие поля:
    • заголовок,
    • описание задания,
    • категория задания,
    • локация,
    • бюджет,
    • срок исполнения,
    • файлы задания;
  • Размещение откликов на задания (для исполнителей);
  • Выбор исполнителя на задание (для заказчиков);
  • Размещение отзывов на исполнителей (для заказчиков);
  • Система рейтинга исполнителей;
  • Валидация всех форм;
  • Возврат страницы с ошибкой 404, если пользователь пытается открыть страницу с несуществующим пользователем или заданием.

Обзор проекта

Видео

Начало работы

Чтобы развернуть проект локально или на хостинге, выполните последовательно несколько действий:

  1. Клонируйте репозиторий:
git clone git@github.com:kiipod/1622797-task-force-4.git taskforce
  1. Перейдите в директорию проекта:
cd taskforce
  1. Установите зависимости, выполнив команду:
composer install
  1. Настройте веб-сервер таким образом, чтобы корневая директория указывала на папку web внутри проекта. Например, в случае с размещением проекта в директории public_html это можно сделать с помощью команды:
ln -s web public_html
  1. Создайте базу данных для проекта, используя схему из файла schema.sql:
CREATE DATABASE taskforce 
       CHARACTER SET utf8 
       COLLATE utf8_general_ci;
       
USE taskforce;

/* Таблица городов */
CREATE TABLE cities (
    id int AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    latitude DECIMAL(11, 8) NOT NULL,
    longitude DECIMAL(11, 8) NOT NULL
);

/* Таблица категорий заданий */
CREATE TABLE categories (
    id int AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(128) NOT NULL,
    icon VARCHAR (20)
);

/* Таблица пользователей */
CREATE TABLE users (
    id int AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(64) NOT NULL,
    city_id int NOT NULL,
    date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    rating TINYINT DEFAULT 0,
    grade FLOAT DEFAULT 0,
    avatar VARCHAR(255) NULL,
    birthday DATETIME,
    phone VARCHAR(32),
    telegram VARCHAR(64),
    bio TEXT,
    status TINYTEXT,
    is_executor BOOLEAN NOT NULL,
    show_contacts BOOLEAN NOT NULL,
    vk_id int
    FOREIGN KEY  (city_id) REFERENCES cities (id)
);

/* Таблца связывающая исполнителя и категории */
CREATE TABLE executorCategory (
    category_id int NOT NULL,
    user_id int NOT NULL,
    FOREIGN KEY (user_id) REFERENCES users (id),
    FOREIGN KEY (category_id) REFERENCES categories (id)
);

/* Таблица задач */
CREATE TABLE tasks (
    id int AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    description TEXT NOT NULL,
    city_id int,
    date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    category_id int NOT NULL,
    customer_id int NOT NULL,
    executor_id int,
    status TINYTEXT DEFAULT new,
    budget int,
    period_execution DATE,
    FOREIGN KEY (customer_id) REFERENCES users (id),
    FOREIGN KEY (executor_id) REFERENCES users (id),
    FOREIGN KEY (category_id) REFERENCES categories (id),
    FOREIGN KEY (city_id) REFERENCES cities (id)
);

/* Таблица файлов */
CREATE TABLE files (
    id int AUTO_INCREMENT PRIMARY KEY,
    url VARCHAR(255) NOT NULL UNIQUE
);

/* Таблица файлов задач */
CREATE TABLE tasksFiles (
    id int AUTO_INCREMENT PRIMARY KEY,
    task_id int NOT NULL,
    file_id int NOT NULL,
    FOREIGN KEY (task_id) REFERENCES tasks (id),
    FOREIGN KEY (file_id) REFERENCES files (id)
);

/* Таблица отзывов о исполнителях */
CREATE TABLE feedback (
    id int AUTO_INCREMENT PRIMARY KEY,
    customer_id int NOT NULL,
    executor_id int NOT NULL,
    task_id int NOT NULL,
    date_creation DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    description TEXT NOT NULL,
    grade TINYINT NOT NULL,
    FOREIGN KEY (customer_id) REFERENCES users (id),
    FOREIGN KEY (executor_id) REFERENCES users (id),
    FOREIGN KEY (task_id) REFERENCES tasks (id)
);

/* Таблица с откликами исполнителей */
CREATE TABLE offers (
    id int AUTO_INCREMENT PRIMARY KEY,
    date_creation DATETIME DEFAULT CURRENT_TIMESTAMP,
    task_id int NOT NULL,
    executor_id int NOT NULL,
    price int,
    comment TEXT,
    refuse BOOLEAN NOT NULL,
    FOREIGN KEY (executor_id) REFERENCES users (id),
    FOREIGN KEY (task_id) REFERENCES tasks (id)
);
  1. Заполните базу данных тестовыми данными, запустив команду:
php yii fixture/load <ModelName>
  1. Настройте подключение к базе данных в файле config\db.php, указав в нем параметры своего окружения. Например, это может выглядеть так:
<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=127.0.0.1;dbname=taskforce',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
];

Техническое задание

Посмотреть техническое задание проекта

About

Онлайн-сервис для поиска исполнителей и заказчиков по типу YouDo. Проект разработан на фреймворке Yii2. Методология ООП, паттерн MVC. Используются внешние API.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 74.1%
  • HTML 23.0%
  • Shell 0.9%
  • JavaScript 0.9%
  • CSS 0.4%
  • Awk 0.4%
  • Batchfile 0.3%