- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
183 lines
2.7 KiB
Markdown
183 lines
2.7 KiB
Markdown
# Development Guide
|
|
|
|
This guide will help you set up your development environment for Sankofa Phoenix.
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 18+ and pnpm (or npm/yarn)
|
|
- PostgreSQL 14+ (for API)
|
|
- Go 1.21+ (for Crossplane provider)
|
|
- Docker (optional, for local services)
|
|
|
|
## Initial Setup
|
|
|
|
### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/sankofa/Sankofa.git
|
|
cd Sankofa
|
|
```
|
|
|
|
### 2. Install Dependencies
|
|
|
|
```bash
|
|
# Main application
|
|
pnpm install
|
|
|
|
# Portal
|
|
cd portal
|
|
npm install
|
|
cd ..
|
|
|
|
# API
|
|
cd api
|
|
npm install
|
|
cd ..
|
|
|
|
# Crossplane Provider
|
|
cd crossplane-provider-proxmox
|
|
go mod download
|
|
cd ..
|
|
```
|
|
|
|
### 3. Set Up Environment Variables
|
|
|
|
Create `.env.local` files:
|
|
|
|
```bash
|
|
# Root .env.local
|
|
cp .env.example .env.local
|
|
|
|
# Portal .env.local
|
|
cd portal
|
|
cp .env.example .env.local
|
|
cd ..
|
|
|
|
# API .env.local
|
|
cd api
|
|
cp .env.example .env.local
|
|
cd ..
|
|
```
|
|
|
|
### 4. Set Up Database
|
|
|
|
```bash
|
|
# Create database
|
|
createdb sankofa
|
|
|
|
# Run migrations
|
|
cd api
|
|
npm run db:migrate
|
|
```
|
|
|
|
## Running the Application
|
|
|
|
### Development Mode
|
|
|
|
```bash
|
|
# Main app (port 3000)
|
|
pnpm dev
|
|
|
|
# Portal (port 3001)
|
|
cd portal
|
|
npm run dev
|
|
|
|
# API (port 4000)
|
|
cd api
|
|
npm run dev
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Main app tests
|
|
pnpm test
|
|
|
|
# Portal tests
|
|
cd portal
|
|
npm test
|
|
|
|
# Crossplane provider tests
|
|
cd crossplane-provider-proxmox
|
|
go test ./...
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
Sankofa/
|
|
├── src/ # Main Next.js app
|
|
├── portal/ # Portal application
|
|
├── api/ # GraphQL API server
|
|
├── crossplane-provider-proxmox/ # Crossplane provider
|
|
├── gitops/ # GitOps configurations
|
|
├── cloudflare/ # Cloudflare configs
|
|
└── docs/ # Documentation
|
|
```
|
|
|
|
## Common Tasks
|
|
|
|
### Adding a New Component
|
|
|
|
1. Create component in `src/components/`
|
|
2. Add tests in `src/components/**/*.test.tsx`
|
|
3. Export from appropriate index file
|
|
4. Update Storybook (if applicable)
|
|
|
|
### Adding a New API Endpoint
|
|
|
|
1. Add GraphQL type definition in `api/src/schema/typeDefs.ts`
|
|
2. Add resolver in `api/src/schema/resolvers.ts`
|
|
3. Add service logic in `api/src/services/`
|
|
4. Add tests
|
|
|
|
### Database Migrations
|
|
|
|
```bash
|
|
cd api
|
|
# Create migration
|
|
npm run db:migrate:create migration-name
|
|
|
|
# Run migrations
|
|
npm run db:migrate
|
|
```
|
|
|
|
## Debugging
|
|
|
|
### Frontend
|
|
|
|
- Use React DevTools
|
|
- Check browser console
|
|
- Use Next.js debug mode: `NODE_OPTIONS='--inspect' pnpm dev`
|
|
|
|
### Backend
|
|
|
|
- Use VS Code debugger
|
|
- Check API logs
|
|
- Use GraphQL Playground at `http://localhost:4000/graphql`
|
|
|
|
## Code Quality
|
|
|
|
### Linting
|
|
|
|
```bash
|
|
pnpm lint
|
|
```
|
|
|
|
### Type Checking
|
|
|
|
```bash
|
|
pnpm type-check
|
|
```
|
|
|
|
### Formatting
|
|
|
|
```bash
|
|
pnpm format
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for common issues and solutions.
|
|
|