Skip to content

bitrix-tools/ai-hackathon-starter-full

Repository files navigation

Bitrix24 AI Hackathon Starter Kit

🚀 Стартер-кит для разработки приложений Bitrix24 с помощью AI-агентов

Этот проект предназначен для помощи разработчикам в создании приложений для Bitrix24 с использованием AI-агентов. Он включает как готовую кодовую базу, так и набор подробных инструкций для AI-агентов.

🎯 Что предоставляет стартер-кит:

  • Три варианта бэкенда на выбор (PHP, Python, Node.js)
  • Готовый фронтенд на Nuxt 3 с интеграцией Bitrix24 UI Kit
  • Воркеры для фоновых задач
  • Docker-контейнеры для быстрого развертывания
  • Готовые SDK и общие утилиты для работы с Bitrix24 API
  • Makefile для удобства разработки
  • Документированные API endpoints
  • 📋 AI Agent Prompt Starter - подробный промпт для AI-агентов в файле AI_AGENT_PROMPT_STARTER.md
  • 📚 Набор инструкций для AI-агентов в папке instructions/

Разработчики могут легко добавлять собственные бэкенды, просто создав папку в backends/ с соответствующей структурой.

🤖 Инструкции для AI-агентов

⭐ Главный файл: AI_AGENT_PROMPT_STARTER.md - комплексный промпт для AI-агентов с пошаговыми инструкциями по развертыванию и разработке.

📁 Папка инструкций: instructions/ содержит:

  • Руководства по использованию SDK (JS, PHP, Python)
  • Инструкции по работе с Bitrix24 UI Kit
  • Примеры создания виджетов и роботов
  • Стандарты качества кода для всех языков
  • Подробные API-справочники

🏗️ Основные компоненты

Обязательные права доступа: crm, user_brief, pull, placement, userfieldconfig

Для разработки используйте:

  • Cloudpub или ngrok для публичного HTTPS доступа
  • Docker для контейнеризации

📁 Структура проекта

ai-hackathon-starter-full/
├── frontend/                    # Nuxt 3 фронтенд с Bitrix24 UI Kit
├── backends/                    # Три варианта бэкенда на выбор
│   ├── php/                    # Symfony + PHP SDK
│   ├── python/                 # Django + b24pysdk
│   └── node/                   # Express + Node.js
├── infrastructure/
│   └── database/               # PostgreSQL (init.sql)
├── instructions/               # 📚 Инструкции для AI-агентов
├── logs/                       # Логи вне контейнеров
├── AI_AGENT_PROMPT_STARTER.md  # 🤖 Главный промпт для AI
└── docker-compose.yml          # Docker конфигурация

🚀 Быстрый старт

# Скопируйте и настройте переменные окружения
cp .env.example .env

# Разработка с PHP бэкендом
make dev-php

# Разработка с Python бэкендом
make dev-python

# Разработка с Node.js бэкендом
make dev-node

# Остановка всех сервисов
make down

# Продакшн с PHP
make prod-php

# Продакшн с Python
make prod-python

# Продакшн с Node.js
make prod-node

# Только база данных + фронтенд (для тестирования)
COMPOSE_PROFILES= docker-compose up database frontend

# Полный стек
COMPOSE_PROFILES=php,worker docker-compose up -d

🛠️ Технологический стек

Frontend

  • Nuxt 3 (Vue 3, TypeScript)
  • Bitrix24 UI Kit (@bitrix24/b24ui-nuxt)
  • Bitrix24 JS SDK (@bitrix24/b24jssdk-nuxt)
  • Pinia (управление состоянием)
  • i18n (многоязычность)
  • TailwindCSS

Backend (на выбор)

  • PHP: Symfony 7, Doctrine ORM, PHP SDK для Bitrix24
  • Python: Django, b24pysdk
  • Node.js: Express, pg (PostgreSQL), JWT

Infrastructure

  • Docker & Docker Compose
  • PostgreSQL 17
  • Cloudpub (ngrok-like) для туннелирования
  • Nginx (production)

📋 Инструкция по развертыванию

Предварительные требования

  1. Скопируйте файл переменных окружения
cp -pv .env.example .env
  1. Запустите службу туннелирования

Используйте ngrok, cloudpub или другой сервис для получения публичного HTTPS URL. В этом стартере мы используем cloudpub для разработки.

  1. Создайте портал Bitrix24 и локальное приложение

