К содержимому

Документация Workora

Всё для установки, настройки, эксплуатации и расширения Workora: от первой загрузки до платежей, безопасности, обновлений и REST API.

Обзор#

Workora — готовый скрипт фриланс-биржи. Заказчики публикуют проекты и получают отклики или покупают готовые услуги. Деньги движутся через эскроу по этапам, у каждого участника есть кошелёк, а каждый платёж записывается в книгу с двойной записью.

Версия продукта 1.0.0, построен на Laravel 13. Включает публичный сайт, кабинет участника и админ-панель, на английском и арабском.

Сначала попробуйте. Живая демо показывает все функции на тестовых данных. Используйте кнопки входа в один клик.
workora-demo.devdoor.tech
home-sectionshome-sections

Требования#

КомпонентТребуется
PHP8.4 или новее
Расширения PHPbcmath, ctype, curl, fileinfo, gd (с WebP), intl, mbstring, openssl, pdo_mysql, tokenizer, xml, zip. sodium нужен только для подписанных обновлений.
База данныхMySQL 8.0+ или MariaDB 10.6+ (utf8mb4)
Веб-серверApache, Nginx или LiteSpeed с HTTPS
CronОдно задание каждую минуту

Node.js и Composer на сервере не нужны: пакет содержит зависимости и собранные стили.

Установка#

  1. Загрузите содержимое папки 1-Source/workora на сервер. Корень сайта должен указывать на папку public.
  2. Создайте пустую базу MySQL и пользователя.
  3. Откройте https://your-domain/install в браузере. Установщик проверит сервер, затем запросит базу данных, название и адрес сайта, часовой пояс и аккаунт администратора.
  4. В конце он покажет строку cron, которую нужно добавить. Затем войдите на /login и откройте /admin.

Командная строка (необязательно)

php artisan app:install \
  --db-name=workora --db-user=root --db-password=secret \
  --app-name="My Marketplace" --app-url=https://example.com \
  --admin-name="Admin" --admin-username=admin \
  --admin-email=admin@example.com --admin-password="a-strong-password"

Добавьте --create-database для создания базы и --demo для тестовых данных (только для демо-сайтов).

Общий хостинг (Hostinger, cPanel)#

Общий хостинг подходит, и живая демо работает именно на нём. Самая безопасная схема держит приложение вне публичной папки:

domains/your-domain/
  workora/        приложение (никогда не публичное)
  public_html/    index.php, .htaccess, папки build и flags
  1. В панели хостинга выберите для домена PHP 8.4 и включите перечисленные расширения.
  2. Загрузите пакет, затем переименуйте public в public_html, а остальное положите в workora.
  3. В public_html/index.php укажите пути к папке приложения (подготовленная версия для public_html уже это делает).
  4. Создайте базу в панели и запустите установщик.
  5. Добавьте задание cron в панели: /usr/bin/php /home/USER/domains/your-domain/workora/artisan schedule:run каждую минуту.
Символические ссылки. Некоторые хостинги отключают symlink(). Если ссылку на публичное хранилище создать не удалось, создайте public_html/storage как ссылку на workora/storage/app/public через SSH или попросите хостинг.

Задание Cron#

Одно задание управляет всем: отложенная почта и уведомления, автовыплата по контрактам, истечение проектов, продление тарифов, напоминания о встречах, статистика отзывов, ночная сверка книги и резервные копии.

* * * * * cd /path/to/workora && php artisan schedule:run >> /dev/null 2>&1

Страница Состояние в админке показывает, запускался ли планировщик недавно.

Первые шаги#

  1. Настройки → Общие: название сайта, текстовый логотип, базовая валюта (выберите до запуска), почта для связи, часовой пояс, страна по умолчанию.
  2. Внешний вид: тема, цвета, логотип, иконка, ширина, блоки главной, уведомление о cookie.
  3. Языки: включите языки, выберите основной и проверьте переводы.
  4. Платежи: включите шлюзы и задайте комиссию, депозит и правила вывода.
  5. Почта: настройте SMTP и отправьте тестовое письмо.
  6. Контент: отредактируйте страницы, FAQ, блог и отзывы.
  7. Категории: подгоните 14 категорий и 125 подкатегорий под свою нишу.
