Initial Phoenix Sankofa Cloud setup

- Complete project structure with Next.js frontend
- GraphQL API backend with Apollo Server
- Portal application with NextAuth
- Crossplane Proxmox provider
- GitOps configurations
- CI/CD pipelines
- Testing infrastructure (Vitest, Jest, Go tests)
- Error handling and monitoring
- Security hardening
- UI component library
- Documentation
This commit is contained in:
defiQUG
2025-11-28 12:54:33 -08:00
commit 6f28146ac3
229 changed files with 43136 additions and 0 deletions

114
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,114 @@
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm lint
type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm type-check
format-check:
name: Format Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm format:check
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm test --run
- uses: codecov/codecov-action@v3
with:
files: ./coverage/coverage-final.json
flags: unittests
name: codecov-umbrella
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: build
path: .next
accessibility:
name: Accessibility Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- name: Run accessibility tests
run: |
# Install pa11y or similar accessibility testing tool
npm install -g @pa11y/pa11y-ci
# Run accessibility checks (requires built app)
echo "Accessibility checks would run here after build"

63
.github/workflows/crossplane-ci.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: Crossplane Provider CI
on:
push:
branches: [main, develop]
paths:
- 'crossplane-provider-proxmox/**'
- '.github/workflows/crossplane-ci.yml'
pull_request:
branches: [main, develop]
paths:
- 'crossplane-provider-proxmox/**'
jobs:
test:
name: Go Test
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./crossplane-provider-proxmox
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- run: go mod download
- run: go test -v -race -coverprofile=coverage.out ./...
- uses: codecov/codecov-action@v3
with:
files: ./crossplane-provider-proxmox/coverage.out
flags: crossplane
name: codecov-crossplane
lint:
name: Go Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./crossplane-provider-proxmox
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- uses: golangci/golangci-lint-action@v3
with:
version: latest
working-directory: ./crossplane-provider-proxmox
build:
name: Go Build
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./crossplane-provider-proxmox
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- run: go mod download
- run: make build

29
.github/workflows/deploy-dev.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: Deploy to Dev
on:
push:
branches: [develop]
workflow_dispatch:
jobs:
deploy:
name: Deploy to Development
runs-on: ubuntu-latest
environment:
name: development
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- name: Deploy to development environment
run: |
echo "Deploying to development..."
# Add your deployment commands here

32
.github/workflows/deploy-prod.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Deploy to Production
on:
workflow_dispatch:
inputs:
version:
description: 'Version to deploy'
required: true
type: string
jobs:
deploy:
name: Deploy to Production
runs-on: ubuntu-latest
environment:
name: production
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- name: Deploy to production environment
run: |
echo "Deploying version ${{ github.event.inputs.version }} to production..."
# Add your deployment commands here

29
.github/workflows/deploy-staging.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: Deploy to Staging
on:
push:
branches: [main]
workflow_dispatch:
jobs:
deploy:
name: Deploy to Staging
runs-on: ubuntu-latest
environment:
name: staging
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm build
- name: Deploy to staging environment
run: |
echo "Deploying to staging..."
# Add your deployment commands here

83
.github/workflows/portal-ci.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Portal CI
on:
push:
branches: [main, develop]
paths:
- 'portal/**'
- '.github/workflows/portal-ci.yml'
pull_request:
branches: [main, develop]
paths:
- 'portal/**'
jobs:
lint:
name: Portal Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./portal
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: portal/package-lock.json
- run: npm ci
- run: npm run lint
type-check:
name: Portal Type Check
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./portal
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: portal/package-lock.json
- run: npm ci
- run: npm run type-check
test:
name: Portal Test
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./portal
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: portal/package-lock.json
- run: npm ci
- run: npm test -- --coverage
- uses: codecov/codecov-action@v3
with:
files: ./portal/coverage/coverage-final.json
flags: portal
name: codecov-portal
build:
name: Portal Build
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./portal
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: portal/package-lock.json
- run: npm ci
- run: npm run build