Создайте новое приложение: Битрикс24 → Левое меню → Developer Resources → Other → Local Applications

  1. Заполните параметры локального приложения

Параметры:

  • Server (да)
  • Your handler path (введите URL туннелирования)
  • Initial Installation path (введите URL туннелирования + /install)
  • Menu item text (название вашего приложения)
  • Assign permissions (scope): crm, user_brief, pull, placement, userfieldconfig - минимальные права для демо-приложения

🔧 Пошаговая настройка PHP бэкенда

на macOS Перейдите в docker-compose.yml и измените image: cloudpub/cloudpub:latest на image: cloudpub/cloudpub:latest-arm64 в контейнере cloudpub

  1. Введите ваш API-ключ cloudpub в файл .env
CLOUDPUB_TOKEN=ваш_токен_здесь
  1. Укажите бэкенд в файле .env
SERVER_HOST=http://api-php:8000
  1. Запустите контейнеры разработки
make dev-php
  1. Обновите зависимости бэкенда
make composer-update
  1. Найдите URL для фронтенда и бэкенда в логах cloudpub

Пример вывода в консоли для cloudpub:

...
cloudpubApiPhp  | http://frontend:3000 -> https://inanely-muscular-wagtail.cloudpub.com:443
...

Note

Если вы используете Windows и api-php не запускается, попробуйте пересохранить файл backends/php/docker/php-fpm/docker-entrypoint.sh

Запомните этот URL.

  1. Установите URL в корневой файл .env

Эти URL используются в вашем фронтенде и бэкенде:

VIRTUAL_HOST=https://inanely-muscular-wagtail.cloudpub.com
  1. Введите их в параметры локального приложения в портале Bitrix24
  • Your handler path: https://inanely-muscular-wagtail.cloudpub.com
  • Initial Installation path: https://inanely-muscular-wagtail.cloudpub.com/install
  • Assign permissions: crm, user_brief, pull, placement, userfieldconfig

После нажатия кнопки сохранения вы увидите параметры локального приложения:

Внимание! Ваши параметры будут отличаться

Пример:

  • Application ID (client_id): local.6901c_xxxxxxx
  • Application key (client_secret): vXpv64o_xxxxxxx
  1. Инициализируйте структуру базы данных
make dev-php-init-database
  1. Перезапустите контейнеры разработки

  2. Установите ваше приложение в портале Bitrix24


🐍 Пошаговая настройка Python бэкенда

на macOS Перейдите в docker-compose.yml и измените image: cloudpub/cloudpub:latest на image: cloudpub/cloudpub:latest-arm64 в контейнере cloudpub

  1. Введите API-ключ cloudpub и учетные данные Django superuser в файл .env
CLOUDPUB_TOKEN=ваш_токен_здесь
DJANGO_SUPERUSER_USERNAME=admin
DJANGO_SUPERUSER_EMAIL=admin@example.com
DJANGO_SUPERUSER_PASSWORD=admin123
  1. Укажите бэкенд в файле .env
SERVER_HOST=http://api-python:8000
  1. Запустите контейнеры разработки
make dev-python
  1. Миграция базы данных и создание Django superuser происходят автоматически после запуска контейнера.

  2. Найдите URL для фронтенда и бэкенда в логах cloudpub

Пример вывода в консоли для cloudpub:

...
cloudpubApiPython  | http://frontend:3000 -> https://inanely-muscular-wagtail.cloudpub.com:443
...

Запомните этот URL.

  1. Установите URL в корневой файл .env
VIRTUAL_HOST=https://inanely-muscular-wagtail.cloudpub.com
  1. Введите их в параметры локального приложения в портале Bitrix24
  • Your handler path: https://inanely-muscular-wagtail.cloudpub.com
  • Initial Installation path: https://inanely-muscular-wagtail.cloudpub.com/install
  • Assign permissions: crm, user_brief, pull, placement, userfieldconfig

После сохранения вы получите параметры приложения:

Внимание! Ваши параметры будут отличаться

Пример:

  • Application ID (client_id): local.6901c_xxxxxxx
  • Application key (client_secret): vXpv64o_xxxxxxx
  1. Перезапустите контейнеры разработки

  2. Установите ваше приложение в портале Bitrix24

  3. Django админ-панель будет доступна по адресу: https://<VIRTUAL_HOST>/api/admin (логин: <DJANGO_SUPERUSER_USERNAME>, пароль: <DJANGO_SUPERUSER_PASSWORD>)