workora-demo.devdoor.tech
adminadmin

Платежи#

Включайте способы в Настройки → Платежи. Каждый показывает адрес webhook, который нужно зарегистрировать у провайдера.

СпособПримечания
StripeКарты. Секретный ключ и секрет подписи webhook. Адрес: /webhooks/stripe
PayPalПесочница или боевой режим; client ID, секрет и ID webhook. Адрес: /webhooks/paypal
Paystack, Razorpay, FlutterwaveКлючи и секреты webhook; адреса вида /webhooks/{gateway}
Банковский переводВаши реквизиты; участники загружают подтверждение, команда его одобряет
Сначала тестируйте. Сделайте пробное пополнение через каждый включённый шлюз и убедитесь, что webhook приходит, прежде чем принимать реальные деньги.

У пополнений есть минимум и максимум. Вывод — через PayPal или банковские реквизиты, с минимумом, необязательной комиссией, необязательным сроком удержания и лимитом открытых заявок.

Электронная почта#

Настройте Настройки → Почта на SMTP-сервер и отправьте тестовое письмо. До этого письма пишутся в журнал. Уведомления отложены и доставляются через cron за минуту. Участники выбирают, какие категории получать, в настройках уведомлений.

Оформление и темы#

Админка → Внешний вид управляет всем видом без кода: одна из восьми тем, основной и акцентный цвета, оттенок серого, скругления, шрифт, тени, стиль шапки и боковой панели, режим цвета (светлый, тёмный, авто). Загрузите логотип (с тёмным вариантом) и иконку.

Макет: стандартная, широкая или полная ширина и плотность карточек. Главная: включайте блоки (лента категорий, цифры, почему мы, лучшие фрилансеры, проекты, отзывы, баннеры), задайте число рядов категорий и режим: прокрутка или сетка. Участники выбирают режим цвета, а при вашем разрешении и тему.

workora-demo.devdoor.tech
admin-appearanceadmin-appearance

Языки и RTL#

Языки показывает включённые языки. Добавьте язык из шаблона или по коду, укажите направление и флаг, затем откройте Перевод, чтобы править каждый текст в таблице с поиском, импортировать и экспортировать JSON и видеть непереведённое. Категории, навыки, страницы, блог и FAQ переводятся в редакторе каждого элемента.

Для RTL-языков интерфейс переключается целиком. У каждого языка свой индексируемый адрес (?lang=ru) с ссылками hreflang и многоязычной картой сайта.

Как движутся деньги#

  • Заказчик финансирует этап из кошелька, и деньги уходят в эскроу.
  • Фрилансер сдаёт работу; заказчик принимает (платёж выплачивается за вычетом комиссии), просит доработки или открывает спор. Если заказчик ничего не делает, платёж выплачивается автоматически через заданное число дней.
  • Каждое движение — сбалансированная запись в книге с двойной записью. Ночное задание доказывает, что кошельки, эскроу и доход сходятся.

Комиссия

Задайте процент платформы в Настройки → Платежи, необязательную минимальную комиссию с платежа, другой процент для любой категории и сниженный для любого тарифа. Приоритет: тариф, затем категория, затем по умолчанию. Контракт сохраняет ставку на момент создания.

Участники и модерация#

Роли команды (админ, модератор, финансы, поддержка) ограничены нужными правами; аккаунты команды требуют двухфакторной защиты. В разделе Пользователи можно искать, приостанавливать, блокировать участников и назначать роли. Проекты и услуги можно проверять до публикации; у отзывов и жалоб свои очереди; команда решает споры с записанным комментарием.

Контент и SEO#

Управляйте страницами, блогом, FAQ и отзывами в разделе Контент, всё переводимо. Workora создаёт карту сайта с языковыми версиями, теги canonical, Open Graph, структурированные данные для услуг и правила robots. Публичные страницы быстрые и подходят для кэширования.

