Giter Site home page Giter Site logo

sokoloff-rv / task-force Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 2.57 MB

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

Home Page: https://taskforce.sokoloff-rv.ru/

License: BSD 3-Clause "New" or "Revised" License

JavaScript 0.87% HTML 18.78% PHP 69.41% Batchfile 0.31% Shell 0.97% Awk 0.37% CSS 9.28%
mvc oop php yii2 composer api

task-force's Introduction

Taskforce

PHP Version MySQL Version Yii2 Version PHPUnit Version

О проекте

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

Демонстрационная версия доступна по адресу https://taskforce.sokoloff-rv.ru/.

Для входа в демо-аккаунт заказчика используйте следующие данные:

Для входа в демо-аккаунт исполнителя используйте следующие данные:

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

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

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

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

Видео

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

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

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

USE taskforce;

/* Города */
CREATE TABLE cities (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    latitude DECIMAL(11, 8) NOT NULL,
    longitude DECIMAL(11, 8) NOT NULL
);

/* Пользователи */
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(150) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(100) NOT NULL,
    birthday DATETIME,
    phone VARCHAR(100),
    telegram VARCHAR(100),
    information TEXT,
    specializations VARCHAR(255),
    avatar VARCHAR(255),
    register_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    role ENUM ('customer', 'executor') NOT NULL,
    succesful_tasks INT,
    failed_tasks INT,
    city_id INT,
    vk_id INT,
    hidden_contacts INT DEFAULT 0 NOT NULL,
    total_score FLOAT DEFAULT 0 NOT NULL,
    FOREIGN KEY (city_id) REFERENCES cities(id)
);

/* Категории заданий */
CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    alias VARCHAR(100) NOT NULL
);

/* Задания */
CREATE TABLE tasks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    category_id INT NOT NULL,
    city_id INT,
    budget VARCHAR(100),
    deadline DATETIME,
    location VARCHAR(255),
    latitude DECIMAL(11, 8),
    longitude DECIMAL(11, 8),
    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    status VARCHAR(50) DEFAULT 'new' NOT NULL,
    executor_id INT,
    FOREIGN KEY (category_id) REFERENCES categories(id),
    FOREIGN KEY (customer_id) REFERENCES users(id),
    FOREIGN KEY (executor_id) REFERENCES users(id),
    FOREIGN KEY (city_id) REFERENCES cities(id)
);

/* Файлы */
CREATE TABLE files (
    id INT AUTO_INCREMENT PRIMARY KEY,
    link VARCHAR(255) NOT NULL UNIQUE,
    task_id INT NOT NULL,
    FOREIGN KEY (task_id) REFERENCES tasks(id)
);

/* Отклики */
CREATE TABLE responses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    executor_id INT NOT NULL,
    task_id INT NOT NULL,
    comment TEXT,
    price INT,
    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    status VARCHAR(50) DEFAULT 'new' NOT NULL,
    FOREIGN KEY (executor_id) REFERENCES users(id),
    FOREIGN KEY (task_id) REFERENCES tasks(id)
);

/* Отзывы */
CREATE TABLE reviews (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT NOT NULL,
    executor_id INT NOT NULL,
    task_id INT NOT NULL,
    comment TEXT,
    grade INT,
    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES users(id),
    FOREIGN KEY (executor_id) REFERENCES users(id),
    FOREIGN KEY (task_id) REFERENCES tasks(id)
);

CREATE FULLTEXT INDEX task_title_search ON tasks(title);
CREATE FULLTEXT INDEX task_description_search ON tasks(description);
  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',
];

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

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

task-force's People

Contributors

sokoloff-rv avatar keksobot avatar sergeivl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.