
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
📚 Complete Documentation:
ArchiCore - это интеллектуальная платформа для анализа и управления архитектурой программного обеспечения, построенная на основе AI. Система понимает код на глубоком семантическом уровне, отслеживает все зависимости и помогает принимать обоснованные архитектурные решения.
Проблема: В больших проектах разработчики часто вносят изменения, не понимая полного влияния на систему. Это приводит к багам, техническому долгу и архитектурной деградации.
Решение: ArchiCore анализирует весь код, строит граф зависимостей, использует семантическую память и AI для предсказания влияния изменений, выявления рисков и генерации рекомендаций.
ArchiCore построен по принципам чистой архитектуры с четким разделением слоев:
┌─────────────────────────────────────────────────────────────────┐
│ Web Dashboard │
│ (React/Vue-like SPA - public/*.html) │
│ - Project Management - Analytics - Settings - Admin Panel │
└─────────────────────────────────────────────────────────────────┘
↓ HTTPS/API
┌─────────────────────────────────────────────────────────────────┐
│ API Gateway (Express 5) │
│ OAuth, JWT Auth, Rate Limiting, CORS, Helmet, Audit Logging │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────┼─────────────────────┐
↓ ↓ ↓
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Authentication │ │ Project Core │ │ Analysis Engine │
│ - OAuth 2.0 │ │ - Code Indexing │ │ - Impact Analysis│
│ - Email Verify │ │ - AST Parsing │ │ - Risk Assessment│
│ - Device Flow │ │ - Dependency Gr.│ │ - Recommendations│
│ - API Keys │ │ - Metrics │ │ - Dead Code Det. │
└──────────────────┘ └──────────────────┘ └──────────────────┘
↓ ↓ ↓
┌─────────────────────────────────────────────────────────────────┐
│ Semantic Memory Layer │
│ - Vector Embeddings (Jina AI) - Semantic Search (Qdrant) │
│ - Code Similarity - Natural Language Queries │
└─────────────────────────────────────────────────────────────────┘
↓ ↓ ↓
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ PostgreSQL │ │ Redis │ │ Qdrant │
│ - Users, Auth │ │ - Cache Layer │ │ - Vector Store │
│ - Projects │ │ - Sessions │ │ - Embeddings │
│ - Audit Logs │ │ - Rate Limits │ │ - Similarity │
└──────────────────┘ └──────────────────┘ └──────────────────┘
↓ ↓ ↓
┌─────────────────────────────────────────────────────────────────┐
│ AI Orchestration Layer │
│ - Claude (Anthropic) - GPT (OpenAI) - DeepSeek (Budget) │
│ - Context Management - Prompt Optimization - Response Caching │
└─────────────────────────────────────────────────────────────────┘
60+ языков через Tree-sitter AST parsing и regex-based analysis:
JavaScript/TypeScript Ecosystem: TypeScript, JavaScript, JSX/TSX, Vue.js, Svelte, Astro Systems Programming: Go, Rust, Zig, Nim, C, C++ JVM Languages: Java, Kotlin, Scala, Groovy, Clojure .NET Languages: C#, F#, Visual Basic Web/Scripting: PHP, Ruby, Perl, Lua Mobile: Swift, Dart/Flutter, Objective-C Functional: Haskell, OCaml, Erlang, Elixir, Julia, R Other: Python, Crystal Markup/Styles: HTML, CSS, SCSS, Sass, Less, Stylus, XML Data Formats: JSON, YAML, TOML, INI Database: SQL, Prisma, GraphQL Infrastructure: Terraform, Protobuf, Docker, Makefile, CMake Shell: Bash, Zsh, PowerShell, Batch Documentation: Markdown, reStructuredText
📖 Complete Language Support Matrix →
git clone https://github.com/yourusername/archicore.git
cd archicore
npm install
cp .env.example .env
Заполните .env своими ключами:
# Server
PORT=3000
NODE_ENV=production
BASE_URL=http://localhost:3000
# Database
DATABASE_URL=postgresql://postgres:password@localhost:5432/archicore
# Redis
REDIS_URL=redis://localhost:6379
# Qdrant Vector DB
QDRANT_URL=http://localhost:6333
# AI Providers (выберите один или несколько)
ANTHROPIC_API_KEY=sk-ant-xxx # Рекомендуется для production
OPENAI_API_KEY=sk-xxx # Альтернатива
DEEPSEEK_API_KEY=sk-xxx # Бюджетный вариант
JINA_API_KEY=jina_xxx # Для embeddings
# OAuth (опционально)
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxx
GITHUB_CLIENT_ID=xxx
GITHUB_CLIENT_SECRET=xxx
# Email (для verification)
ZOHO_SMTP_USER=noreply@archicore.io
ZOHO_SMTP_PASS=xxx
EMAIL_FROM_ADDRESS=noreply@archicore.io
EMAIL_FROM_NAME=ArchiCore
# Security
JWT_SECRET=your-super-secret-jwt-key-change-this
ENCRYPTION_KEY=your-32-char-encryption-key-here
SESSION_SECRET=your-session-secret-change-this
# Admin
ADMIN_EMAIL=admin@archicore.io
# Запустить все сервисы (PostgreSQL, Redis, Qdrant, ArchiCore)
docker compose up -d
# Проверить логи
docker compose logs -f archicore
ArchiCore будет доступен на:
# Запустить PostgreSQL
docker run -d --name postgres -p 5432:5432 \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=archicore \
postgres:15
# Запустить Redis
docker run -d --name redis -p 6379:6379 redis:7
# Запустить Qdrant
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant
# Собрать проект
npm run build
# Запустить ArchiCore
npm start
Откройте браузер: http://localhost:3000
Рекомендуется для production. Все сервисы в контейнерах.
# 1. Клонировать репозиторий
git clone https://github.com/yourusername/archicore.git
cd archicore
# 2. Настроить .env
cp .env.example .env
nano .env # Заполнить все ключи
# 3. Собрать и запустить
docker compose build
docker compose up -d
# 4. Проверить статус
docker compose ps
# 5. Просмотр логов
docker compose logs -f archicore
# 6. Остановить
docker compose down
Docker Compose включает:
Для локальной разработки без Docker.
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# macOS (Homebrew)
brew install node@18
# Windows
# Download from https://nodejs.org/
PostgreSQL:
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib
# macOS
brew install postgresql@15
brew services start postgresql@15
# Windows
# Download from https://www.postgresql.org/download/windows/
Redis:
# Ubuntu/Debian
sudo apt install redis-server
sudo systemctl start redis
# macOS
brew install redis
brew services start redis
# Windows
# Download from https://github.com/microsoftarchive/redis/releases
Qdrant:
# Через Docker (рекомендуется)
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant
# Или скачать binary
./start-qdrant.sh # Linux/Mac
start-qdrant.bat # Windows
# Создать базу данных
createdb archicore
# Или через psql
psql -U postgres
CREATE DATABASE archicore;
\q
# Клонировать и установить зависимости
git clone https://github.com/yourusername/archicore.git
cd archicore
npm install
# Настроить .env
cp .env.example .env
nano .env
# Собрать проект
npm run build
# Запустить
npm start
# Проверить доступность API
curl http://localhost:3000/health
# Должен вернуть:
# {"status":"ok","version":"0.3.1"}
Установить ArchiCore CLI глобально:
npm install -g archicore
# Авторизоваться
archicore login
# Начать использование
archicore projects list
ArchiCore предоставляет три способа взаимодействия: Web Dashboard, CLI Tool и REST API.
/)Главная страница с описанием продукта, ценами и возможностями.
Features:
/auth)Страница входа/регистрации.
Login:
1. Email + Password
2. OAuth (Google / GitHub)
Sign Up:
1. Enter email + password
2. Verify email (6-digit code sent via SMTP)
3. Automatic login after verification
Features:
/dashboard)Главный рабочий интерфейс после авторизации.
Sections:
Projects:
Project Actions:
├── Index Project - Анализ кода и построение графа
├── Full Analysis - Полный отчет (metrics, security, duplication, dead code)
├── Security Analysis - Проверка уязвимостей
├── Dead Code Detection - Поиск неиспользуемого кода
├── Code Duplication - Поиск дублирования
├── Metrics Report - Code metrics (complexity, LOC, maintainability)
├── Refactoring Suggestions - AI рекомендации
└── Export Data - JSON/HTML/Markdown/CSV
Code Search:
AI Architect:
Account Section:
/pricing)Тарифные планы с подробным описанием.
Plans:
| Feature | Free | Team | Pro | Enterprise |
|---|---|---|---|---|
| Price | $0 | $249/mo | $599/mo | Custom |
| Repositories | 1 | 3 | 10 | Unlimited |
| Developers | 1 | 5 | 20 | Unlimited |
| Analysis | Snapshot | Regular | PR-level | Continuous |
| API Access | ❌ | ❌ | ✅ | ✅ |
| GitHub/GitLab Integration | ❌ | ❌ | ✅ | ✅ |
| Data Retention | 7 days | 14 days | 30 days | Custom |
| Support | Community | Priority | Dedicated manager |
/admin)Панель администратора (только для admin role).
Features:
/privacy.html)/terms.html)/security.html)ArchiCore CLI - мощный инструмент для автоматизации и CI/CD интеграции.
# Установить глобально
npm install -g archicore
# Или использовать локально
npx archicore [command]
# Device Flow (открывает браузер для авторизации)
archicore login
# Введите код из терминала на странице авторизации
# После успеха токен сохраняется в ~/.archicore/config.json
# Список проектов
archicore projects list
# Создать проект
archicore projects create --name "My App" --github "https://github.com/user/repo"
# Выбрать активный проект
archicore projects select
# Удалить проект
archicore projects delete --id abc123
# Индексировать проект (AST + граф зависимостей)
archicore index --dir /path/to/project
# Полный анализ
archicore full-analysis
# Анализ безопасности
archicore security
# Поиск мертвого кода
archicore dead-code
# Метрики кода
archicore metrics
# Дублирование кода
archicore duplication
# Рефакторинг рекомендации
archicore refactoring
# Поиск по смыслу
archicore search --query "функции валидации email" --limit 10
# Результат:
# 🔍 RESULTS:
#
# 1. src/utils/validators.ts:45 (relevance: 94.2%)
# export function validateEmail(email: string): boolean {
#
# 2. src/auth/email-validator.ts:12 (relevance: 89.7%)
# class EmailValidator {
# Задать вопрос
archicore ask --question "Как организована работа с платежами?"
# Анализ изменений
archicore analyze \
--description "Добавить новый метод оплаты" \
--files "src/payments/processor.ts" \
--type "feature"
# Результат:
# ⚠️ AFFECTED COMPONENTS: 23
# 🔴 CRITICAL: 5
# 🟠 HIGH: 11
# 🟡 MEDIUM: 7
#
# RISKS:
# [HIGH] Breaking change in PaymentProcessor interface
# [MEDIUM] New dependencies added to payment flow
#
# RECOMMENDATIONS:
# ✅ Add backward compatibility wrapper
# ✅ Update API documentation
# ✅ Write integration tests for new method
# Экспорт результатов анализа
archicore export --format json --output analysis.json
archicore export --format html --output report.html
archicore export --format markdown --output ANALYSIS.md
archicore export --format csv --output metrics.csv
# Интерактивный режим с autocomplete
archicore chat
# Внутри появится меню команд:
# > /help - Показать доступные команды
# > /search - Семантический поиск
# > /ask - Вопрос AI архитектору
# > /analyze - Анализ изменений
# > /metrics - Метрики проекта
# > /exit - Выход
📖 Complete CLI Documentation →
Полное REST API для интеграции с CI/CD, webhooks, custom tools.
Production: https://api.archicore.io
Development: http://localhost:3000/api
JWT Token:
# Login
curl -X POST https://api.archicore.io/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"secret"}'
# Response:
# {"success":true,"token":"eyJhbGc...","user":{...}}
# Use token in requests
curl -H "Authorization: Bearer eyJhbGc..." \
https://api.archicore.io/projects
API Key:
# Create API key (через dashboard /developer)
curl -X POST https://api.archicore.io/developer/keys \
-H "Authorization: Bearer YOUR_JWT" \
-d '{"name":"CI/CD Key","expiresInDays":365}'
# Use API key
curl -H "X-API-Key: ak_xxx" \
https://api.archicore.io/projects
Authentication:
POST /api/auth/register - Регистрация
POST /api/auth/login - Вход
POST /api/auth/logout - Выход
GET /api/auth/me - Текущий пользователь
GET /api/auth/usage - Статистика использования
POST /api/auth/send-verification-code - Отправить код верификации
POST /api/auth/verify-email - Подтвердить email
OAuth:
GET /api/auth/oauth/google - Начать Google OAuth
GET /api/auth/oauth/google/callback - Google callback
GET /api/auth/oauth/github - Начать GitHub OAuth
GET /api/auth/oauth/github/callback - GitHub callback
Device Flow (CLI):
POST /api/auth/device/code - Получить device code
POST /api/auth/device/token - Обменять код на токен
GET /api/auth/device/verify/:code - Проверить код
POST /api/auth/device/authorize - Авторизовать устройство
Projects:
GET /api/projects - Список проектов
POST /api/projects - Создать проект
GET /api/projects/:id - Получить проект
PUT /api/projects/:id - Обновить проект
DELETE /api/projects/:id - Удалить проект
POST /api/projects/:id/index - Индексировать код
GET /api/projects/:id/architecture - Архитектурная информация
GET /api/projects/:id/graph - Граф зависимостей
GET /api/projects/:id/metrics - Метрики кода
Analysis:
POST /api/analyze/impact - Анализ влияния изменений
POST /api/analyze/security - Анализ безопасности
POST /api/analyze/full - Полный анализ
POST /api/analyze/dead-code - Мертвый код
POST /api/analyze/duplication - Дублирование
POST /api/analyze/refactoring - Рекомендации по рефакторингу
AI:
POST /api/ai/search - Семантический поиск
POST /api/ai/ask - Вопрос AI архитектору
POST /api/ai/simulate - Симуляция изменений
GitHub:
GET /api/github/auth - GitHub OAuth
GET /api/github/callback - GitHub callback
GET /api/github/repositories - Список репозиториев
POST /api/github/webhooks - Создать webhook
Admin:
GET /api/admin/users - Список пользователей
PUT /api/admin/users/:id/tier - Изменить tier
GET /api/admin/stats - Статистика системы
GET /api/admin/audit-logs - Аудит логи
GET /api/admin/settings - Настройки системы
POST /api/admin/settings - Обновить настройки
POST /api/admin/test-email - Тест email
POST /api/admin/maintenance - Включить maintenance mode
GET /api/admin/export/all - Экспорт всех данных
Developer:
GET /api/developer/keys - Список API ключей
POST /api/developer/keys - Создать API ключ
DELETE /api/developer/keys/:id - Удалить API ключ
POST /api/developer/keys/:id/revoke - Отозвать API ключ
Upload & Utilities:
POST /api/upload - Загрузить файлы проекта
POST /api/report-issue - Отправить bug report
GET /api/tasks/:taskId - Статус задачи
GET /api/tasks/:taskId/stream - WebSocket progress updates
📖 Complete API Documentation →
curl -X POST https://api.archicore.io/analyze/impact \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"projectId": "proj_abc123",
"change": {
"type": "modify",
"description": "Рефакторинг AuthService",
"files": ["src/services/auth-service.ts"],
"symbols": ["AuthService", "login", "register"]
}
}'
Response:
{
"success": true,
"impact": {
"affectedNodes": [
{
"id": "AuthController",
"file": "src/controllers/auth.ts",
"severity": "critical",
"reason": "Direct dependency on modified AuthService"
},
{
"id": "UserService",
"file": "src/services/user-service.ts",
"severity": "high",
"reason": "Calls AuthService.login()"
}
],
"risks": [
{
"severity": "high",
"message": "Breaking change in public API",
"recommendation": "Add deprecation warnings before removing methods"
}
],
"recommendations": [
"Review 15 affected components",
"Add integration tests for auth flow",
"Update API documentation"
],
"summary": {
"total": 15,
"critical": 3,
"high": 7,
"medium": 4,
"low": 1
}
}
}
ArchiCore реализует многоуровневую систему безопасности корпоративного уровня.
Registration Flow:
1. User submits email + password
2. System checks disposable email (180+ blocked domains)
3. Sends 6-digit verification code via SMTP (Zoho)
4. User enters code (10-minute expiry)
5. Password hashed with bcrypt (10 rounds)
6. User created, JWT token issued
7. Welcome email sent
Login Flow:
1. User submits email + password
2. Password verified with bcrypt
3. JWT token issued (24h expiry)
4. Refresh token stored in DB (30d expiry)
5. Audit log created
Flow:
1. User clicks "Continue with Google/GitHub"
2. Redirected to provider authorization page
3. User grants permissions
4. Provider redirects to /callback with code
5. ArchiCore exchanges code for access token
6. Fetches user profile (email, name, avatar)
7. Creates user if first login OR logs in existing
8. JWT token issued
9. Redirected to dashboard with token in URL
10. Frontend saves token to localStorage
Implemented Providers:
Flow for CLI authentication:
1. CLI requests device code: POST /api/auth/device/code
2. Server returns: {device_code, user_code, verification_url}
3. CLI displays: "Go to https://archicore.io/auth/device and enter: ABCD-1234"
4. User opens browser, enters code
5. User authorizes device
6. CLI polls: POST /api/auth/device/token with device_code
7. On success, receives JWT token
8. Token saved to ~/.archicore/config.json
For programmatic access:
1. User creates API key via dashboard (/developer)
2. Key format: ak_xxxxxxxxxxxxxxxxxx (40 chars)
3. Key stored hashed in database
4. Use in requests: X-API-Key: ak_xxx
5. Keys can be revoked or deleted
6. Supports expiration (optional)
All actions logged:
Log fields:
Полный список переменных окружения:
# ═══════════════════════════════════════════════════════════
# SERVER CONFIGURATION
# ═══════════════════════════════════════════════════════════
PORT=3000
NODE_ENV=production
BASE_URL=https://archicore.io
# ═══════════════════════════════════════════════════════════
# DATABASE
# ═══════════════════════════════════════════════════════════
DATABASE_URL=postgresql://user:password@localhost:5432/archicore
DATABASE_POOL_MIN=2
DATABASE_POOL_MAX=20
# ═══════════════════════════════════════════════════════════
# REDIS CACHE
# ═══════════════════════════════════════════════════════════
REDIS_URL=redis://localhost:6379
REDIS_PASSWORD=
REDIS_DB=0
# ═══════════════════════════════════════════════════════════
# QDRANT VECTOR DATABASE
# ═══════════════════════════════════════════════════════════
QDRANT_URL=http://localhost:6333
QDRANT_API_KEY=
QDRANT_COLLECTION_NAME=archicore
# ═══════════════════════════════════════════════════════════
# AI PROVIDERS
# ═══════════════════════════════════════════════════════════
# Anthropic Claude (Рекомендуется)
ANTHROPIC_API_KEY=sk-ant-api03-xxx
ANTHROPIC_MODEL=claude-sonnet-4-20250514
# Доступные модели:
# - claude-opus-4-20250514 (самый умный, дорогой)
# - claude-sonnet-4-20250514 (баланс качество/цена) ⭐
# - claude-haiku-4-20250514 (быстрый, дешевый)
# OpenAI GPT
OPENAI_API_KEY=sk-xxx
OPENAI_MODEL=gpt-4-turbo-preview
# Доступные модели:
# - gpt-4-turbo-preview (новый GPT-4 Turbo)
# - gpt-4 (стандартный GPT-4)
# - gpt-3.5-turbo (быстрый, дешевый)
# DeepSeek (Бюджетный вариант)
DEEPSEEK_API_KEY=sk-xxx
DEEPSEEK_MODEL=deepseek-chat
# Доступные модели:
# - deepseek-chat (общего назначения)
# - deepseek-coder (для кода) ⭐
# Jina AI (Embeddings)
JINA_API_KEY=jina_xxx
JINA_MODEL=jina-embeddings-v2-base-code
# ═══════════════════════════════════════════════════════════
# OAUTH PROVIDERS
# ═══════════════════════════════════════════════════════════
# Google OAuth 2.0
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxx
GOOGLE_CALLBACK_URL=https://archicore.io/api/auth/oauth/google/callback
# GitHub OAuth
GITHUB_CLIENT_ID=xxx
GITHUB_CLIENT_SECRET=xxx
GITHUB_CALLBACK_URL=https://archicore.io/api/auth/oauth/github/callback
# ═══════════════════════════════════════════════════════════
# EMAIL (SMTP)
# ═══════════════════════════════════════════════════════════
SMTP_HOST=smtp.zoho.com
SMTP_PORT=587
SMTP_SECURE=false
ZOHO_SMTP_USER=noreply@archicore.io
ZOHO_SMTP_PASS=xxx
EMAIL_FROM_ADDRESS=noreply@archicore.io
EMAIL_FROM_NAME=ArchiCore
# ═══════════════════════════════════════════════════════════
# SECURITY
# ═══════════════════════════════════════════════════════════
JWT_SECRET=your-super-secret-jwt-key-min-32-chars
JWT_EXPIRY=24h
ENCRYPTION_KEY=your-32-character-encryption-key
SESSION_SECRET=your-session-secret-min-32-chars
# CORS
CORS_ORIGIN=https://archicore.io,https://app.archicore.io
CORS_CREDENTIALS=true
# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
# ═══════════════════════════════════════════════════════════
# ADMIN
# ═══════════════════════════════════════════════════════════
ADMIN_EMAIL=admin@archicore.io
ADMIN_PASSWORD=change-this-in-production
# ═══════════════════════════════════════════════════════════
# FEATURES (Optional)
# ═══════════════════════════════════════════════════════════
ENABLE_GITHUB_INTEGRATION=true
ENABLE_WEBHOOKS=true
ENABLE_METRICS=true
ENABLE_ANALYTICS=true
# ═══════════════════════════════════════════════════════════
# LOGGING
# ═══════════════════════════════════════════════════════════
LOG_LEVEL=info
# Levels: error, warn, info, debug, trace
LOG_FORMAT=json
# Formats: json, pretty
Файл .archicore/architecture.json для определения правил архитектуры:
{
"boundedContexts": [
{
"id": "auth",
"name": "Authentication Context",
"description": "User authentication and authorization",
"modules": ["src/server/routes/auth.ts", "src/server/services/auth-service.ts"],
"dependencies": [],
"prohibitedDependencies": ["src/ui", "src/business-logic"]
},
{
"id": "core",
"name": "Core Business Logic",
"description": "Main business domain",
"modules": ["src/core"],
"dependencies": ["auth"],
"prohibitedDependencies": ["src/infrastructure"]
}
],
"entities": [
{
"id": "user",
"name": "User",
"context": "auth",
"properties": ["id", "email", "username", "role"],
"relationships": [
{"entity": "project", "type": "one-to-many"}
],
"invariants": [
"email must be unique",
"email must be verified before login"
]
}
],
"rules": [
{
"id": "no-circular-deps",
"description": "No circular dependencies allowed",
"severity": "error",
"check": "circular-dependencies"
},
{
"id": "layer-separation",
"description": "UI layer cannot depend on database layer",
"severity": "error",
"check": "layer-violation",
"config": {
"layers": ["ui", "business", "data"],
"allowedDependencies": {
"ui": ["business"],
"business": ["data"],
"data": []
}
}
}
],
"invariants": [
"All API endpoints must have rate limiting",
"All user actions must be logged in audit",
"Passwords must be hashed with bcrypt"
]
}
Пример production docker-compose.yml:
version: '3.9'
services:
# ArchiCore Application
archicore:
build: .
container_name: archicore
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://postgres:${DB_PASSWORD}@postgres:5432/archicore
- REDIS_URL=redis://redis:6379
- QDRANT_URL=http://qdrant:6333
env_file:
- .env
depends_on:
- postgres
- redis
- qdrant
volumes:
- ./data:/app/data
networks:
- archicore-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
# PostgreSQL Database
postgres:
image: postgres:15-alpine
container_name: archicore-postgres
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=archicore
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- archicore-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
# Redis Cache
redis:
image: redis:7-alpine
container_name: archicore-redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis-data:/data
networks:
- archicore-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
# Qdrant Vector Database
qdrant:
image: qdrant/qdrant:latest
container_name: archicore-qdrant
restart: unless-stopped
volumes:
- qdrant-data:/qdrant/storage
networks:
- archicore-network
healthcheck:
test: ["CMD-SHELL", "timeout 1 bash -c '</dev/tcp/localhost/6333'"]
interval: 10s
timeout: 5s
retries: 3
# Nginx Reverse Proxy (Optional)
nginx:
image: nginx:alpine
container_name: archicore-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- archicore
networks:
- archicore-network
volumes:
postgres-data:
redis-data:
qdrant-data:
networks:
archicore-network:
driver: bridge
Полная инструкция для deployment на production сервер.
# Обновить систему
sudo apt update && sudo apt upgrade -y
# Установить Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Установить Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Установить Nginx
sudo apt install nginx -y
# Установить Certbot (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx -y
# Клонировать репозиторий
cd /opt
sudo git clone https://github.com/yourusername/archicore.git
cd archicore
# Создать .env
sudo cp .env.example .env
sudo nano .env # Заполнить production значения
# Установить правильные permissions
sudo chown -R $USER:$USER /opt/archicore
# Получить SSL сертификат
sudo certbot --nginx -d archicore.io -d www.archicore.io -d api.archicore.io -d docs.archicore.io
# Auto-renewal настроен автоматически через systemd timer
# Проверить:
sudo systemctl status certbot.timer
# Создать конфиг
sudo nano /etc/nginx/sites-available/archicore
# Вставить:
# Main app (archicore.io)
server {
listen 443 ssl http2;
server_name archicore.io www.archicore.io;
ssl_certificate /etc/letsencrypt/live/archicore.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/archicore.io/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
# API subdomain (api.archicore.io)
server {
listen 443 ssl http2;
server_name api.archicore.io;
ssl_certificate /etc/letsencrypt/live/archicore.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/archicore.io/privkey.pem;
location / {
proxy_pass http://localhost:3000/api;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# Redirect HTTP to HTTPS
server {
listen 80;
server_name archicore.io www.archicore.io api.archicore.io;
return 301 https://$host$request_uri;
}
# Включить сайт
sudo ln -s /etc/nginx/sites-available/archicore /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
cd /opt/archicore
# Собрать образы
sudo docker compose build
# Запустить все сервисы
sudo docker compose up -d
# Проверить статус
sudo docker compose ps
sudo docker compose logs -f archicore
Для автоматического запуска при перезагрузке:
sudo nano /etc/systemd/system/archicore.service
[Unit]
Description=ArchiCore Application
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/archicore
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
sudo systemctl enable archicore
sudo systemctl start archicore
# Просмотр логов
sudo docker compose logs -f archicore
sudo docker compose logs -f postgres
sudo docker compose logs -f redis
# Статус контейнеров
sudo docker compose ps
# Использование ресурсов
sudo docker stats
# Nginx access log
sudo tail -f /var/log/nginx/access.log
# Nginx error log
sudo tail -f /var/log/nginx/error.log
# Создать backup скрипт
sudo nano /opt/archicore/backup.sh
#!/bin/bash
BACKUP_DIR=/opt/backups/archicore
DATE=$(date +%Y%m%d_%H%M%S)
# Создать директорию
mkdir -p $BACKUP_DIR
# Backup PostgreSQL
docker exec archicore-postgres pg_dump -U postgres archicore | gzip > $BACKUP_DIR/postgres_$DATE.sql.gz
# Backup Redis
docker exec archicore-redis redis-cli BGSAVE
docker cp archicore-redis:/data/dump.rdb $BACKUP_DIR/redis_$DATE.rdb
# Backup Qdrant
docker cp archicore-qdrant:/qdrant/storage $BACKUP_DIR/qdrant_$DATE
# Удалить старые бэкапы (>30 дней)
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete
echo "Backup completed: $DATE"
# Сделать исполняемым
sudo chmod +x /opt/archicore/backup.sh
# Добавить в cron (ежедневно в 2 AM)
sudo crontab -e
0 2 * * * /opt/archicore/backup.sh >> /var/log/archicore-backup.log 2>&1
# Обновление ArchiCore до новой версии
cd /opt/archicore
sudo git pull origin main
sudo docker compose build
sudo docker compose up -d
# Откатиться к предыдущей версии при проблемах
sudo git log --oneline # Найти хеш коммита
sudo git checkout <commit-hash>
sudo docker compose build
sudo docker compose up -d
Пример .gitlab-ci.yml:
stages:
- test
- build
- deploy
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
# Run tests
test:
stage: test
image: node:18
cache:
paths:
- node_modules/
script:
- npm ci
- npm run lint
- npm run test # Когда тесты будут написаны
only:
- merge_requests
- main
# Build Docker image
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
- docker build -t $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
only:
- main
# Deploy to production
deploy_production:
stage: deploy
image: alpine:latest
before_script:
- apk add --no-cache openssh-client
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $PRODUCTION_SERVER >> ~/.ssh/known_hosts
script:
- ssh $PRODUCTION_USER@$PRODUCTION_SERVER "cd /opt/archicore && git pull && docker compose pull && docker compose up -d"
only:
- main
when: manual
Регистрация нового пользователя.
Request:
{
"email": "user@example.com",
"password": "SecurePass123!",
"username": "johndoe"
}
Response (200):
{
"success": true,
"message": "Verification code sent to your email"
}
Errors:
400 - Invalid email/password, disposable email blocked409 - Email already existsПодтверждение email с verification code.
Request:
{
"email": "user@example.com",
"code": "123456"
}
Response (200):
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"username": "johndoe",
"role": "user",
"tier": "free",
"createdAt": "2026-01-17T10:00:00Z"
}
}
Errors:
400 - Invalid or expired code404 - Email not foundВход с email и паролем.
Request:
{
"email": "user@example.com",
"password": "SecurePass123!"
}
Response (200):
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"username": "johndoe",
"role": "user",
"tier": "pro",
"createdAt": "2026-01-17T10:00:00Z"
}
}
Errors:
401 - Invalid credentials403 - Email not verifiedПолучить список проектов пользователя.
Headers:
Authorization: Bearer <token>
Response (200):
{
"success": true,
"projects": [
{
"id": "proj_abc123",
"name": "E-commerce Platform",
"description": "Online store backend",
"githubUrl": "https://github.com/user/ecommerce",
"language": "TypeScript",
"filesCount": 243,
"linesOfCode": 15420,
"indexed": true,
"lastIndexed": "2026-01-17T12:00:00Z",
"createdAt": "2026-01-15T10:00:00Z"
}
]
}
Создать новый проект.
Request:
{
"name": "E-commerce Platform",
"description": "Online store backend",
"githubUrl": "https://github.com/user/ecommerce"
}
Response (201):
{
"success": true,
"project": {
"id": "proj_abc123",
"name": "E-commerce Platform",
"description": "Online store backend",
"githubUrl": "https://github.com/user/ecommerce",
"indexed": false,
"createdAt": "2026-01-17T12:00:00Z"
}
}
Индексировать код проекта.
Response (200):
{
"success": true,
"stats": {
"filesProcessed": 243,
"symbolsExtracted": 1854,
"graphNodes": 2107,
"graphEdges": 4523,
"vectorsCreated": 1854,
"languages": {
"TypeScript": 180,
"JavaScript": 45,
"JSON": 18
},
"symbols": {
"function": 892,
"class": 156,
"interface": 234,
"variable": 572
}
}
}
Анализ влияния изменений.
Request:
{
"projectId": "proj_abc123",
"change": {
"type": "modify",
"description": "Refactor payment service",
"files": ["src/services/payment-service.ts"],
"symbols": ["PaymentService", "processPayment"]
}
}
Response (200):
{
"success": true,
"impact": {
"affectedComponents": [
{
"id": "PaymentController",
"file": "src/controllers/payment.ts",
"line": 45,
"severity": "critical",
"reason": "Direct dependency on PaymentService"
},
{
"id": "OrderService",
"file": "src/services/order-service.ts",
"line": 120,
"severity": "high",
"reason": "Calls PaymentService.processPayment()"
}
],
"risks": [
{
"severity": "critical",
"message": "Breaking change in public API",
"recommendation": "Add deprecation warnings"
},
{
"severity": "high",
"message": "12 components depend on modified code",
"recommendation": "Review all affected components"
}
],
"recommendations": [
"Add integration tests for payment flow",
"Update API documentation",
"Notify team about breaking changes"
],
"summary": {
"total": 23,
"critical": 3,
"high": 12,
"medium": 6,
"low": 2
}
}
}
Анализ безопасности кода.
Response (200):
{
"success": true,
"findings": [
{
"severity": "critical",
"type": "SQL Injection",
"file": "src/database/users.ts",
"line": 45,
"message": "Unsanitized user input in SQL query",
"recommendation": "Use parameterized queries"
},
{
"severity": "high",
"type": "XSS Vulnerability",
"file": "src/views/profile.ts",
"line": 23,
"message": "Unescaped user content in HTML",
"recommendation": "Use proper HTML escaping"
}
],
"summary": {
"critical": 1,
"high": 3,
"medium": 7,
"low": 12,
"info": 5
}
}
Семантический поиск кода.
Request:
{
"projectId": "proj_abc123",
"query": "функции валидации email",
"limit": 5
}
Response (200):
{
"success": true,
"results": [
{
"file": "src/utils/validators.ts",
"line": 45,
"code": "export function validateEmail(email: string): boolean {",
"relevance": 0.942,
"context": "Email validation utility"
},
{
"file": "src/auth/email-validator.ts",
"line": 12,
"code": "class EmailValidator implements IValidator {",
"relevance": 0.897,
"context": "Authentication email validation"
}
]
}
Задать вопрос AI архитектору.
Request:
{
"projectId": "proj_abc123",
"question": "Как организована аутентификация в системе?"
}
Response (200):
{
"success": true,
"answer": "В системе используется многоуровневая аутентификация:\n\n1. **JWT Tokens** - основной механизм (src/auth/jwt.ts)\n2. **OAuth 2.0** - Google и GitHub (src/auth/oauth/)\n3. **Email Verification** - подтверждение через SMTP (src/auth/email-verify.ts)\n\nПоток аутентификации:\n- User → Email+Password OR OAuth\n- Verification code → Email\n- Code validation → JWT token\n- Token → Stored in localStorage\n- Requests → Authorization: Bearer <token>\n\nБезопасность:\n- Passwords: bcrypt (10 rounds)\n- Tokens: HS256, 24h expiry\n- Rate limiting: 5 attempts/15min",
"sources": [
{"file": "src/auth/jwt.ts", "relevance": 0.95},
{"file": "src/auth/oauth/google.ts", "relevance": 0.88},
{"file": "src/auth/email-verify.ts", "relevance": 0.91}
]
}
# Clone repository
git clone https://github.com/yourusername/archicore.git
cd archicore
# Install dependencies
npm install
# Start databases (Docker)
docker compose -f docker-compose.dev.yml up -d
# Copy env file
cp .env.example .env
# Fill in development keys
nano .env
# Start in development mode (with hot reload)
npm run dev
archicore/
├── public/ # Frontend (SPA-like vanilla JS)
│ ├── index.html # Dashboard
│ ├── auth.html # Authentication page
│ ├── pricing.html # Pricing page
│ ├── admin.html # Admin panel
│ ├── privacy.html # Privacy policy
│ ├── terms.html # Terms of service
│ └── assets/ # Static assets
├── src/
│ ├── server/ # Backend (Express)
│ │ ├── routes/ # API routes
│ │ │ ├── auth.ts # Authentication endpoints
│ │ │ ├── oauth.ts # OAuth flows
│ │ │ ├── projects.ts # Project management
│ │ │ ├── analyze.ts # Analysis endpoints
│ │ │ ├── ai.ts # AI endpoints
│ │ │ ├── admin.ts # Admin endpoints
│ │ │ └── developer.ts # API keys management
│ │ ├── services/ # Business logic
│ │ │ ├── auth-service.ts
│ │ │ ├── audit-service.ts
│ │ │ ├── database.ts
│ │ │ ├── email-service.ts
│ │ │ └── encryption.ts
│ │ ├── config/ # Configuration
│ │ │ └── passport.ts # OAuth strategies
│ │ └── middleware/ # Express middleware
│ ├── code-index/ # Code indexing engine
│ │ ├── index.ts # Main indexer
│ │ ├── ast-parser.ts # Tree-sitter parser
│ │ ├── symbol-extractor.ts
│ │ └── dependency-graph.ts
│ ├── semantic-memory/ # Vector DB layer
│ │ ├── index.ts
│ │ ├── embedding-service.ts # Jina AI
│ │ └── vector-store.ts # Qdrant
│ ├── impact-engine/ # Change impact analysis
│ │ └── index.ts
│ ├── orchestrator/ # AI orchestration
│ │ └── index.ts # Claude/GPT/DeepSeek
│ ├── analyzers/ # Code analyzers
│ │ ├── security.ts
│ │ ├── dead-code.ts
│ │ ├── duplication.ts
│ │ └── metrics.ts
│ ├── cli/ # CLI tool
│ │ └── commands/
│ ├── types/ # TypeScript types
│ └── utils/ # Utilities
├── .archicore/ # Architecture config
│ └── architecture.json
├── docker-compose.yml # Production compose
├── docker-compose.dev.yml # Development compose
├── Dockerfile
├── package.json
├── tsconfig.json
└── README.md
# Development
npm run dev # Start with hot reload (tsx watch)
npm run dev:debug # Start with debugger
# Build
npm run build # Compile TypeScript
npm run build:frontend # Minify & obfuscate frontend
npm run build:all # Build backend + frontend
# Production
npm start # Start production server
# CLI
npm run cli # Run CLI commands
# Database
npm run db:migrate # Run migrations (planned)
npm run db:seed # Seed database (planned)
# Testing
npm test # Run tests (planned)
npm run test:watch # Watch mode (planned)
npm run test:coverage # Coverage report (planned)
# Linting
npm run lint # ESLint
npm run lint:fix # Auto-fix issues
npm run format # Prettier (planned)
# Docker
npm run docker:build # Build Docker image
npm run docker:up # Start containers
npm run docker:down # Stop containers
npm run docker:logs # View logs
kebab-case.tsPascalCasecamelCaseUPPER_SNAKE_CASEPascalCase (no I prefix)git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)PR Requirements:
MIT License
Copyright (c) 2026 ArchiCore
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Made with ❤️ by the ArchiCore Team
FAQs
AI Software Architect - code analysis, impact prediction, semantic search
We found that archicore demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.