diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml new file mode 100644 index 0000000000..e31d81c586 --- /dev/null +++ b/.github/workflows/jekyll-gh-pages.yml @@ -0,0 +1,51 @@ +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll with GitHub Pages dependencies preinstalled + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./ + destination: ./_site + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml new file mode 100644 index 0000000000..61f2d803bc --- /dev/null +++ b/.github/workflows/jekyll.yml @@ -0,0 +1,65 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Ruby + # https://github.com/ruby/setup-ruby/releases/tag/v1.207.0 + uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4 + with: + ruby-version: '3.1' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/README.md b/README.md index d3745298ff..a006d4c920 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,113 @@ Bolt.new supports most popular JavaScript frameworks and libraries. If it runs o **How can I add make sure my framework/project works well in bolt?** We are excited to work with the JavaScript ecosystem to improve functionality in Bolt. Reach out to us via [hello@stackblitz.com](mailto:hello@stackblitz.com) to discuss how we can partner! +# [![Bolt Open Source Codebase](./public/social_preview_index.jpg)](https://bolt.new) + +Добро пожаловать в открытый исходный код **Bolt**! Этот репозиторий содержит простой пример приложения, использующего основные компоненты из bolt.new, который поможет вам начать создавать **инструменты разработки программного обеспечения на основе ИИ** с использованием **WebContainer API** от StackBlitz. + +### Почему стоит использовать Bolt + WebContainer API для разработки приложений? + +Используя Bolt + WebContainer API, вы можете создавать браузерные приложения, позволяющие пользователям **запускать, редактировать и развертывать** полнофункциональные веб-приложения непосредственно в браузере, без необходимости использования виртуальных машин. С помощью WebContainer API вы можете создавать приложения, предоставляющие ИИ прямой доступ и полный контроль над **сервером Node.js**, **файловой системой**, **менеджером пакетов** и **терминалом разработчика** прямо во вкладке браузера пользователя. Эта мощная комбинация позволяет создать новый класс инструментов разработки, поддерживающих все основные библиотеки JavaScript и пакеты Node сразу после установки, без удаленных сред или локальной установки. + +### В чём разница между Bolt (этот репозиторий) и [Bolt.new](https://bolt.new)? + +- **Bolt.new**: Это **коммерческий продукт** от StackBlitz — размещенный в браузере инструмент для разработки ИИ, позволяющий пользователям запускать, редактировать и развертывать полнофункциональные веб-приложения непосредственно в браузере. Он создан на основе [репозитория с открытым исходным кодом Bolt](https://github.com/stackblitz/bolt.new) и работает на базе **API WebContainer** от StackBlitz. + +- **Bolt (Этот репозиторий)**: Этот репозиторий с открытым исходным кодом предоставляет основные компоненты, используемые для создания **Bolt.new**. В репозитории содержится пользовательский интерфейс Bolt, а также серверные компоненты, созданные с помощью [Remix Run](https://remix.run/). Используя этот репозиторий и **WebContainer API** от StackBlitz, вы можете создавать собственные инструменты разработки на основе ИИ и полнофункциональные приложения, работающие полностью в браузере. + +# Начните создавать с помощью Bolt + +Bolt объединяет возможности ИИ с изолированными средами разработки, создавая среду для совместной работы, где ассистент и программист могут разрабатывать код вместе. Bolt использует [WebContainer API](https://webcontainers.io/api) с [Claude Sonnet 3.5](https://www.anthropic.com/news/claude-3-5-sonnet) с помощью [Remix](https://remix.run/) и [AI SDK](https://sdk.vercel.ai/). + +### API веб-контейнера + +Bolt использует [WebContainers](https://webcontainers.io/) для запуска сгенерированного кода в браузере. WebContainers предоставляют Bolt полнофункциональную изолированную среду с помощью [WebContainer API](https://webcontainers.io/api). WebContainers запускают полнофункциональные приложения непосредственно в браузере без затрат и проблем с безопасностью, связанных с облачными агентами ИИ. WebContainers интерактивны и редактируемы, что позволяет ИИ Bolt запускать код и понимать любые изменения, внесенные пользователем. + +API WebContainer (https://webcontainers.io) бесплатен для личного использования и использования в проектах с открытым исходным кодом. Если вы разрабатываете приложение для коммерческого использования, вы можете узнать больше о ценах на коммерческое использование API WebContainer здесь (https://stackblitz.com/pricing#webcontainer-api). + +### Приложение Remix + +Bolt создан с помощью [Remix](https://remix.run/) и +Развернуто с использованием [CloudFlare Pages](https://pages.cloudflare.com/) и +[Работники CloudFlare](https://workers.cloudflare.com/). + +### Интеграция SDK для ИИ + +Bolt использует [AI SDK](https://github.com/vercel/ai) для интеграции с ИИ. +модели. В настоящее время Bolt поддерживает использование Claude Sonnet 3.5 от Anthropic. +Для использования с Bolt вы можете получить ключ API в [консоли Anthropic API](https://console.anthropic.com/). +Посмотрите, как [Bolt использует AI SDK](https://github.com/stackblitz/bolt.new/tree/main/app/lib/.server/llm) + +## Предварительные условия + +Прежде чем начать, убедитесь, что у вас установлено следующее: + +- Node.js (v20.15.1) +- pnpm (v9.4.0) + +## Настраивать + +1. Клонируйте репозиторий (если вы еще этого не сделали): + +```bash +git clone https://github.com/stackblitz/bolt.new.git +``` + +2. Установите зависимости: + +```bash +pnpm install +``` + +3. Создайте файл `.env.local` в корневом каталоге и добавьте в него свой ключ API Anthropic: + +``` +ANTHROPIC_API_KEY=XXX +``` + +При желании можно установить уровень отладки: + +``` +VITE_LOG_LEVEL=debug +``` + +**Важно**: Никогда не добавляйте файл `.env.local` в систему контроля версий. Он уже включен в файл `.gitignore`. + +## Доступные скрипты + +- `pnpm run dev`: Запускает сервер разработки. +- `pnpm run build`: Выполняет сборку проекта. +- `pnpm run start`: Запускает собранное приложение локально с помощью Wrangler Pages. Этот скрипт использует `bindings.sh` для настройки необходимых привязок, чтобы вам не приходилось дублировать переменные окружения. +- `pnpm run preview`: Собирает проект, а затем запускает его локально, что полезно для тестирования производственной сборки. Обратите внимание, что потоковая передача HTTP в настоящее время работает некорректно с `wrangler pages dev`. +- `pnpm test`: Запускает набор тестов с помощью Vitest. +- `pnpm run typecheck`: Выполняет проверку типов TypeScript. +- `pnpm run typegen`: Генерирует типы TypeScript с помощью Wrangler. +- `pnpm run deploy`: Собирает проект и развертывает его на Cloudflare Pages. + +## Разработка + +Для запуска сервера разработки: + +```bash +pnpm run dev +``` + +Это запустит сервер разработки Remix Vite. + +## Тестирование + +Запустите набор тестов с помощью: + +```bash +тест pnpm +``` + +## Развертывание + +Для развертывания приложения на Cloudflare Pages: + +```bash +pnpm run deploy +``` + +Убедитесь, что у вас есть необходимые разрешения и Wrangler правильно настроен для вашей учетной записи Cloudflare.