Тарифы, Connects и лимиты#

Три независимых способа зарабатывать и регулировать активность; используйте любой или все:

  • Connects: отклики стоят кредиты. Задайте цену отклика, бесплатные кредиты, размер и цену пакета.
  • Тарифы: месячные подписки, дающие Connects, снижающие комиссию и меняющие лимиты.
  • Лимиты (Настройки → Лимиты и тарифы): включайте любые из откликов в день, неделю или месяц, числа услуг, работ в портфолио и активных контрактов. Участники без тарифа получают бесплатные значения; у каждого тарифа свои (0 = без лимита).

Участники видят расход на странице тарифов и получают уведомление при достижении лимита.

workora-demo.devdoor.tech
plansplans

Профили, портфолио и верификация#

Фрилансеры укрепляют доверие заголовком, навыками, почасовой ставкой, ссылками, опытом, образованием, сертификатами и языками (вкладка Резюме), портфолио, которое редактируют, скрывают, выделяют и сортируют, и резюме для печати по адресу /u/username/resume. Шкала силы профиля показывает, чего не хватает.

Верификация: почта, фото профиля и личность (паспорт, ID-карта или права). Документы перекодируются и хранятся на закрытом диске; видит их только команда в Админка → Верификации, где одобряет или отклоняет с причиной. Проверка телефона отмечена «скоро». Можно потребовать подтверждённую личность перед первым выводом.

workora-demo.devdoor.tech
profileprofile

Сообщения и встречи#

В мессенджере есть список диалогов, чат и боковая панель с человеком, проектом, заказами, контрактами, встречами и общими файлами, каждый элемент ведёт на свою страницу. Сообщения приходят вживую, видны отметки о прочтении, поддерживаются вложения. До контракта адреса почты, номера телефонов и ссылки скрываются, защищая вашу комиссию (можно изменить).

Встречи: любая сторона может назначить встречу: выберите время (каждый видит его в своём часовом поясе), длительность и ссылку Zoom, Google Meet, Teams, Webex, Jitsi, Whereby или Skype (или создайте бесплатную комнату Jitsi). Приглашение появляется карточкой с кнопками принять, отклонить, добавить в календарь (ics) и «Присоединиться», активной за 15 минут до начала. Обе стороны получают напоминание. В Настройки → Сообщения и файлы можно отключить встречи или разрешить любые https-ссылки.

workora-demo.devdoor.tech
messagesmessages

Чат поддержки#

Участники открывают Поддержку, чтобы написать вашей команде; посетители используют форму связи и получают ответ по почте. В Админка → Поддержка фильтруйте по статусу, теме, приоритету и ответственному, назначайте диалоги, пишите личные заметки, вставляйте шаблоны ответов и смотрите время первого ответа и оценки. После закрытия участник оценивает помощь.

Рефералы, купоны и уведомления#

Рефералы включены по умолчанию: пригласивший получает бонус, когда приглашённый завершает оплаченный контракт. У участников есть страница для шеринга с кнопками копирования и отправки, числом переходов и результатами; бонус, приветственный подарок и минимальный контракт задаются в Настройки → Рефералы, итоги видны в Админка → Рефералы. Купоны зачисляют сумму в кошелёк один раз на участника, с лимитами и сроком.

У уведомлений есть колокольчик и центр с фильтрами, отметкой прочитано/не прочитано и удалением. Фрилансеры настраивают оповещения о проектах по категориям и ключевым словам.

Устанавливаемое приложение (PWA)#

Сайт публикует манифест и небольшой service worker, кэширующий только собранные CSS и JavaScript и офлайн-страницу, но никогда не страницы участников. Телефоны предложат Добавить на главный экран с цветом и названием вашего бренда.

REST API#

В комплекте JSON API только для чтения. Включите его в Настройки → Общие. Участники создают токены на странице Безопасность (показываются один раз, хранится только хэш, срок действия необязателен). Отправляйте Authorization: Bearer wk_...; каждый токен ограничен 60 запросами в минуту. Суммы — целые числа в младших единицах вместе с кодом валюты.