🔌 API Endpoints

Общие принципы

Все запросы (кроме /api/install, /api/getToken) передают JWT в заголовках.

Пример:

const {data, error} = await $fetch('/api/protected-route', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${someJWT}`
  }
});

Сервер проверяет каждый запрос (кроме /api/install, /api/getToken) на наличие действительного JWT токена.

Сервер возвращает ответ в формате JSON.

При возникновении ошибки сервер устанавливает код ответа 401, 404 или 500 и возвращает описание ошибки в следующем формате:

{
  "error": "Internal server error"
}

/api/health

Указывает статус бэкенда.

  • Метод: GET
  • Параметры: нет
  • Ответ:
    • status: string - статус сервера
    • backend: string - тип бэкенда (php/python/node)
    • timestamp: number - временная метка

Пример ответа:

{
  "status": "healthy",
  "backend": "php",
  "timestamp": 1760611967
}

Тестирование:

curl http://localhost:8000/api/health

/api/enum

Возвращает перечисление опций.

  • Метод: GET
  • Параметры: нет
  • Ответ: string[] - массив строк с опциями

Пример ответа:

[
  "option 1",
  "option 2", 
  "option 3"
]

Тестирование:

curl http://localhost:8000/api/enum

/api/list

Возвращает список элементов.

  • Метод: GET
  • Параметры: нет
  • Ответ: string[] - массив строк с элементами

Пример ответа:

[
  "element 1",
  "element 2",
  "element 3"
]

Тестирование:

curl http://localhost:8000/api/list

/api/install

Вызывается из фронтенд клиента при установке приложения.

JWT токен не передается.

  • Метод: POST
  • Параметры:
    • DOMAIN: string - домен портала Bitrix24
    • PROTOCOL: number - протокол (0 - HTTP, 1 - HTTPS)
    • LANG: string - язык интерфейса
    • APP_SID: string - идентификатор сессии приложения
    • AUTH_ID: string - токен авторизации
    • AUTH_EXPIRES: number - время истечения токена
    • REFRESH_ID: string - токен обновления
    • member_id: string - ID участника
    • user_id: number - ID пользователя
    • PLACEMENT: string - размещение приложения
    • PLACEMENT_OPTIONS: object - опции размещения
  • Ответ:
    • message: string - сообщение о результате

Пример ответа:

{
  "message": "Installation successful"
}

Тестирование:

curl -X POST http://localhost:8000/api/install \
  -H "Content-Type: application/json" \
  -d '{"AUTH_ID":"27exx66815","AUTH_EXPIRES":3600,"REFRESH_ID":"176xxxe","member_id":"a3xxx22","user_id":"1","PLACEMENT":"DEFAULT","PLACEMENT_OPTIONS":"{\"any\":\"6\/\"}"}'

/api/getToken

Вызывается фронтендом для получения JWT токена от бэкенда.

На вход передаются данные авторизации от Bitrix24.

Время жизни токена: 1 час.

JWT токен не передается.

  • Метод: POST
  • Параметры:
    • DOMAIN: string - домен портала Bitrix24
    • PROTOCOL: number - протокол (0 - HTTP, 1 - HTTPS)
    • LANG: string - язык интерфейса
    • APP_SID: string - идентификатор сессии приложения
    • AUTH_ID: string - токен авторизации
    • AUTH_EXPIRES: number - время истечения токена
    • REFRESH_ID: string - токен обновления
    • member_id: string - ID участника
    • user_id: number - ID пользователя
  • Ответ:
    • token: string - JWT токен для дальнейших запросов

Пример ответа:

{
  "token": "AIHBdxxxLLL"
}

Тестирование:

curl -X POST http://localhost:8000/api/getToken \
  -H "Content-Type: application/json" \
  -d '{"AUTH_ID":"27exx66815","AUTH_EXPIRES":3600,"REFRESH_ID":"176xxxe","member_id":"a3xxx22","user_id":1}'

📚 Дополнительные ресурсы

AI-агенты и инструкции

Стандарты качества кода

🤝 Участие в разработке

Этот стартер-кит создан для облегчения разработки приложений Bitrix24 с помощью AI-агентов. Вы можете:

  1. Использовать готовые инструкции для обучения AI-агентов
  2. Дорабатывать существующие SDK примеры
  3. Добавлять новые бэкенды в папку backends/
  4. Улучшать документацию и инструкции

📄 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors