Сайт для команды разработчиков

Сайт позволяющий с удобством работать над заказами, а также проводить аналитику своих результатов

Skills & deliverables:
Vue 3Vue RouterPiniaTypeScriptVitexterm.js@xterm/addon-fit@xterm/addon-attachNode.jstsxssh2wsbusboydotenvconcurrentlyCapacitor 8Androidnginxphp-fpmDebian LinuxbashnpmcomposerpipgunicorndotnetSFTPWebSocketlocalStorage
Timeline:2 недели
Budget:40 000

Project description

Внутренняя ERP-система для IT-команды и фриланс-студии, объединяющая учёт заказов, чат по проектам, публикацию портфолио на удалённый Linux-сервер и встроенную SSH-консоль в браузере. Приложение построено как одностраничное веб-приложение на Vue 3 с маршрутизацией через Vue Router и управлением состоянием через Pinia. Интерфейс на русском языке. Авторизация реализована в демо-режиме: пользователь вводит имя и выбирает роль без реального SSO или JWT, после чего получает доступ к разделам согласно своим правам. Данные заказов, чатов, платформ и проектов портфолио хранятся в localStorage браузера, что делает систему быстрым прототипом без серверной базы данных, но без синхронизации между устройствами и пользователями.

Система поддерживает четыре роли. Гость не используется после входа. Менеджер видит заказы, портфолио и чат, может создавать и редактировать заказы. Разработчик работает с заказами, портфолио и SSH-консолью, но не создаёт заказы. Руководитель имеет полный доступ, включая статистику выручки за день, неделю и месяц, сумму активных заказов и количество завершённых. Маршрутизация защищена guard'ами: неавторизованных отправляет на страницу входа, пользователей без нужной роли — на страницу «Доступ запрещён».

Модуль заказов позволяет вести полный цикл работы: название, площадка (Kwork, Telegram или пользовательская), исполнитель, техническое задание, дедлайн, сумма в рублях с возможностью скрыть её от других ролей, статус (черновик, активный, на проверке, выполнен, отменён), приоритет, стек технологий, заказчик и заметки. В карточке заказа доступен чат между участниками. Модуль портфолио принимает архив проекта (zip или tar.gz), название, slug для URL, ветку и набор языков или фреймворков из списка, после чего выполняет реальную публикацию на удалённый Debian-сервер по SSH. Бэкенд распаковывает архив, автоматически определяет стек по содержимому (например, PHP/October CMS по index.php и папке pages), выбирает подходящий bash-шаблон сборки, собирает проект и публикует результат по адресу вида http://194.156.101.239/p/{slug}/. Встроенная консоль через xterm.js подключается к серверу по WebSocket и даёт полноценную SSH-сессию для установки пакетов и ручной настройки окружения.

Архитектура разделена на три уровня. Браузер или Android-приложение (Capacitor) отображает Vue SPA. Локальный Node.js-сервер на порту 3001 принимает HTTP-запросы деплоя и WebSocket-соединения терминала, используя библиотеку ssh2 для SSH и SFTP на production-хост. Удалённый Debian VPS с nginx раздаёт опубликованные сайты по path-prefix /p/{slug}/, при необходимости с php-fpm для PHP-проектов. В режиме разработки Vite на порту 5173 проксирует /api и /ws/terminal на Node-сервер; для ngrok настроены allowedHosts. Деплой поддерживает восемнадцать шаблонов под разные стеки — Vue, React, Angular, Laravel, Django, Flask, .NET, Node.js, PHP, Python, TypeScript, JavaScript, SCSS, CSS, HTML, C++ и auto-detect — с приоритетом фреймворка над языком и толерантной распаковкой Windows-ZIP с кириллицей в именах файлов

Files & attachments