A monorepo containing the Skillancer platform products:
- SkillPod: Browser-based VDI for secure computing environments
- Skillancer Market: Hybrid talent marketplace
- Cockpit: Multi-tenant dashboard for fractional executives
- Node.js >= 20.0.0
- pnpm >= 8.0.0
- Docker & Docker Compose (for local services)
git clone git@github.com:artpromedia/skillancer.git
cd skillancerpnpm installcp .env.example .env.local
# Edit .env.local with your configurationpnpm devskillancer/
├── apps/ # Frontend applications
│ ├── web/ # Marketing & shared shell (Next.js)
│ ├── web-market/ # Skillancer Market (Next.js)
│ ├── web-cockpit/ # Cockpit dashboard (Next.js)
│ ├── web-skillpod/ # SkillPod admin/viewer (Next.js)
│ └── mobile/ # Mobile app (Flutter)
├── services/ # Backend microservices
│ ├── api-gateway/ # API Gateway / BFF
│ ├── auth-svc/ # Authentication service
│ ├── billing-svc/ # Billing & payments
│ ├── market-svc/ # Marketplace logic
│ ├── skillpod-svc/ # VDI management
│ ├── cockpit-svc/ # Cockpit integrations
│ ├── notification-svc/ # Push & email notifications
│ └── audit-svc/ # Audit logging
├── packages/ # Shared packages
│ ├── ui/ # Shared React components
│ ├── api-client/ # Generated API client
│ ├── types/ # Shared TypeScript types
│ ├── utils/ # Shared utilities
│ ├── config/ # Shared configs (ESLint, TS, etc.)
│ ├── database/ # Prisma schema & migrations
│ └── cache/ # Redis cache utilities
├── infrastructure/ # Infrastructure as Code
│ ├── terraform/ # Terraform definitions
│ └── docker/ # Dockerfiles & compose
├── docs/ # Documentation
└── scripts/ # Build & utility scripts
| Command | Description |
|---|---|
pnpm dev |
Start all apps in development mode |
pnpm build |
Build all apps and packages |
pnpm test |
Run all tests |
pnpm lint |
Lint all packages |
pnpm format |
Format code with Prettier |
pnpm typecheck |
Run TypeScript type checking |
pnpm clean |
Clean all build outputs |
pnpm db:generate |
Generate Prisma client |
pnpm db:migrate |
Run database migrations |
pnpm db:seed |
Seed the database |
# Run a specific app
pnpm dev --filter=@skillancer/web-market
# Run multiple apps
pnpm dev --filter=@skillancer/web-market --filter=@skillancer/market-svc
# Run all apps matching a pattern
pnpm dev --filter="@skillancer/web-*"This monorepo is configured for remote caching with Turborepo.
- Create a Vercel account and link your repository
- Generate a Turbo token from your Vercel dashboard
- Set environment variables:
export TURBO_TOKEN=your_token_here
export TURBO_TEAM=your_team_nameOr add to your .env.local:
TURBO_TOKEN=your_token_here
TURBO_TEAM=your_team_nameFor self-hosted remote caching using S3:
- Create an S3 bucket for cache storage
- Configure your environment:
export TURBO_API=http://your-cache-server:3000
export TURBO_TOKEN=your_auth_token
export TURBO_TEAM=your_team_name- Deploy a cache server using turbo-remote-cache
- Create the package directory in the appropriate location
- Initialize with a
package.json:
{
"name": "@skillancer/your-package",
"version": "0.0.1",
"private": true
}- Run
pnpm installto update the workspace
- We use ESLint for linting
- Prettier for code formatting
- Commit messages follow Conventional Commits
# Run all tests
pnpm test
# Run tests for a specific package
pnpm test --filter=@skillancer/utils
# Run tests in watch mode
pnpm test --filter=@skillancer/utils -- --watch🚀 Now Running on Hetzner Cloud!
As of February 2026, Skillancer has migrated from AWS to Hetzner Cloud + Cloudflare R2:
- 90% cost reduction ($800/mo → $82/mo)
- Zero vendor lock-in (cloud-agnostic architecture)
- HIPAA compliant (AES-256-GCM encryption)
- EU data residency (Hetzner Frankfurt datacenter)
Migration Documentation:
- Post-Implementation Steps - Setup & deployment guide
- Quick Start - 10-minute setup
- Implementation Summary - What changed
- Complete Guide - Comprehensive reference
Compute: Hetzner Cloud K3s (Kubernetes)
Object Storage: Cloudflare R2 (S3-compatible, zero egress fees)
Block Storage: Hetzner Cloud Volumes API
Database: PostgreSQL 16 (self-hosted on Hetzner)
Cache: Redis 7 (self-hosted on Hetzner)
CDN: Cloudflare (global edge network)
Encryption: Node.js crypto (AES-256-GCM + PBKDF2)
- Hetzner Terraform:
infrastructure/hetzner/terraform/ - Cloudflare Terraform:
infrastructure/cloudflare/terraform/ - Kubernetes manifests:
infrastructure/kubernetes/production/ - Deployment scripts:
scripts/deploy-hetzner.sh
# Seed production data
pnpm db:seed:production
# Seed demo data (staging only)
pnpm db:seed:demo
# Verify migration integrity
pnpm db:verifyCopyright © 2024 Skillancer. All rights reserved.