{"id":15169532,"url":"https://github.com/sokoloff-rv/task-force","last_synced_at":"2026-01-23T00:56:45.230Z","repository":{"id":145402630,"uuid":"563958010","full_name":"sokoloff-rv/task-force","owner":"sokoloff-rv","description":"Учебный проект. Онлайн-сервис для поиска исполнителей и заказчиков по типу YouDo. Проект разработан на фреймворке Yii2. Методология ООП, паттерн MVC. Используются внешние API.","archived":false,"fork":false,"pushed_at":"2024-04-16T13:42:47.000Z","size":2630,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-16T09:41:45.635Z","etag":null,"topics":["api","composer","mvc","oop","php","yii2"],"latest_commit_sha":null,"homepage":"https://taskforce.sokoloff-rv.ru/","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"htmlacademy-yii/94214-task-force-2","license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sokoloff-rv.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-09T17:33:33.000Z","updated_at":"2025-01-15T20:32:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"2e13cb55-b972-4c5b-928f-deeb6a010cef","html_url":"https://github.com/sokoloff-rv/task-force","commit_stats":{"total_commits":190,"total_committers":2,"mean_commits":95.0,"dds":"0.015789473684210575","last_synced_commit":"ca8c15dab40dcb9ad0358463f4a5dc37f298d8e2"},"previous_names":["sokoloff-rv/task-force"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sokoloff-rv%2Ftask-force","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sokoloff-rv%2Ftask-force/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sokoloff-rv%2Ftask-force/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sokoloff-rv%2Ftask-force/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sokoloff-rv","download_url":"https://codeload.github.com/sokoloff-rv/task-force/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824651,"owners_count":21167343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","composer","mvc","oop","php","yii2"],"created_at":"2024-09-27T07:03:23.244Z","updated_at":"2026-01-23T00:56:45.217Z","avatar_url":"https://github.com/sokoloff-rv.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taskforce\n![PHP Version](https://img.shields.io/badge/php-%5E7.4-7A86B8)\n![MySQL Version](https://img.shields.io/badge/mysql-%5E5.6-F29221)\n![Yii2 Version](https://img.shields.io/badge/Yii2-%5E2.0.45-83C933)\n![PHPUnit Version](https://img.shields.io/badge/phpunit-%5E9.5-3A97D0)\n\n## О проекте\n\n«TaskForce» — это онлайн площадка для поиска исполнителей на разовые задачи. Сайт функционирует как биржа объявлений, где заказчики — физические лица публикуют задания. Исполнители могут откликаться на эти задания, предлагая свои услуги и стоимость работ. Проект разработан на базе фреймворка Yii2, использует методологию ООП и паттерн MVC. Также используется внешний API Яндекс.Карт и Вконтакте.\n\nДемонстрационная версия доступна по адресу https://taskforce.sokoloff-rv.ru/.\n\nДля входа в **демо-аккаунт заказчика** используйте следующие данные:\n\n- Логин: customer@fake.mail\n- Пароль: democustomer\n\nДля входа в **демо-аккаунт исполнителя** используйте следующие данные:\n\n- Логин: executor@fake.mail\n- Пароль: demoexecutor\n\n## Функциональность\n\nОсновные возможности, реализованные в проекте:\n\n- Регистрация на сайте;\n- Авторизация;\n- Регистрация и авторизация через социальную сеть VK;\n- Профиль пользователя, отображаемый на отдельной странице:\n    - аватар,\n    - город,\n    - возраст,\n    - информация о пользователе,\n    - блок с контактами,\n    - специализации (для исполнителей),\n    - отзывы заказчиков (для исполнителей),\n    - статистика выполненных заказов (для исполнителей),\n    - дата регистрации (для исполнителей),\n    - место в общем рейтинге (для исполнителей),\n    - статус (для исполнителей);\n- Редактирование профиля пользователя:\n    - аватар,\n    - электронная почта,\n    - день рождения,\n    - номер телефона,\n    - telegram,\n    - информация о себе,\n    - пароль (с подтверждением старого);\n- Вывод списка заданий с пагинацией (каждый пользователь видит только задания из своего города, а также задания в формате удаленной работы);\n- Фильтрация заданий по категориям, времени размещения, наличию откликов и формату работы (удаленная работа или обычная);\n- Вывод карточки задания;\n- Статусы заданий (в зависимости от того, есть ли на задание отклики, находится ли задание в работе, выполнено оно или провалено);\n- Отображение локации задания на Яндекс.Карте через внешний API;\n- Возможность оставить отклик на задание (для исполнителей);\n- Просмотр откликов на задания (для заказчиков);\n- Раздел “Мои задания” для заказчиков:\n    - список заданий, находящихся в процессе,\n    - список просроченных заданий,\n    - список завершенных заданий;\n- Раздел “Мои задания” для исполнителей:\n    - список новых заданий, по которым ещё не выбран исполнитель,\n    - список заданий, над которыми работают исполнители,\n    - список завершенных заданий;\n- Страница с формой добавления нового задания (для заказчиков), включающая в себя следующие поля:\n    - заголовок,\n    - описание задания,\n    - категория задания,\n    - локация,\n    - бюджет,\n    - срок исполнения,\n    - файлы задания;\n- Размещение откликов на задания (для исполнителей);\n- Выбор исполнителя на задание (для заказчиков);\n- Размещение отзывов на исполнителей (для заказчиков);\n- Система рейтинга исполнителей;\n- Валидация всех форм;\n- Возврат страницы с ошибкой 404, если пользователь пытается открыть страницу с несуществующим пользователем или заданием.\n\n## Обзор проекта\n\n[![Видео](https://sokoloff-rv.ru/share/github/taskforce.webp?ver_1)](https://youtu.be/mDWVi3cPgNI)\n\n## Начало работы\n\nЧтобы развернуть проект локально или на хостинге, выполните последовательно несколько действий:\n\n1. Клонируйте репозиторий:\n\n```bash\ngit clone https://github.com/sokoloff-rv/task-force.git taskforce\n```\n\n2. Перейдите в директорию проекта:\n\n```bash\ncd taskforce\n```\n\n3. Установите зависимости, выполнив команду:\n\n```bash\ncomposer install\n```\n\n4. Настройте веб-сервер таким образом, чтобы корневая директория указывала на папку web внутри проекта. Например, в случае с размещением проекта в директории `public_html` это можно сделать с помощью команды:\n\n```bash\nln -s web public_html\n```\n\n5. Создайте базу данных для проекта, используя схему из файла `schema.sql`:\n\n```sql\nCREATE DATABASE taskforce\n    DEFAULT CHARACTER SET utf8\n    DEFAULT COLLATE utf8_general_ci;\n\nUSE taskforce;\n\n/* Города */\nCREATE TABLE cities (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(100) NOT NULL,\n    latitude DECIMAL(11, 8) NOT NULL,\n    longitude DECIMAL(11, 8) NOT NULL\n);\n\n/* Пользователи */\nCREATE TABLE users (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(150) NOT NULL,\n    email VARCHAR(100) NOT NULL UNIQUE,\n    password VARCHAR(100) NOT NULL,\n    birthday DATETIME,\n    phone VARCHAR(100),\n    telegram VARCHAR(100),\n    information TEXT,\n    specializations VARCHAR(255),\n    avatar VARCHAR(255),\n    register_date DATETIME DEFAULT CURRENT_TIMESTAMP,\n    role ENUM ('customer', 'executor') NOT NULL,\n    succesful_tasks INT,\n    failed_tasks INT,\n    city_id INT,\n    vk_id INT,\n    hidden_contacts INT DEFAULT 0 NOT NULL,\n    total_score FLOAT DEFAULT 0 NOT NULL,\n    FOREIGN KEY (city_id) REFERENCES cities(id)\n);\n\n/* Категории заданий */\nCREATE TABLE categories (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    name VARCHAR(100) NOT NULL,\n    alias VARCHAR(100) NOT NULL\n);\n\n/* Задания */\nCREATE TABLE tasks (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    customer_id INT NOT NULL,\n    title VARCHAR(255) NOT NULL,\n    description TEXT,\n    category_id INT NOT NULL,\n    city_id INT,\n    budget VARCHAR(100),\n    deadline DATETIME,\n    location VARCHAR(255),\n    latitude DECIMAL(11, 8),\n    longitude DECIMAL(11, 8),\n    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,\n    status VARCHAR(50) DEFAULT 'new' NOT NULL,\n    executor_id INT,\n    FOREIGN KEY (category_id) REFERENCES categories(id),\n    FOREIGN KEY (customer_id) REFERENCES users(id),\n    FOREIGN KEY (executor_id) REFERENCES users(id),\n    FOREIGN KEY (city_id) REFERENCES cities(id)\n);\n\n/* Файлы */\nCREATE TABLE files (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    link VARCHAR(255) NOT NULL UNIQUE,\n    task_id INT NOT NULL,\n    FOREIGN KEY (task_id) REFERENCES tasks(id)\n);\n\n/* Отклики */\nCREATE TABLE responses (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    executor_id INT NOT NULL,\n    task_id INT NOT NULL,\n    comment TEXT,\n    price INT,\n    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,\n    status VARCHAR(50) DEFAULT 'new' NOT NULL,\n    FOREIGN KEY (executor_id) REFERENCES users(id),\n    FOREIGN KEY (task_id) REFERENCES tasks(id)\n);\n\n/* Отзывы */\nCREATE TABLE reviews (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    customer_id INT NOT NULL,\n    executor_id INT NOT NULL,\n    task_id INT NOT NULL,\n    comment TEXT,\n    grade INT,\n    creation_date DATETIME DEFAULT CURRENT_TIMESTAMP,\n    FOREIGN KEY (customer_id) REFERENCES users(id),\n    FOREIGN KEY (executor_id) REFERENCES users(id),\n    FOREIGN KEY (task_id) REFERENCES tasks(id)\n);\n\nCREATE FULLTEXT INDEX task_title_search ON tasks(title);\nCREATE FULLTEXT INDEX task_description_search ON tasks(description);\n```\n\n6. Настройте подключение к базе данных в файле `config\\db.php`, указав в нем параметры своего окружения. Например, это может выглядеть так:\n\n```php\n\u003c?php\n\nreturn [\n    'class' =\u003e 'yii\\db\\Connection',\n    'dsn' =\u003e 'mysql:host=127.0.0.1;dbname=taskforce',\n    'username' =\u003e 'root',\n    'password' =\u003e 'root',\n    'charset' =\u003e 'utf8',\n];\n```\n\n## Техническое задание\n\n[Посмотреть техническое задание проекта](https://sokoloff-rv.notion.site/Taskforce-a703517be86f4dd2b0562c0602bad50e?pvs=4)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsokoloff-rv%2Ftask-force","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsokoloff-rv%2Ftask-force","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsokoloff-rv%2Ftask-force/lists"}