mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 05:57:21 -05:00
Add BlackRoad Master Orchestration Plan and infrastructure blueprints
This commit implements the complete "master orchestration prompt" deliverables: ## New Documentation ### Master Plan - MASTER_ORCHESTRATION_PLAN.md - Complete infrastructure → product → ecosystem blueprint - Full stack architecture (Layer 1-7) - Cloudflare → GoDaddy → Railway → GitHub topology - Agent orchestration model (Atlas → Operator → Prism → Lucidia) - 3-phase execution roadmap - Atlas automation commands ### Infrastructure - infra/cloudflare/CLOUDFLARE_DNS_BLUEPRINT.md - Complete DNS configuration - Migration process (GoDaddy → Cloudflare) - DNS records for all 10+ domains - SSL/TLS configuration - Caching rules and security headers - Automation scripts - Troubleshooting guide ### GitHub Organization - .github/GITHUB_ENTERPRISE_SETUP.md - Repository organization structure - Monorepo vs multi-repo strategy - Branch protection rules - Required status checks - PR/issue templates - Project boards and labels - Recommended workflow additions (CodeQL, Dependabot) - .github/CODEOWNERS - Code ownership definitions - Global owners - Component-specific owners (backend, frontend, infra, docs) ### Next Actions - NEXT_ACTIONS_ALEXA.md - No-overwhelm execution checklist - Immediate priorities (infrastructure setup) - Week 1-2 tasks (product polish) - Week 3-4 tasks (alpha launch) - Success metrics - Tools & resources ## Context These documents synthesize: - The Big Kahuna Vision (complete OS architecture) - 3-phase execution roadmap (18-24 months) - Brand architecture (multi-brand ecosystem) - Current monorepo structure - Infrastructure topology ## Purpose Provide Alexa (Operator) with: 1. Complete infrastructure blueprint 2. Clear execution path 3. No-overwhelm next steps 4. Reference for all future decisions ## Next Steps See NEXT_ACTIONS_ALEXA.md for immediate priorities: 1. Migrate DNS to Cloudflare 2. Verify Railway deployment 3. Update GitHub secrets 4. Polish OS and add real backend data 5. Launch blackroad.systems and docs sites --- Ready for the next command, Operator.
This commit is contained in:
47
.github/CODEOWNERS
vendored
Normal file
47
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
# BlackRoad OS Code Owners
|
||||
# This file defines who is responsible for code in this repository.
|
||||
# Each line is a file pattern followed by one or more owners.
|
||||
|
||||
# Global owners (all files)
|
||||
* @alexa-amundson
|
||||
|
||||
# Backend
|
||||
/backend/ @alexa-amundson
|
||||
/backend/app/ @alexa-amundson
|
||||
/backend/requirements.txt @alexa-amundson
|
||||
/backend/Dockerfile @alexa-amundson
|
||||
|
||||
# Frontend / OS
|
||||
/blackroad-os/ @alexa-amundson
|
||||
/backend/static/ @alexa-amundson
|
||||
|
||||
# Infrastructure & DevOps
|
||||
/.github/ @alexa-amundson
|
||||
/.github/workflows/ @alexa-amundson
|
||||
/scripts/ @alexa-amundson
|
||||
/ops/ @alexa-amundson
|
||||
/infra/ @alexa-amundson
|
||||
railway.toml @alexa-amundson
|
||||
railway.json @alexa-amundson
|
||||
docker-compose.yml @alexa-amundson
|
||||
|
||||
# Documentation
|
||||
/docs/ @alexa-amundson
|
||||
/README.md @alexa-amundson
|
||||
/*.md @alexa-amundson
|
||||
|
||||
# Python SDK
|
||||
/sdk/python/ @alexa-amundson
|
||||
|
||||
# TypeScript SDK
|
||||
/sdk/typescript/ @alexa-amundson
|
||||
|
||||
# Agents & Prompts
|
||||
/agents/ @alexa-amundson
|
||||
/blackroad-universe/prompts/ @alexa-amundson
|
||||
|
||||
# Cognitive & Research
|
||||
/cognitive/ @alexa-amundson
|
||||
|
||||
# BlackRoad Universe (Brand, GTM, Domains)
|
||||
/blackroad-universe/ @alexa-amundson
|
||||
736
.github/GITHUB_ENTERPRISE_SETUP.md
vendored
Normal file
736
.github/GITHUB_ENTERPRISE_SETUP.md
vendored
Normal file
@@ -0,0 +1,736 @@
|
||||
# GitHub Enterprise Structure
|
||||
## Repository Organization, Policies, and Workflows
|
||||
|
||||
**Version:** 1.0
|
||||
**Date:** 2025-11-18
|
||||
**Purpose:** Define GitHub organization structure and best practices
|
||||
|
||||
---
|
||||
|
||||
## Repository Strategy
|
||||
|
||||
### Current State: Monorepo ✅
|
||||
|
||||
**Repository**: `blackboxprogramming/BlackRoad-Operating-System`
|
||||
|
||||
**Structure**:
|
||||
```
|
||||
BlackRoad-Operating-System/
|
||||
├── backend/ # FastAPI backend
|
||||
├── blackroad-os/ # Win95 OS frontend
|
||||
├── docs/ # Documentation
|
||||
├── sdk/ # Python & TypeScript SDKs
|
||||
│ ├── python/
|
||||
│ └── typescript/
|
||||
├── agents/ # Agent specifications
|
||||
├── cognitive/ # Cognitive architecture
|
||||
├── blackroad-universe/ # Brand, domains, GTM
|
||||
├── ops/ # Operations, domain config
|
||||
├── infra/ # Infrastructure configs
|
||||
└── scripts/ # Automation scripts
|
||||
```
|
||||
|
||||
**Pros**:
|
||||
- ✅ Single source of truth
|
||||
- ✅ Atomic commits across frontend/backend
|
||||
- ✅ Simpler for small teams
|
||||
- ✅ Easier local development
|
||||
|
||||
**Cons**:
|
||||
- ❌ Larger repo size
|
||||
- ❌ Harder to scale teams (can't assign granular permissions)
|
||||
- ❌ All CI runs even if only one component changes (can be mitigated with path filters)
|
||||
|
||||
**Recommendation**: **Keep monorepo for Phase 1** (0-12 months), evaluate split in Phase 2 when team grows.
|
||||
|
||||
---
|
||||
|
||||
### Future State: Multi-Repo (Phase 2+)
|
||||
|
||||
**When to split**:
|
||||
- Team size > 10 engineers
|
||||
- Need granular access control (different teams own different repos)
|
||||
- Want independent release cycles (frontend vs backend)
|
||||
|
||||
**Proposed Repos**:
|
||||
|
||||
1. **blackroad-os-core** - Core OS runtime, identity (PS-SHA∞)
|
||||
- Owner: Core team
|
||||
- Language: Python, JavaScript
|
||||
- Deploy: Railway
|
||||
|
||||
2. **blackroad-os-prism-console** - Admin, observability, Prism UI
|
||||
- Owner: Frontend team
|
||||
- Language: React/TypeScript
|
||||
- Deploy: Vercel / GitHub Pages
|
||||
|
||||
3. **blackroad-os-operator** - Workers, schedulers, agent orchestration
|
||||
- Owner: Backend team
|
||||
- Language: Python (Celery/RQ)
|
||||
- Deploy: Railway
|
||||
|
||||
4. **blackroad-os-api** - Backend API gateway, routing, schemas
|
||||
- Owner: Backend team
|
||||
- Language: Python (FastAPI)
|
||||
- Deploy: Railway
|
||||
|
||||
5. **blackroad-os-web** - Pocket OS web interface (frontend)
|
||||
- Owner: Frontend team
|
||||
- Language: HTML/CSS/JS
|
||||
- Deploy: GitHub Pages
|
||||
|
||||
6. **blackroad-os-docs** - Codex, specs, standards, whitepapers
|
||||
- Owner: Docs team
|
||||
- Language: Markdown
|
||||
- Deploy: GitHub Pages
|
||||
|
||||
---
|
||||
|
||||
## GitHub Organization
|
||||
|
||||
### Organization Settings
|
||||
|
||||
**Name**: `blackroad` (preferred) or keep `blackboxprogramming`
|
||||
|
||||
**Teams**:
|
||||
|
||||
| Team | Role | Members | Repositories |
|
||||
|------|------|---------|--------------|
|
||||
| `@blackroad/core` | Maintain | Alexa + core contributors | All repos (admin) |
|
||||
| `@blackroad/backend` | Write | Backend engineers | backend, api, operator repos |
|
||||
| `@blackroad/frontend` | Write | Frontend engineers | web, prism-console repos |
|
||||
| `@blackroad/docs` | Write | Docs writers, technical writers | docs repo |
|
||||
| `@blackroad/community` | Triage | External contributors | All (read, can create issues/PRs) |
|
||||
|
||||
**Team Sync** (if using external tools):
|
||||
- Sync with Slack: `#blackroad-core`, `#blackroad-backend`, etc.
|
||||
- Sync with Discord: Roles mirror GitHub teams
|
||||
|
||||
---
|
||||
|
||||
## Branch Protection Rules
|
||||
|
||||
### `main` Branch (Production)
|
||||
|
||||
**Required Settings**:
|
||||
- ✅ **Require pull request before merging**
|
||||
- Required approvals: **1**
|
||||
- Dismiss stale reviews: ✅
|
||||
- Require review from Code Owners: ✅
|
||||
|
||||
- ✅ **Require status checks to pass**
|
||||
- Required checks:
|
||||
- `CI / lint`
|
||||
- `CI / type-check`
|
||||
- `CI / test-backend`
|
||||
- `CI / build`
|
||||
- Require branches to be up to date: ✅
|
||||
|
||||
- ✅ **Require conversation resolution before merging**
|
||||
|
||||
- ❌ **Do not allow bypassing** (enforce for administrators)
|
||||
|
||||
- ❌ **Do not allow force pushes**
|
||||
|
||||
- ❌ **Do not allow deletions**
|
||||
|
||||
**Linear History**:
|
||||
- ✅ Require linear history (or use squash merging)
|
||||
|
||||
---
|
||||
|
||||
### `develop` Branch (If Using GitFlow)
|
||||
|
||||
**Optional Settings**:
|
||||
- ✅ Require pull request
|
||||
- ✅ Require status checks
|
||||
- ✅ **Allow force pushes** (for rebasing - use with caution)
|
||||
- Approvals: 0-1 (more flexible than `main`)
|
||||
|
||||
---
|
||||
|
||||
### `claude/*` Branches (AI Agent Branches)
|
||||
|
||||
**Special Settings**:
|
||||
- ✅ Allow direct commits (AI agents commit directly)
|
||||
- ✅ Require status checks to pass
|
||||
- ❌ No protection rules (temporary branches, auto-deleted after PR merge)
|
||||
|
||||
**Naming Convention**:
|
||||
- `claude/feature-name-{session-id}`
|
||||
- Session ID ensures unique branch names per AI session
|
||||
|
||||
---
|
||||
|
||||
## Required Status Checks
|
||||
|
||||
### Current Workflows
|
||||
|
||||
From `.github/workflows/`:
|
||||
|
||||
| Workflow | File | Triggers | Required Checks |
|
||||
|----------|------|----------|----------------|
|
||||
| **CI** | `ci.yml` | Push to `main`, PR | `lint`, `type-check`, `build` |
|
||||
| **Backend Tests** | `backend-tests.yml` | Push to `backend/**`, PR | `test-backend` |
|
||||
| **Railway Deploy** | `railway-deploy.yml` | Push to `main` | (deployment only, not blocking) |
|
||||
| **GitHub Pages Deploy** | `deploy.yml` | Push to `main` | (deployment only) |
|
||||
| **Railway Secrets Audit** | `railway-automation.yml` | Schedule (nightly) | (audit only) |
|
||||
| **Domain Sync** | `sync-domains.yml` | Manual, schedule | (sync only) |
|
||||
| **Domain Health** | `domain-health.yml` | Schedule (hourly) | (monitoring only) |
|
||||
|
||||
### Adding Checks to Branch Protection
|
||||
|
||||
**Via GitHub UI**:
|
||||
1. Go to Settings → Branches → Branch protection rules
|
||||
2. Click `main` (or create new)
|
||||
3. Under "Require status checks to pass before merging":
|
||||
- ✅ Require status checks
|
||||
- Search and add: `CI / lint`, `CI / type-check`, `CI / test-backend`, `CI / build`
|
||||
- ✅ Require branches to be up to date
|
||||
|
||||
**Via GitHub API** (automation):
|
||||
|
||||
```bash
|
||||
gh api \
|
||||
--method PUT \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
/repos/blackboxprogramming/BlackRoad-Operating-System/branches/main/protection \
|
||||
-f required_status_checks='{"strict":true,"contexts":["CI / lint","CI / type-check","CI / test-backend","CI / build"]}' \
|
||||
-f enforce_admins=false \
|
||||
-f required_pull_request_reviews='{"required_approving_review_count":1,"dismiss_stale_reviews":true}' \
|
||||
-f restrictions=null \
|
||||
-f required_conversation_resolution=true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CODEOWNERS File
|
||||
|
||||
**Location**: `.github/CODEOWNERS`
|
||||
|
||||
**Already Created**: See `.github/CODEOWNERS` in this repo
|
||||
|
||||
**How it Works**:
|
||||
- When PR changes files, GitHub auto-requests review from owners
|
||||
- PR can't merge until Code Owner approves (if "Require review from Code Owners" is enabled)
|
||||
|
||||
---
|
||||
|
||||
## Pull Request Templates
|
||||
|
||||
**Location**: `.github/PULL_REQUEST_TEMPLATE.md`
|
||||
|
||||
```markdown
|
||||
## Description
|
||||
<!-- Provide a clear description of the changes in this PR -->
|
||||
|
||||
## Type of Change
|
||||
<!-- Check all that apply -->
|
||||
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||
- [ ] New feature (non-breaking change which adds functionality)
|
||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- [ ] Documentation update
|
||||
- [ ] Infrastructure change
|
||||
|
||||
## Related Issue
|
||||
<!-- Link to related issue: Closes #123 -->
|
||||
|
||||
## Testing
|
||||
<!-- Describe how you tested these changes -->
|
||||
- [ ] Tested locally
|
||||
- [ ] Added/updated unit tests
|
||||
- [ ] Added/updated integration tests
|
||||
- [ ] Tested in staging environment
|
||||
|
||||
## Screenshots (if applicable)
|
||||
<!-- Add screenshots for UI changes -->
|
||||
|
||||
## Checklist
|
||||
- [ ] Code follows the project's style guidelines
|
||||
- [ ] Self-review of code completed
|
||||
- [ ] Comments added for complex logic
|
||||
- [ ] Documentation updated (if needed)
|
||||
- [ ] No new warnings generated
|
||||
- [ ] Tests pass locally
|
||||
- [ ] Related documentation updated
|
||||
|
||||
## Deployment Notes
|
||||
<!-- Any special steps needed for deployment? -->
|
||||
```
|
||||
|
||||
**Create file**: `.github/PULL_REQUEST_TEMPLATE.md` with above content
|
||||
|
||||
---
|
||||
|
||||
## Issue Templates
|
||||
|
||||
**Location**: `.github/ISSUE_TEMPLATE/`
|
||||
|
||||
### 1. Bug Report
|
||||
|
||||
**File**: `.github/ISSUE_TEMPLATE/bug_report.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: Bug Report
|
||||
about: Report a bug in BlackRoad OS
|
||||
title: "[BUG] "
|
||||
labels: bug
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Bug Description
|
||||
<!-- Clear description of the bug -->
|
||||
|
||||
## Steps to Reproduce
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
3. Scroll down to '...'
|
||||
4. See error
|
||||
|
||||
## Expected Behavior
|
||||
<!-- What should happen -->
|
||||
|
||||
## Actual Behavior
|
||||
<!-- What actually happens -->
|
||||
|
||||
## Environment
|
||||
- **BlackRoad OS Version**: [e.g., v0.1.1]
|
||||
- **Browser**: [e.g., Chrome 120, Safari 17]
|
||||
- **OS**: [e.g., macOS 14, Windows 11, iOS 17]
|
||||
- **Device**: [e.g., Desktop, iPhone 15]
|
||||
|
||||
## Screenshots
|
||||
<!-- If applicable, add screenshots -->
|
||||
|
||||
## Additional Context
|
||||
<!-- Any other context about the problem -->
|
||||
|
||||
## Possible Solution
|
||||
<!-- Optional: suggest a fix if you have ideas -->
|
||||
```
|
||||
|
||||
### 2. Feature Request
|
||||
|
||||
**File**: `.github/ISSUE_TEMPLATE/feature_request.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: Feature Request
|
||||
about: Suggest a new feature for BlackRoad OS
|
||||
title: "[FEATURE] "
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
<!-- Clear description of the feature you want -->
|
||||
|
||||
## Problem Statement
|
||||
<!-- What problem does this solve? Why is it needed? -->
|
||||
|
||||
## Proposed Solution
|
||||
<!-- How should this feature work? -->
|
||||
|
||||
## Alternatives Considered
|
||||
<!-- What other solutions have you thought about? -->
|
||||
|
||||
## Additional Context
|
||||
<!-- Mockups, examples, links, etc. -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- How will we know this feature is complete? -->
|
||||
- [ ] Criterion 1
|
||||
- [ ] Criterion 2
|
||||
```
|
||||
|
||||
### 3. Documentation
|
||||
|
||||
**File**: `.github/ISSUE_TEMPLATE/documentation.md`
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: Documentation
|
||||
about: Suggest documentation improvements
|
||||
title: "[DOCS] "
|
||||
labels: documentation
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Documentation Issue
|
||||
<!-- What's missing, unclear, or incorrect in the docs? -->
|
||||
|
||||
## Affected Pages/Sections
|
||||
<!-- Link to the docs that need updating -->
|
||||
|
||||
## Suggested Changes
|
||||
<!-- What should be added/changed? -->
|
||||
|
||||
## Additional Context
|
||||
<!-- Any examples, screenshots, or references -->
|
||||
```
|
||||
|
||||
**Create these files** in `.github/ISSUE_TEMPLATE/`
|
||||
|
||||
---
|
||||
|
||||
## Project Boards
|
||||
|
||||
### Org-Level Project Board
|
||||
|
||||
**Name**: "BlackRoad OS Roadmap"
|
||||
|
||||
**View Type**: Board
|
||||
|
||||
**Columns**:
|
||||
|
||||
| Column | Description | Automation |
|
||||
|--------|-------------|------------|
|
||||
| 📋 Backlog | All new issues, not yet prioritized | Auto-add: new issues |
|
||||
| 🎯 Phase 1 (Prove the OS) | Q1-Q4 deliverables | Auto-add: label `Phase 1` |
|
||||
| 🚀 Phase 2 (Expand Intelligence) | Q5-Q6 deliverables | Auto-add: label `Phase 2` |
|
||||
| 🌍 Phase 3 (Ecosystem) | Q7-Q8 deliverables | Auto-add: label `Phase 3` |
|
||||
| 🏃 In Progress | Currently being worked on | Auto-add: assigned + status `in progress` |
|
||||
| 👀 In Review | PR submitted, awaiting review | Auto-add: PR opened |
|
||||
| ✅ Done | Completed | Auto-add: PR merged, issue closed |
|
||||
|
||||
**Automation Rules**:
|
||||
- Issue created → add to "Backlog"
|
||||
- Issue labeled `Phase 1` → move to "Phase 1" column
|
||||
- Issue assigned → move to "In Progress"
|
||||
- PR opened → move to "In Review"
|
||||
- PR merged → move to "Done"
|
||||
- Issue closed → move to "Done"
|
||||
|
||||
**Create via GitHub UI**:
|
||||
1. Go to Organization → Projects → New project
|
||||
2. Choose "Board" template
|
||||
3. Add columns above
|
||||
4. Configure automation (Settings → Workflows)
|
||||
|
||||
---
|
||||
|
||||
## Labels
|
||||
|
||||
**Standard Labels** (auto-created by GitHub):
|
||||
|
||||
| Label | Color | Description |
|
||||
|-------|-------|-------------|
|
||||
| `bug` | Red | Something isn't working |
|
||||
| `documentation` | Blue | Improvements or additions to documentation |
|
||||
| `duplicate` | Gray | This issue or PR already exists |
|
||||
| `enhancement` | Green | New feature or request |
|
||||
| `good first issue` | Purple | Good for newcomers |
|
||||
| `help wanted` | Orange | Extra attention is needed |
|
||||
| `invalid` | Gray | This doesn't seem right |
|
||||
| `question` | Pink | Further information is requested |
|
||||
| `wontfix` | White | This will not be worked on |
|
||||
|
||||
**Custom Labels** (add these):
|
||||
|
||||
| Label | Color | Description |
|
||||
|-------|-------|-------------|
|
||||
| `Phase 1` | `#0E8A16` | Phase 1: Prove the OS (Months 0-12) |
|
||||
| `Phase 2` | `#1D76DB` | Phase 2: Expand Intelligence (Months 12-18) |
|
||||
| `Phase 3` | `#5319E7` | Phase 3: Ecosystem (Months 18-24+) |
|
||||
| `backend` | `#D93F0B` | Backend (FastAPI, Python) |
|
||||
| `frontend` | `#FBCA04` | Frontend (OS, UI, JavaScript) |
|
||||
| `infrastructure` | `#0052CC` | Infrastructure, DevOps, CI/CD |
|
||||
| `agent` | `#C5DEF5` | Agent-related (Prism, Lucidia, Operator) |
|
||||
| `security` | `#B60205` | Security issue or enhancement |
|
||||
| `performance` | `#D4C5F9` | Performance improvement |
|
||||
| `breaking-change` | `#D93F0B` | Breaking change (major version bump) |
|
||||
|
||||
**Create via GitHub UI**: Settings → Labels → New label
|
||||
|
||||
---
|
||||
|
||||
## Recommended Workflow Additions
|
||||
|
||||
### 1. PR Labeler
|
||||
|
||||
**File**: `.github/workflows/pr-labeler.yml`
|
||||
|
||||
```yaml
|
||||
name: PR Labeler
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
label:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
```
|
||||
|
||||
**Config**: `.github/labeler.yml`
|
||||
|
||||
```yaml
|
||||
backend:
|
||||
- backend/**/*
|
||||
|
||||
frontend:
|
||||
- blackroad-os/**/*
|
||||
- backend/static/**/*
|
||||
|
||||
infrastructure:
|
||||
- .github/**/*
|
||||
- scripts/**/*
|
||||
- ops/**/*
|
||||
- infra/**/*
|
||||
- railway.*
|
||||
- docker-compose.yml
|
||||
|
||||
documentation:
|
||||
- docs/**/*
|
||||
- '**/*.md'
|
||||
|
||||
agent:
|
||||
- agents/**/*
|
||||
- blackroad-universe/prompts/**/*
|
||||
```
|
||||
|
||||
### 2. Dependabot
|
||||
|
||||
**File**: `.github/dependabot.yml`
|
||||
|
||||
```yaml
|
||||
version: 2
|
||||
updates:
|
||||
# Backend Python dependencies
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/backend"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 5
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "backend"
|
||||
|
||||
# GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "infrastructure"
|
||||
|
||||
# Docker
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/backend"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "infrastructure"
|
||||
```
|
||||
|
||||
### 3. CodeQL Security Scanning
|
||||
|
||||
**File**: `.github/workflows/codeql.yml`
|
||||
|
||||
```yaml
|
||||
name: CodeQL Security Scan
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
schedule:
|
||||
- cron: '0 6 * * 1' # Monday 6am
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
language: ['python', 'javascript']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
```
|
||||
|
||||
### 4. Release Automation
|
||||
|
||||
**File**: `.github/workflows/release.yml`
|
||||
|
||||
```yaml
|
||||
name: Create Release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Generate Changelog
|
||||
id: changelog
|
||||
run: |
|
||||
CHANGELOG=$(git log --pretty=format:"- %s (%h)" $(git describe --tags --abbrev=0 HEAD^)..HEAD)
|
||||
echo "changelog<<EOF" >> $GITHUB_OUTPUT
|
||||
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
||||
echo "EOF" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Create Release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref_name }}
|
||||
release_name: Release ${{ github.ref_name }}
|
||||
body: |
|
||||
## Changes in this Release
|
||||
${{ steps.changelog.outputs.changelog }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Commit Messages
|
||||
|
||||
**Format**: Conventional Commits
|
||||
|
||||
```
|
||||
<type>(<scope>): <subject>
|
||||
|
||||
<body>
|
||||
|
||||
<footer>
|
||||
```
|
||||
|
||||
**Types**:
|
||||
- `feat`: New feature
|
||||
- `fix`: Bug fix
|
||||
- `docs`: Documentation only
|
||||
- `style`: Formatting, missing semicolons, etc.
|
||||
- `refactor`: Code change that neither fixes a bug nor adds a feature
|
||||
- `perf`: Performance improvement
|
||||
- `test`: Adding or updating tests
|
||||
- `chore`: Maintenance tasks
|
||||
|
||||
**Examples**:
|
||||
```
|
||||
feat(backend): add Prism job queue API endpoint
|
||||
|
||||
Implemented /api/prism/jobs endpoint with pagination,
|
||||
filtering, and sorting. Connects to PostgreSQL for
|
||||
persistent storage.
|
||||
|
||||
Closes #123
|
||||
```
|
||||
|
||||
```
|
||||
fix(os): resolve window z-index bug on minimize
|
||||
|
||||
Windows were not maintaining correct z-order after
|
||||
minimize/restore. Fixed by tracking z-index state
|
||||
in window manager.
|
||||
|
||||
Fixes #456
|
||||
```
|
||||
|
||||
### PR Size
|
||||
|
||||
**Recommendations**:
|
||||
- **Small PRs**: < 200 lines changed (ideal)
|
||||
- **Medium PRs**: 200-500 lines (acceptable)
|
||||
- **Large PRs**: > 500 lines (break into smaller PRs if possible)
|
||||
|
||||
**Exceptions**:
|
||||
- Auto-generated code
|
||||
- Third-party library updates
|
||||
- Large refactors (clearly communicate scope)
|
||||
|
||||
### Code Review Process
|
||||
|
||||
1. **Author**: Create PR, self-review, request reviewers
|
||||
2. **Reviewers**: Review within 24 hours (business days)
|
||||
3. **Author**: Address feedback, update PR
|
||||
4. **Reviewers**: Approve or request changes
|
||||
5. **Author**: Merge (or auto-merge if approved + CI passes)
|
||||
|
||||
**Review Checklist**:
|
||||
- [ ] Code follows style guidelines
|
||||
- [ ] Tests added/updated
|
||||
- [ ] Documentation updated
|
||||
- [ ] No obvious bugs or security issues
|
||||
- [ ] Commit messages are clear
|
||||
|
||||
---
|
||||
|
||||
## Security
|
||||
|
||||
### Secret Scanning
|
||||
|
||||
GitHub automatically scans for exposed secrets. Ensure:
|
||||
- ✅ Secret scanning enabled (default for public repos)
|
||||
- ✅ Push protection enabled (blocks commits with secrets)
|
||||
|
||||
### Dependency Scanning
|
||||
|
||||
- ✅ Dependabot alerts enabled
|
||||
- ✅ Weekly dependency updates (via Dependabot)
|
||||
|
||||
### Vulnerability Alerts
|
||||
|
||||
GitHub sends alerts for known vulnerabilities. Ensure:
|
||||
- ✅ Alerts enabled (Settings → Security → Vulnerability alerts)
|
||||
- ✅ Team notified via email/Slack
|
||||
|
||||
---
|
||||
|
||||
## Maintenance
|
||||
|
||||
**Weekly**:
|
||||
- Review open PRs (ensure < 5 open)
|
||||
- Review open issues (triage, label, prioritize)
|
||||
- Merge Dependabot PRs (if CI passes)
|
||||
|
||||
**Monthly**:
|
||||
- Review project board (move stale items)
|
||||
- Review labels (add/remove as needed)
|
||||
- Audit branch protection rules
|
||||
|
||||
**Quarterly**:
|
||||
- Review team permissions
|
||||
- Audit CODEOWNERS (update as team changes)
|
||||
- Review workflows (optimize, remove unused)
|
||||
|
||||
---
|
||||
|
||||
**This structure ensures a well-organized, scalable GitHub setup for BlackRoad OS.**
|
||||
1074
MASTER_ORCHESTRATION_PLAN.md
Normal file
1074
MASTER_ORCHESTRATION_PLAN.md
Normal file
File diff suppressed because it is too large
Load Diff
482
NEXT_ACTIONS_ALEXA.md
Normal file
482
NEXT_ACTIONS_ALEXA.md
Normal file
@@ -0,0 +1,482 @@
|
||||
# 🎯 ALEXA'S NEXT ACTIONS
|
||||
## The No-Overwhelm, Just-Execute Checklist
|
||||
|
||||
**Date:** 2025-11-18
|
||||
**Status:** Ready to Execute
|
||||
**Phase:** Phase 1, Q1 - Foundation
|
||||
|
||||
---
|
||||
|
||||
## THE BIG PICTURE IN 3 SENTENCES
|
||||
|
||||
1. You have a **working Windows 95-style OS** with FastAPI backend (it's beautiful!)
|
||||
2. You have **complete vision docs** for the entire BlackRoad ecosystem (The Big Kahuna!)
|
||||
3. Now you need to **solidify infrastructure** and **launch Phase 1** (make it real!)
|
||||
|
||||
---
|
||||
|
||||
## 🔥 DO THESE FIRST (Today/This Week)
|
||||
|
||||
### ✅ Infrastructure Foundation
|
||||
|
||||
**Time Estimate**: 2-4 hours total
|
||||
|
||||
#### 1. Migrate blackroad.systems DNS to Cloudflare (1 hour)
|
||||
|
||||
**Why**: Better performance, free SSL, DDoS protection, future-ready
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# Option A: Manual (easier, recommended for first time)
|
||||
1. Go to cloudflare.com → Log in → "Add a site"
|
||||
2. Enter: blackroad.systems
|
||||
3. Choose Free plan
|
||||
4. Cloudflare scans existing DNS records
|
||||
5. Review/approve records
|
||||
6. Cloudflare shows 2 nameservers (e.g., aaaa.ns.cloudflare.com)
|
||||
7. Go to GoDaddy → My Domains → blackroad.systems → Manage DNS
|
||||
8. Nameservers → Change → Custom
|
||||
9. Enter Cloudflare nameservers
|
||||
10. Save → Wait 5-60 minutes
|
||||
11. Return to Cloudflare → Should say "Active"
|
||||
12. Go to SSL/TLS → Set to "Full (strict)"
|
||||
13. Enable "Always Use HTTPS"
|
||||
Done! ✅
|
||||
|
||||
# Option B: Script (once you're comfortable)
|
||||
export CF_API_TOKEN="your-token"
|
||||
export CF_ZONE_ID="your-zone-id"
|
||||
python scripts/cloudflare/sync_dns.py # (create this from blueprint)
|
||||
```
|
||||
|
||||
**Result**: `blackroad.systems` now served via Cloudflare with free SSL
|
||||
|
||||
---
|
||||
|
||||
#### 2. Verify Railway Deployment (30 min)
|
||||
|
||||
**Why**: Ensure backend is deployed and healthy
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# Check current deployment
|
||||
railway status --service backend
|
||||
|
||||
# View logs
|
||||
railway logs --service backend --tail 50
|
||||
|
||||
# Test health endpoint
|
||||
curl https://your-railway-app.up.railway.app/health
|
||||
|
||||
# Expected response:
|
||||
# {"status":"healthy","timestamp":...}
|
||||
|
||||
# Add custom domain (if not already)
|
||||
railway domains add os.blackroad.systems --service backend
|
||||
|
||||
# Test custom domain
|
||||
curl https://os.blackroad.systems/health
|
||||
```
|
||||
|
||||
**Result**: Backend is live, healthy, and accessible via custom domain
|
||||
|
||||
---
|
||||
|
||||
#### 3. Update GitHub Secrets (15 min)
|
||||
|
||||
**Why**: Enable automated deployments and DNS syncing
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# Get Railway token
|
||||
railway whoami # Shows current login
|
||||
railway login --browserless # Get new token if needed
|
||||
|
||||
# Get Cloudflare token
|
||||
# Cloudflare dashboard → My Profile → API Tokens → Create Token
|
||||
# Template: "Edit zone DNS" → Select zones: blackroad.systems
|
||||
|
||||
# Add to GitHub
|
||||
gh secret set RAILWAY_TOKEN # Paste Railway token
|
||||
gh secret set CF_API_TOKEN # Paste Cloudflare API token
|
||||
gh secret set CF_ZONE_ID # From Cloudflare dashboard (zone overview)
|
||||
|
||||
# Verify
|
||||
gh secret list
|
||||
```
|
||||
|
||||
**Result**: GitHub Actions can now deploy and manage infrastructure
|
||||
|
||||
---
|
||||
|
||||
#### 4. Test End-to-End (15 min)
|
||||
|
||||
**Why**: Confirm everything works
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# 1. Visit OS
|
||||
open https://os.blackroad.systems
|
||||
|
||||
# Should see: Windows 95 desktop, apps load, no errors
|
||||
|
||||
# 2. Test API
|
||||
curl https://os.blackroad.systems/api/docs
|
||||
|
||||
# Should see: FastAPI Swagger docs
|
||||
|
||||
# 3. Check SSL
|
||||
# Browser should show 🔒 (secure)
|
||||
|
||||
# 4. Test deployment
|
||||
git commit --allow-empty -m "test: verify deployment pipeline"
|
||||
git push
|
||||
|
||||
# GitHub Actions should run → deploy to Railway
|
||||
# Check: https://github.com/blackboxprogramming/BlackRoad-Operating-System/actions
|
||||
```
|
||||
|
||||
**Result**: Full stack working (DNS → Cloudflare → Railway → OS)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 DO THESE NEXT (This Week/Next Week)
|
||||
|
||||
### ✅ Product Polish
|
||||
|
||||
**Time Estimate**: 4-8 hours
|
||||
|
||||
#### 5. Fix Any OS Bugs (2-4 hours)
|
||||
|
||||
**Task**: Test all existing apps, fix issues
|
||||
|
||||
**Test Checklist**:
|
||||
- [ ] Desktop icons load
|
||||
- [ ] Windows open/close/minimize/maximize
|
||||
- [ ] Taskbar shows active windows
|
||||
- [ ] Start menu works
|
||||
- [ ] All apps load (Prism, Miners, Finance, etc.)
|
||||
- [ ] Window dragging/resizing works
|
||||
- [ ] Mobile: basic functionality (doesn't have to be perfect)
|
||||
|
||||
**Known Issues** (if any):
|
||||
- Check GitHub issues: `gh issue list`
|
||||
- Create issues for new bugs found
|
||||
|
||||
**Fix Priority**:
|
||||
1. Blocking bugs (app won't load)
|
||||
2. UX bugs (confusing behavior)
|
||||
3. Visual bugs (minor styling)
|
||||
|
||||
---
|
||||
|
||||
#### 6. Add Real Backend Data (2-4 hours)
|
||||
|
||||
**Task**: Connect Prism Console to real API (remove mock data)
|
||||
|
||||
**Current State**: Prism Console uses mock/static data
|
||||
**Target State**: Prism Console fetches from `/api/prism/*`
|
||||
|
||||
**Steps**:
|
||||
```python
|
||||
# backend/app/routers/prism.py (create if doesn't exist)
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from app.database import get_db
|
||||
|
||||
router = APIRouter(prefix="/api/prism", tags=["prism"])
|
||||
|
||||
@router.get("/jobs")
|
||||
async def get_jobs(db: Session = Depends(get_db)):
|
||||
# TODO: Query actual jobs from DB
|
||||
return {
|
||||
"jobs": [
|
||||
{"id": 1, "type": "deploy", "status": "completed"},
|
||||
{"id": 2, "type": "test", "status": "running"},
|
||||
]
|
||||
}
|
||||
|
||||
@router.get("/metrics")
|
||||
async def get_metrics():
|
||||
return {
|
||||
"jobs_running": 2,
|
||||
"jobs_completed": 15,
|
||||
"jobs_failed": 1,
|
||||
}
|
||||
```
|
||||
|
||||
```javascript
|
||||
// Update blackroad-os/js/apps/prism.js
|
||||
// Replace mock data with fetch calls
|
||||
|
||||
async function loadJobs() {
|
||||
const response = await fetch('/api/prism/jobs');
|
||||
const data = await response.json();
|
||||
// Render jobs...
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ✅ Website Launch
|
||||
|
||||
**Time Estimate**: 6-12 hours (can be split over days)
|
||||
|
||||
#### 7. Create blackroad.systems Landing Page (6-8 hours)
|
||||
|
||||
**Task**: MVP corporate site (5 pages)
|
||||
|
||||
**Pages**:
|
||||
1. **Homepage** - Hero, capabilities, CTA
|
||||
2. **Architecture** - System overview, diagrams
|
||||
3. **Solutions** - Financial Services use case
|
||||
4. **Pricing** - 3 tiers (Free, Team, Enterprise)
|
||||
5. **Contact** - Demo request form
|
||||
|
||||
**Option A: Simple HTML** (faster, matches OS aesthetic)
|
||||
- Use Win95 theme (like OS)
|
||||
- Single `index.html` with sections
|
||||
- Deploy to GitHub Pages or Railway
|
||||
|
||||
**Option B: Static Site Generator** (more scalable)
|
||||
- Use Astro, Next.js, or 11ty
|
||||
- Reuse OS components
|
||||
- Deploy to Vercel or GitHub Pages
|
||||
|
||||
**Recommendation**: Start with Option A (faster), upgrade later
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# 1. Create site directory
|
||||
mkdir -p blackroad-systems-site
|
||||
cd blackroad-systems-site
|
||||
|
||||
# 2. Copy OS theme/styles
|
||||
cp ../blackroad-os/css/os.css ./styles.css
|
||||
|
||||
# 3. Create index.html (use DOMAIN_SPEC.md as guide)
|
||||
|
||||
# 4. Deploy to GitHub Pages
|
||||
gh repo create blackroad-systems-site --public
|
||||
git init && git add . && git commit -m "Initial site"
|
||||
git remote add origin https://github.com/blackboxprogramming/blackroad-systems-site.git
|
||||
git push -u origin main
|
||||
|
||||
# 5. Enable GitHub Pages
|
||||
gh repo edit --enable-pages --pages-branch main
|
||||
|
||||
# 6. Point DNS
|
||||
# Cloudflare: CNAME @ → blackboxprogramming.github.io
|
||||
# GitHub: Add custom domain in repo settings
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 8. Create Developer Docs (4 hours)
|
||||
|
||||
**Task**: Quick start guide for developers
|
||||
|
||||
**Minimum Viable Docs**:
|
||||
1. **README** - What is BlackRoad OS?
|
||||
2. **Quick Start** - Get started in 5 minutes
|
||||
3. **API Reference** - List of endpoints (auto-generated from FastAPI)
|
||||
4. **Examples** - Python & Node code samples
|
||||
|
||||
**Location**: `docs/` directory or separate repo
|
||||
|
||||
**Deploy**: GitHub Pages (blackroad.network)
|
||||
|
||||
**Steps**:
|
||||
```bash
|
||||
# 1. Use MkDocs or Docusaurus (or just Markdown)
|
||||
cd docs
|
||||
|
||||
# 2. Create pages
|
||||
touch index.md quick-start.md api-reference.md examples.md
|
||||
|
||||
# 3. Deploy to GitHub Pages
|
||||
# (Same as blackroad-systems-site)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📅 DO THESE LATER (Next 2-4 Weeks)
|
||||
|
||||
### ✅ Alpha Launch Prep
|
||||
|
||||
#### 9. Set Up Analytics (1 hour)
|
||||
|
||||
**Task**: Track usage and visitors
|
||||
|
||||
**Tools**:
|
||||
- Google Analytics (easy, free)
|
||||
- PostHog (open-source, privacy-friendly)
|
||||
- Mixpanel (product analytics)
|
||||
|
||||
**Add to**:
|
||||
- blackroad.systems (marketing site)
|
||||
- os.blackroad.systems (OS usage)
|
||||
|
||||
---
|
||||
|
||||
#### 10. Create Discord Community (2 hours)
|
||||
|
||||
**Task**: Launch developer community
|
||||
|
||||
**Steps**:
|
||||
1. Create Discord server
|
||||
2. Set up channels:
|
||||
- #announcements
|
||||
- #general
|
||||
- #help
|
||||
- #showcase
|
||||
- #feedback
|
||||
3. Create roles (Admin, Mod, Alpha Tester, Community)
|
||||
4. Invite first 10-20 alpha testers
|
||||
5. Post welcome message
|
||||
|
||||
---
|
||||
|
||||
#### 11. Write First Blog Posts (4-6 hours)
|
||||
|
||||
**Task**: Content marketing
|
||||
|
||||
**Topics**:
|
||||
1. "Introducing BlackRoad OS" (launch post)
|
||||
2. "Why Deterministic AI Matters" (thought leadership)
|
||||
3. "Building Auditable AI Systems with RoadChain" (technical deep-dive)
|
||||
|
||||
**Publish on**:
|
||||
- blackroad.systems/blog
|
||||
- Medium
|
||||
- Dev.to
|
||||
- Hacker News (carefully)
|
||||
|
||||
---
|
||||
|
||||
#### 12. Recruit Alpha Testers (ongoing)
|
||||
|
||||
**Task**: Find first 10-20 users
|
||||
|
||||
**Outreach**:
|
||||
- Personal network
|
||||
- Twitter/X
|
||||
- LinkedIn
|
||||
- Reddit (r/artificial, r/programming - be respectful)
|
||||
- Indie Hackers
|
||||
- Product Hunt (later)
|
||||
|
||||
**Offer**:
|
||||
- Free early access
|
||||
- Direct line to founder (you!)
|
||||
- Influence product direction
|
||||
- Credits/recognition
|
||||
|
||||
---
|
||||
|
||||
## 📊 SUCCESS METRICS (How You Know It's Working)
|
||||
|
||||
### Week 1 Success:
|
||||
- ✅ Infrastructure solid (Cloudflare, Railway, GitHub)
|
||||
- ✅ OS accessible at os.blackroad.systems
|
||||
- ✅ No major bugs blocking usage
|
||||
|
||||
### Week 2-3 Success:
|
||||
- ✅ blackroad.systems live (even if simple)
|
||||
- ✅ Developer docs live
|
||||
- ✅ First 5-10 alpha testers signed up
|
||||
|
||||
### Week 4 Success:
|
||||
- ✅ First 3 users actively using OS
|
||||
- ✅ Feedback collected
|
||||
- ✅ First iteration of improvements deployed
|
||||
|
||||
### Month 2-3 Success:
|
||||
- ✅ 20-50 developers signed up
|
||||
- ✅ First design partner conversation started
|
||||
- ✅ Blog posts published, some traction
|
||||
|
||||
---
|
||||
|
||||
## 🎯 THE MANTRA
|
||||
|
||||
**Focus on**:
|
||||
1. **Infrastructure first** (solid foundation)
|
||||
2. **Product polish** (it has to work)
|
||||
3. **Simple messaging** (clear value prop)
|
||||
4. **Real users** (even if just 5)
|
||||
|
||||
**Avoid**:
|
||||
- Building everything at once
|
||||
- Perfectionism (ship v1, iterate)
|
||||
- Distractions (shiny new features)
|
||||
|
||||
**Remember**:
|
||||
- Phase 1 is about **proving it works**
|
||||
- You need **5 design partners**, not 500
|
||||
- **Traction > polish** in early days
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ TOOLS & RESOURCES
|
||||
|
||||
**Bookmarks**:
|
||||
- Cloudflare Dashboard: https://dash.cloudflare.com
|
||||
- Railway Dashboard: https://railway.app/dashboard
|
||||
- GitHub Repo: https://github.com/blackboxprogramming/BlackRoad-Operating-System
|
||||
- GitHub Actions: https://github.com/blackboxprogramming/BlackRoad-Operating-System/actions
|
||||
|
||||
**Docs Created**:
|
||||
- `/MASTER_ORCHESTRATION_PLAN.md` - Complete master plan
|
||||
- `/infra/cloudflare/CLOUDFLARE_DNS_BLUEPRINT.md` - DNS setup guide
|
||||
- `/.github/GITHUB_ENTERPRISE_SETUP.md` - GitHub org structure
|
||||
- `/.github/CODEOWNERS` - Code ownership
|
||||
- `/NEXT_ACTIONS_ALEXA.md` - This file!
|
||||
|
||||
**Reference Docs**:
|
||||
- `/BLACKROAD_OS_BIG_KAHUNA_VISION.md` - Complete OS vision
|
||||
- `/blackroad-universe/operations/roadmap/EXECUTION_ROADMAP.md` - 18-24 month roadmap
|
||||
- `/blackroad-universe/brand/architecture/BRAND_ARCHITECTURE.md` - Brand strategy
|
||||
|
||||
---
|
||||
|
||||
## 💬 WHEN YOU'RE STUCK
|
||||
|
||||
**Question**: "Which task should I do next?"
|
||||
**Answer**: Look at this file, pick the next unchecked item in order
|
||||
|
||||
**Question**: "This is overwhelming"
|
||||
**Answer**: Just do #1 (Cloudflare DNS). Then #2. One at a time.
|
||||
|
||||
**Question**: "Something broke"
|
||||
**Answer**: Check Railway logs: `railway logs --service backend --tail 100`
|
||||
|
||||
**Question**: "I need help with X"
|
||||
**Answer**: Ask Claude! Or check docs. Or Discord community (once launched).
|
||||
|
||||
---
|
||||
|
||||
## 🎉 CELEBRATE WINS
|
||||
|
||||
**After Week 1**: Infrastructure is solid! 🎊
|
||||
**After Week 2**: Sites are live! 🚀
|
||||
**After Week 3**: First users! 🌟
|
||||
**After Month 1**: Momentum building! 💪
|
||||
**After Month 3**: Real traction! 🔥
|
||||
|
||||
---
|
||||
|
||||
**Ready to build the road, Operator?**
|
||||
|
||||
**Your first action**: Item #1 (Cloudflare DNS migration)
|
||||
|
||||
**Your north star**: Phase 1, Q1 - Prove the OS works
|
||||
|
||||
**Your superpower**: You've already built the foundation. Now make it real.
|
||||
|
||||
---
|
||||
|
||||
*"Not just infrastructure. Not just intelligence. A constellation."*
|
||||
|
||||
**Where AI meets the open road.** 🛣️
|
||||
523
infra/cloudflare/CLOUDFLARE_DNS_BLUEPRINT.md
Normal file
523
infra/cloudflare/CLOUDFLARE_DNS_BLUEPRINT.md
Normal file
@@ -0,0 +1,523 @@
|
||||
# Cloudflare DNS Blueprint
|
||||
## Complete DNS Configuration for BlackRoad Universe
|
||||
|
||||
**Version:** 1.0
|
||||
**Date:** 2025-11-18
|
||||
**Purpose:** Canonical DNS configuration for all BlackRoad domains via Cloudflare
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This document provides the complete DNS setup for migrating all BlackRoad domains from GoDaddy DNS to Cloudflare DNS.
|
||||
|
||||
**Why Cloudflare?**
|
||||
- Free tier includes: DNS, SSL, CDN, DDoS protection, Web Analytics
|
||||
- Global anycast network (faster DNS resolution)
|
||||
- CNAME flattening (allows root domain CNAMEs to Railway)
|
||||
- Better security (WAF, rate limiting available)
|
||||
- Future-ready for Workers, Zero Trust, edge functions
|
||||
|
||||
---
|
||||
|
||||
## Migration Process
|
||||
|
||||
### Step 1: Add Domain to Cloudflare
|
||||
|
||||
For each domain:
|
||||
|
||||
1. **Log in to Cloudflare dashboard**
|
||||
2. Click **"Add a site"**
|
||||
3. Enter domain (e.g., `blackroad.systems`)
|
||||
4. Select **Free plan**
|
||||
5. Cloudflare auto-scans existing DNS records from GoDaddy
|
||||
6. Review scanned records, make adjustments (see configurations below)
|
||||
7. Cloudflare provides 2 nameservers (e.g., `aaaa.ns.cloudflare.com`, `bbbb.ns.cloudflare.com`)
|
||||
|
||||
### Step 2: Update Nameservers at GoDaddy
|
||||
|
||||
For each domain:
|
||||
|
||||
1. **Log in to GoDaddy**
|
||||
2. Go to **My Domains** → select domain → **Manage DNS**
|
||||
3. Scroll to **Nameservers** section
|
||||
4. Click **Change** → Select **Custom**
|
||||
5. Enter Cloudflare nameservers (from Step 1)
|
||||
6. Click **Save**
|
||||
7. **Wait 5-60 minutes** for DNS propagation
|
||||
|
||||
### Step 3: Verify & Configure SSL
|
||||
|
||||
1. Return to Cloudflare dashboard
|
||||
2. Wait for status to change from "Pending" to **"Active"**
|
||||
3. Go to **SSL/TLS** → Set encryption mode to **"Full (strict)"**
|
||||
4. Go to **SSL/TLS** → **Edge Certificates** → Enable **"Always Use HTTPS"**
|
||||
5. Enable **"Automatic HTTPS Rewrites"**
|
||||
6. Enable **"HTTP Strict Transport Security (HSTS)"** (optional, but recommended)
|
||||
|
||||
### Step 4: Optimize Performance
|
||||
|
||||
1. Go to **Speed** → **Optimization**
|
||||
2. Enable **Auto Minify** (HTML, CSS, JS)
|
||||
3. Enable **Brotli** compression
|
||||
4. Enable **Rocket Loader** (optional - test first)
|
||||
5. Go to **Caching** → Set **Browser Cache TTL** to "Respect Existing Headers"
|
||||
|
||||
---
|
||||
|
||||
## DNS Records Configuration
|
||||
|
||||
### Domain: blackroad.systems
|
||||
|
||||
**Purpose**: Flagship corporate site + OS application
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackroad-os-production.up.railway.app` | Auto | ✅ Proxied | Root domain → Railway (CNAME flattening) |
|
||||
| CNAME | www | `blackroad.systems` | Auto | ✅ Proxied | www redirects to apex |
|
||||
| CNAME | os | `blackroad.systems` | Auto | ✅ Proxied | Alternative OS alias |
|
||||
| CNAME | api | `blackroad-os-production.up.railway.app` | Auto | ✅ Proxied | Explicit API subdomain |
|
||||
| CNAME | prism | `blackroad-os-production.up.railway.app` | Auto | ✅ Proxied | Prism Console subdomain |
|
||||
| CNAME | docs | `blackboxprogramming.github.io` | Auto | ✅ Proxied | GitHub Pages for docs |
|
||||
| CNAME | cdn | `blackroad.systems` | Auto | ✅ Proxied | CDN alias (for future asset delivery) |
|
||||
| TXT | @ | `v=spf1 include:_spf.google.com ~all` | Auto | - | SPF record (if using Google Workspace) |
|
||||
| MX | @ | `1 aspmx.l.google.com` | Auto | - | Gmail MX (priority 1) |
|
||||
| MX | @ | `5 alt1.aspmx.l.google.com` | Auto | - | Gmail MX (priority 5) |
|
||||
| MX | @ | `5 alt2.aspmx.l.google.com` | Auto | - | Gmail MX (priority 5) |
|
||||
|
||||
**Page Rules** (Optional):
|
||||
- `www.blackroad.systems/*` → Forwarding URL (301) → `https://blackroad.systems/$1`
|
||||
|
||||
---
|
||||
|
||||
### Domain: blackroad.ai
|
||||
|
||||
**Purpose**: Product console, admin interface
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `os.blackroad.systems` | Auto | ✅ Proxied | Alias to main OS |
|
||||
| CNAME | www | `blackroad.ai` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | console | `os.blackroad.systems` | Auto | ✅ Proxied | Explicit console subdomain |
|
||||
|
||||
**Page Rules**:
|
||||
- `www.blackroad.ai/*` → Forwarding URL (301) → `https://blackroad.ai/$1`
|
||||
|
||||
---
|
||||
|
||||
### Domain: blackroad.network
|
||||
|
||||
**Purpose**: Developer hub, documentation, community
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackboxprogramming.github.io` | Auto | ✅ Proxied | GitHub Pages for docs |
|
||||
| CNAME | www | `blackroad.network` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | api | `blackroad-os-production.up.railway.app` | Auto | ✅ Proxied | API access for developers |
|
||||
| CNAME | sandbox | `blackroad-os-staging.up.railway.app` | Auto | ✅ Proxied | Staging/sandbox environment |
|
||||
|
||||
**CNAME File** (for GitHub Pages):
|
||||
Create file `CNAME` in your `docs/` or GitHub Pages root:
|
||||
```
|
||||
blackroad.network
|
||||
```
|
||||
|
||||
**Page Rules**:
|
||||
- `www.blackroad.network/*` → Forwarding URL (301) → `https://blackroad.network/$1`
|
||||
|
||||
---
|
||||
|
||||
### Domain: blackroad.me
|
||||
|
||||
**Purpose**: Personal identity portal, Pocket OS
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `os.blackroad.systems` | Auto | ✅ Proxied | Identity portal via main OS |
|
||||
| CNAME | www | `blackroad.me` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | id | `os.blackroad.systems` | Auto | ✅ Proxied | Explicit identity subdomain |
|
||||
|
||||
---
|
||||
|
||||
### Domain: lucidia.earth
|
||||
|
||||
**Purpose**: Narrative experiences, interactive storytelling (Phase 2)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackboxprogramming.github.io` | Auto | ✅ Proxied | GitHub Pages (Phase 2) |
|
||||
| CNAME | www | `lucidia.earth` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | studio | `lucidia-studio.vercel.app` | Auto | ✅ Proxied | Lucidia Studio (Phase 3) |
|
||||
|
||||
**CNAME File** (for GitHub Pages):
|
||||
```
|
||||
lucidia.earth
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Domain: aliceqi.com
|
||||
|
||||
**Purpose**: ALICE QI research showcase (Phase 2)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackboxprogramming.github.io` | Auto | ✅ Proxied | GitHub Pages |
|
||||
| CNAME | www | `aliceqi.com` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | research | `aliceqi.com` | Auto | ✅ Proxied | Research portal |
|
||||
| CNAME | docs | `aliceqi.com` | Auto | ✅ Proxied | Technical documentation |
|
||||
|
||||
---
|
||||
|
||||
### Domain: blackroadqi.com
|
||||
|
||||
**Purpose**: Financial/quantitative intelligence product (Phase 2)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackroadqi-app.up.railway.app` | Auto | ✅ Proxied | Dedicated QI app (Phase 2) |
|
||||
| CNAME | www | `blackroadqi.com` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | api | `blackroadqi-api.up.railway.app` | Auto | ✅ Proxied | QI API endpoint |
|
||||
|
||||
---
|
||||
|
||||
### Domain: roadwallet.com
|
||||
|
||||
**Purpose**: Wallet interface (alias to OS)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `os.blackroad.systems` | Auto | ✅ Proxied | Alias to main OS wallet |
|
||||
| CNAME | www | `roadwallet.com` | Auto | ✅ Proxied | www → apex redirect |
|
||||
|
||||
---
|
||||
|
||||
### Domain: aliceos.io
|
||||
|
||||
**Purpose**: Legacy alias (points to main OS)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `os.blackroad.systems` | Auto | ✅ Proxied | Legacy domain |
|
||||
| CNAME | www | `aliceos.io` | Auto | ✅ Proxied | www → apex redirect |
|
||||
|
||||
---
|
||||
|
||||
### Domain: blackroadquantum.com
|
||||
|
||||
**Purpose**: Quantum research hub (Phase 2)
|
||||
|
||||
| Type | Name | Target | TTL | Proxy | Notes |
|
||||
|------|------|--------|-----|-------|-------|
|
||||
| CNAME | @ | `blackboxprogramming.github.io` | Auto | ✅ Proxied | GitHub Pages |
|
||||
| CNAME | www | `blackroadquantum.com` | Auto | ✅ Proxied | www → apex redirect |
|
||||
| CNAME | lab | `quantum-lab.up.railway.app` | Auto | ✅ Proxied | Quantum Lab app (Phase 2) |
|
||||
|
||||
---
|
||||
|
||||
## Advanced Configuration
|
||||
|
||||
### SSL/TLS Settings
|
||||
|
||||
**For all domains**:
|
||||
|
||||
1. **Encryption Mode**: Full (strict)
|
||||
- Cloudflare ↔ Railway: encrypted with valid cert
|
||||
|
||||
2. **Edge Certificates**:
|
||||
- ✅ Always Use HTTPS
|
||||
- ✅ Automatic HTTPS Rewrites
|
||||
- ✅ Certificate Transparency Monitoring
|
||||
- ✅ TLS 1.3 (enabled by default)
|
||||
|
||||
3. **HSTS** (HTTP Strict Transport Security):
|
||||
- ✅ Enable HSTS
|
||||
- Max Age: 6 months (15768000 seconds)
|
||||
- ✅ Include subdomains
|
||||
- ❌ Preload (wait until stable, then enable)
|
||||
|
||||
### Caching Rules
|
||||
|
||||
**Static Assets** (CSS, JS, images):
|
||||
```
|
||||
Cache Level: Standard
|
||||
Browser Cache TTL: Respect Existing Headers
|
||||
Edge Cache TTL: 1 month
|
||||
```
|
||||
|
||||
**API Endpoints** (`/api/*`):
|
||||
```
|
||||
Cache Level: Bypass
|
||||
(Don't cache API responses)
|
||||
```
|
||||
|
||||
**Page Rules Example** (`blackroad.systems`):
|
||||
```
|
||||
Rule 1: *blackroad.systems/api/*
|
||||
- Cache Level: Bypass
|
||||
- Disable Apps
|
||||
- Disable Performance
|
||||
|
||||
Rule 2: *blackroad.systems/*.css
|
||||
- Cache Level: Cache Everything
|
||||
- Edge Cache TTL: 1 month
|
||||
- Browser Cache TTL: 1 day
|
||||
|
||||
Rule 3: *blackroad.systems/*.js
|
||||
- Cache Level: Cache Everything
|
||||
- Edge Cache TTL: 1 month
|
||||
- Browser Cache TTL: 1 day
|
||||
|
||||
Rule 4: www.blackroad.systems/*
|
||||
- Forwarding URL: 301 redirect to https://blackroad.systems/$1
|
||||
```
|
||||
|
||||
### Firewall Rules
|
||||
|
||||
**Block known bots** (optional):
|
||||
```
|
||||
Field: User Agent
|
||||
Operator: contains
|
||||
Value: "BadBot|Scraper|AhrefsBot"
|
||||
Action: Block
|
||||
```
|
||||
|
||||
**Rate Limiting** (protect API):
|
||||
```
|
||||
Field: URI Path
|
||||
Operator: starts with
|
||||
Value: /api/
|
||||
Rate: 100 requests per minute
|
||||
Action: Challenge (CAPTCHA)
|
||||
```
|
||||
|
||||
### Security Headers
|
||||
|
||||
**Via Cloudflare Workers** (optional, advanced):
|
||||
|
||||
Create a Worker to add security headers:
|
||||
|
||||
```javascript
|
||||
addEventListener('fetch', event => {
|
||||
event.respondWith(handleRequest(event.request))
|
||||
})
|
||||
|
||||
async function handleRequest(request) {
|
||||
const response = await fetch(request)
|
||||
const newHeaders = new Headers(response.headers)
|
||||
|
||||
// Security headers
|
||||
newHeaders.set('X-Frame-Options', 'DENY')
|
||||
newHeaders.set('X-Content-Type-Options', 'nosniff')
|
||||
newHeaders.set('Referrer-Policy', 'strict-origin-when-cross-origin')
|
||||
newHeaders.set('Permissions-Policy', 'camera=(), microphone=(), geolocation=()')
|
||||
|
||||
return new Response(response.body, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: newHeaders
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verification Checklist
|
||||
|
||||
After DNS setup for each domain:
|
||||
|
||||
- [ ] **DNS Propagation**: Check with `dig <domain>` or https://dnschecker.org
|
||||
- [ ] **SSL Certificate**: Visit `https://<domain>` - should show valid cert (🔒)
|
||||
- [ ] **WWW Redirect**: Visit `https://www.<domain>` - should redirect to apex
|
||||
- [ ] **HTTP → HTTPS**: Visit `http://<domain>` - should redirect to HTTPS
|
||||
- [ ] **API Endpoint**: Test `curl https://<domain>/health` (if applicable)
|
||||
- [ ] **Cloudflare Analytics**: Check Cloudflare dashboard → Analytics tab
|
||||
|
||||
---
|
||||
|
||||
## Automation Script
|
||||
|
||||
**File**: `scripts/cloudflare/sync_dns.py`
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Sync DNS records from ops/domains.yaml to Cloudflare
|
||||
|
||||
Usage:
|
||||
export CF_API_TOKEN="your-token"
|
||||
export CF_ZONE_ID="your-zone-id"
|
||||
python scripts/cloudflare/sync_dns.py
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import yaml
|
||||
import requests
|
||||
from typing import Dict, List
|
||||
|
||||
CF_API_TOKEN = os.getenv("CF_API_TOKEN")
|
||||
CF_ZONE_ID = os.getenv("CF_ZONE_ID")
|
||||
CF_API_BASE = "https://api.cloudflare.com/client/v4"
|
||||
|
||||
def load_domains() -> Dict:
|
||||
"""Load domain config from ops/domains.yaml"""
|
||||
with open("ops/domains.yaml") as f:
|
||||
return yaml.safe_load(f)
|
||||
|
||||
def get_existing_records(zone_id: str) -> List[Dict]:
|
||||
"""Fetch all DNS records for a zone"""
|
||||
url = f"{CF_API_BASE}/zones/{zone_id}/dns_records"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {CF_API_TOKEN}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
response.raise_for_status()
|
||||
return response.json()["result"]
|
||||
|
||||
def create_dns_record(zone_id: str, record: Dict) -> Dict:
|
||||
"""Create a DNS record"""
|
||||
url = f"{CF_API_BASE}/zones/{zone_id}/dns_records"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {CF_API_TOKEN}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
response = requests.post(url, headers=headers, json=record)
|
||||
response.raise_for_status()
|
||||
return response.json()["result"]
|
||||
|
||||
def update_dns_record(zone_id: str, record_id: str, record: Dict) -> Dict:
|
||||
"""Update a DNS record"""
|
||||
url = f"{CF_API_BASE}/zones/{zone_id}/dns_records/{record_id}"
|
||||
headers = {
|
||||
"Authorization": f"Bearer {CF_API_TOKEN}",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
response = requests.put(url, headers=headers, json=record)
|
||||
response.raise_for_status()
|
||||
return response.json()["result"]
|
||||
|
||||
def sync_records():
|
||||
"""Sync DNS records from domains.yaml to Cloudflare"""
|
||||
if not CF_API_TOKEN or not CF_ZONE_ID:
|
||||
print("Error: CF_API_TOKEN and CF_ZONE_ID must be set")
|
||||
sys.exit(1)
|
||||
|
||||
config = load_domains()
|
||||
existing = get_existing_records(CF_ZONE_ID)
|
||||
|
||||
# Build index of existing records
|
||||
existing_index = {
|
||||
f"{r['type']}:{r['name']}": r for r in existing
|
||||
}
|
||||
|
||||
for domain in config.get("domains", []):
|
||||
if domain.get("mode") != "dns":
|
||||
continue
|
||||
|
||||
record_data = {
|
||||
"type": domain["record"]["type"],
|
||||
"name": domain["name"],
|
||||
"content": domain["record"]["value"],
|
||||
"ttl": 1, # Auto
|
||||
"proxied": True # Enable Cloudflare proxy
|
||||
}
|
||||
|
||||
key = f"{record_data['type']}:{record_data['name']}"
|
||||
|
||||
if key in existing_index:
|
||||
# Update existing
|
||||
record_id = existing_index[key]["id"]
|
||||
print(f"Updating: {key}")
|
||||
update_dns_record(CF_ZONE_ID, record_id, record_data)
|
||||
else:
|
||||
# Create new
|
||||
print(f"Creating: {key}")
|
||||
create_dns_record(CF_ZONE_ID, record_data)
|
||||
|
||||
print("✅ DNS sync complete!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
sync_records()
|
||||
```
|
||||
|
||||
**Make executable**:
|
||||
```bash
|
||||
chmod +x scripts/cloudflare/sync_dns.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### DNS Not Resolving
|
||||
|
||||
**Problem**: `dig blackroad.systems` returns no results
|
||||
|
||||
**Solutions**:
|
||||
1. Check nameservers are updated at GoDaddy
|
||||
2. Wait 5-60 minutes for propagation
|
||||
3. Verify zone is "Active" in Cloudflare dashboard
|
||||
4. Check DNS records exist in Cloudflare
|
||||
|
||||
### SSL Certificate Errors
|
||||
|
||||
**Problem**: Browser shows "Not Secure" or certificate error
|
||||
|
||||
**Solutions**:
|
||||
1. Check SSL/TLS mode is "Full (strict)" in Cloudflare
|
||||
2. Verify Railway app has valid SSL cert
|
||||
3. Check "Always Use HTTPS" is enabled
|
||||
4. Wait a few minutes for edge certificate provisioning
|
||||
|
||||
### Site Not Loading
|
||||
|
||||
**Problem**: Domain resolves but site doesn't load
|
||||
|
||||
**Solutions**:
|
||||
1. Check Railway app is deployed and healthy
|
||||
2. Verify custom domain is added in Railway dashboard
|
||||
3. Check Railway logs for errors: `railway logs --service backend`
|
||||
4. Test Railway URL directly (e.g., `your-app.up.railway.app`)
|
||||
|
||||
### Mixed Content Warnings
|
||||
|
||||
**Problem**: Page loads but some assets show as insecure
|
||||
|
||||
**Solutions**:
|
||||
1. Enable "Automatic HTTPS Rewrites" in Cloudflare
|
||||
2. Update hard-coded `http://` URLs to `https://` in code
|
||||
3. Use protocol-relative URLs: `//example.com/asset.js`
|
||||
|
||||
---
|
||||
|
||||
## Maintenance
|
||||
|
||||
**Monthly**:
|
||||
- Review Cloudflare analytics
|
||||
- Check SSL certificate status
|
||||
- Review firewall logs (if WAF enabled)
|
||||
|
||||
**Quarterly**:
|
||||
- Audit DNS records (remove unused)
|
||||
- Review page rules and caching
|
||||
- Update security headers if needed
|
||||
|
||||
**Annually**:
|
||||
- Review Cloudflare plan (consider Pro if traffic grows)
|
||||
- Audit all domain registrations (renew at GoDaddy)
|
||||
- Review and update security policies
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- **Cloudflare Docs**: https://developers.cloudflare.com/dns/
|
||||
- **Railway Custom Domains**: https://docs.railway.app/deploy/custom-domains
|
||||
- **DNS Checker**: https://dnschecker.org
|
||||
- **SSL Labs Test**: https://www.ssllabs.com/ssltest/
|
||||
|
||||
---
|
||||
|
||||
**This blueprint ensures all BlackRoad domains are properly configured with Cloudflare for optimal performance, security, and reliability.**
|
||||
Reference in New Issue
Block a user