Skip to content

Latest commit

 

History

History
210 lines (153 loc) · 8.76 KB

File metadata and controls

210 lines (153 loc) · 8.76 KB

Read

Ниже — пояснение содержимого README.md на русском языке.


Название и назначение проекта

Файл начинается с заголовка проекта и краткого описания его сути:

# DailyCodeDeploy — Starter (demo)

This is a minimal starter repo for the "DailyCodeDeploy" idea: a subscription-backed CI/CD service skeleton. It provides a simple subscribe endpoint that persists to a local JSON file. If you configure Stripe keys, it will attempt to create real Stripe customers/subscriptions.

【F:README.md†L2-L4】

Перевод и пояснение
Это минимальный шаблон (стартер) для проекта «DailyCodeDeploy» — демонстрация каркаса сервиса CI/CD с платной подпиской. В нём есть простой HTTP‑эндпоинт для «подписки» пользователей, который сохраняет данные локально в JSON. При настройке Stripe он может создавать реальных клиентов и подписки.


Быстрый старт (локально)

## Quick start (local)

1. Create .env from the example:
   cp backend/.env.example backend/.env
   # edit backend/.env to add STRIPE_SECRET_KEY if you want real Stripe

2. Install dependencies:
   cd /workspaces/daily-code-deploy
   npm install
   cd backend && npm install
   # frontend is static (no build) so no deps required

3. Start the app:
   node backend/server.js
   # or from project root:
   npm start

4. Open the demo page:
   http://localhost:5000

【F:README.md†L6-L24】

Перевод и пояснение

  1. Скопировать шаблон окружения и при необходимости внести ключи Stripe.
  2. Установить зависимости в корне и в папке backend (фронтенд статический, сборка не требуется).
  3. Запустить сервер (командой node backend/server.js или npm start из корня).
  4. Открыть в браузере http://localhost:5000.

Заметки для разработчика

## Dev notes
- In mock mode (no STRIPE_SECRET_KEY), POST /api/subscribe stores a user in backend/data/users.json.
- List users: GET /api/users
- To enable real Stripe flows: set STRIPE_SECRET_KEY and STRIPE_PRICE_ID in backend/.env and restart.

【F:README.md†L26-L29】

Перевод и пояснение

  • В «мок‑режиме» (без STRIPE_SECRET_KEY) подписка сохраняется в файл users.json.
  • Получить список пользователей: GET /api/users.
  • Для работы с реальными платежами задать STRIPE_SECRET_KEY и STRIPE_PRICE_ID в .env и перезапустить сервис.

Тестирование с помощью curl

## Test with curl

curl -s -X POST http://localhost:5000/api/subscribe -H "Content-Type: application/json" -d '{"email":"alice@example.com"}' curl -s http://localhost:5000/api/users

【F:README.md†L31-L35】

Перевод и пояснение
Примеры команд curl для отправки запроса на подписку и получения списка пользователей.


Runner (очередь + воркер)

## Runner (queue + worker)

This starter includes a minimal CI runner using BullMQ + Redis.

### Local (no Docker)
1) Start Redis (Docker required for this step):
   docker run --rm -p 6379:6379 redis:7-alpine

2) Start API and Runner in separate terminals:
   # Terminal A
   npm start
   # Terminal B
   npm --prefix backend run runner
   # or: cd backend && npm run runner

3) Enqueue a demo job:
   curl -s -X POST http://localhost:5000/api/pipeline/run \
     -H "Content-Type: application/json" \
     -d '{"steps":["echo hi","node -v","npm -v"]}'

4) Poll status & logs:
   curl -s http://localhost:5000/api/pipeline/job/<JOB_ID>
   curl -s http://localhost:5000/api/pipeline/logs/<JOB_ID>

【F:README.md†L37-L59】

Перевод и пояснение
Встроен простой CI‑раннер на основе BullMQ + Redis:

  • Локально (без Docker) запускается Redis через Docker, затем API и воркер в разных терминалах.
  • Далее через curl ставится демонстрационная задача (pipeline), а статус и логи опрашиваются по ID задачи.

Запуск через Docker Compose

### With Docker Compose
1) docker compose up --build
2) Open http://localhost:5000 → click “Run pipeline” or use curl as above.

【F:README.md†L61-L63】

Перевод и пояснение
Альтернативный способ: собрать и запустить всё через docker compose up --build, после чего открыть веб‑интерфейс.


Клонирование репозитория

### Cloning a repo
- If you’re logged in with GitHub (via the landing page → Login with GitHub), enter owner/name and optional branch, then “Run pipeline”. Private repos require stored OAuth token (already saved after login).
- Public repos work without login if the repo is public.

【F:README.md†L65-L67】

Перевод и пояснение
Через веб‑интерфейс можно запустить pipeline для любого GitHub‑репозитория. Для приватных нужен OAuth‑токен, для публичных работает без авторизации.


Замечания по безопасности и логам

### Notes
- This is a demo runner; it executes shell commands provided by the request. In production, lock this down:
  - Only run whitelisted steps defined in per-repo config.
  - Sandbox job execution (ephemeral containers, user namespaces).
  - Resource limits and timeouts.
- Logs are written to backend/tmp/jobs/<jobId>/log.txt

【F:README.md†L69-L74】

Перевод и пояснение
В текущем виде раннер выполняет любые присланные команды, поэтому в продакшене нужно:

  1. Фильтровать разрешённые шаги.
  2. Изолировать выполнение (контейнеры/неймспейсы).
  3. Задавать ограничения ресурсов и таймауты.
  4. Логи хранятся по пути backend/tmp/jobs/<jobId>/log.txt.

Рекомендованные дальнейшие шаги

## Next steps (recommended)
- Add GitHub webhooks for push-triggered builds.
- Replace local storage with a durable DB (Postgres/Mongo).
- Implement user dashboards, pipeline history, and billing analytics.
- Add referral program and marketing landing page.

【F:README.md†L76-L80】

Перевод и пояснение
Предложения по развитию проекта:

  • Вебхуки GitHub для автоматических сборок.
  • Хранение данных в СУБД (Postgres, Mongo).
  • Дашборды пользователей, история pipeline, аналитика биллинга.
  • Реферальная программа и маркетинговая лендинг‑страница.

Замечания по монетизации

## Monetization note
- If you price at $10/month, to hit $100/day (~$3k/month), you need ~300 paying monthly subscribers. Consider enterprise plans, add-ons, or usage-based billing to increase ARPU and reduce required user count.

【F:README.md†L82-L83】

Перевод и пояснение
При цене $10 в месяц для дохода $100 в день (~$3 000/месяц) требуется около 300 подписчиков. Рекомендуется рассмотреть корпоративные планы, доп. функции или тарификацию по потреблению для повышения выручки на одного пользователя (ARPU).


Таким образом, README.md подробно описывает установку, работу демо‑сервисов подписки и CI‑раннера, а также даёт рекомендации по безопасности, будущему развитию и монетизации.