МаршрутВозвращает
GET /api/v1/meПрофиль владельца токена
GET /api/v1/categoriesКатегории и подкатегории
GET /api/v1/gigs и /gigs/{id}Опубликованные услуги (фильтры q, category)
GET /api/v1/projects и /projects/{id}Открытые публичные проекты
GET /api/v1/wallet, /orders, /contracts, /notificationsДанные владельца токена
curl -H "Authorization: Bearer wk_your_token" https://your-site.example/api/v1/gigs?q=logo

Резервные копии и состояние#

Ежедневная копия базы и еженедельная полная копия (с файлами) запускаются планировщиком и перечислены в разделе Состояние, откуда их можно скачать. Эта же страница проверяет PHP, расширения, права, планировщик, очередь, книгу и место на диске. Укажите путь к mysqldump в .env (BACKUP_MYSQLDUMP), если его нет в PATH.

Обновление#

  1. Сделайте копию базы и файлов.
  2. Откройте Админка → Обновления, загрузите подписанный пакет и проверьте сводку.
  3. Примените. Workora проверит подпись, скопирует новые файлы, выполнит миграции и очистит кэш. .env, загрузки и настройки сохраняются.

Если на сервере нет расширения sodium, обновляйтесь вручную: загрузите новые файлы поверх старых и выполните php artisan migrate --force и php artisan optimize:clear.

Демо-данные и демо-сайт#

php artisan app:demo добавляет тестовых участников, проекты и услуги в любую установку; --full наполняет каждую подкатегорию. Для публичной демо задайте DEMO_MODE=true в .env и выполните php artisan demo:reset; cron сбрасывает её каждый час. В демо-режиме показывается баннер с тестовыми аккаунтами и входом в один клик, а опасные действия (настройки, команда, обновления, копии, реальные платежи) блокируются. Задайте DEMO_PURCHASE_URL, чтобы показать кнопку «Купить».

Никогда не включайте демо-режим на реальной платформе. Сброс удаляет все данные.

Чек-лист безопасности#

  • Работайте только по HTTPS и держите APP_DEBUG=false.
  • Держите папку приложения вне публичного корня или закройте к ней доступ.
  • Команде нужно использовать двухфакторную защиту.
  • Держите .env закрытым и храните его копию отдельно.
  • Используйте надёжный пароль базы и ограничьте доступ к ней сервером.
  • Установите ClamAV и задайте CLAMSCAN_PATH для проверки каждой загрузки (необязательно).
  • Запускайте composer audit при обновлении зависимостей.

Включено: строгая CSP с nonce, лимиты чувствительных действий, закрытое хранение документов и вложений, перекодированные изображения, автотесты, пытающиеся получить данные других участников, и обновления с подписью Ed25519.

Решение проблем#

ПроблемаРешение
Пустая страница или ошибка 500Смотрите storage/logs/laravel.log. Проверьте, что storage и bootstrap/cache доступны для записи и PHP 8.4+.
"Your Composer dependencies require PHP 8.4"Выберите PHP 8.4 для домена в панели хостинга.
Нет стилейКорнем должна быть папка public с загруженной папкой build.
Не видны загруженные изображенияСоздайте ссылку хранилища: public/storage на storage/app/public.
Не приходят письмаПроверьте SMTP и что cron запускается каждую минуту.
Загрузки отклоняютсяУвеличьте upload_max_filesize и post_max_size.
Платежи остаются в ожиданииПроверьте, что адрес webhook зарегистрирован у шлюза и доступен.

Поддержка и лицензия#

Workora продаётся на CodeCanyon. Поддержка и обновления следуют политике поддержки Envato: помощь с установкой и исправление ошибок, без индивидуальной разработки. Платформе, которая берёт с участников сборы, комиссии или подписки, нужна расширенная лицензия. Сторонние компоненты перечислены с их лицензиями в пакете.

Купить на CodeCanyon Живая демо

Нет разделов, подходящих под запрос.