Skip to content

Development Setup

Before you begin, ensure you have the following installed:

Terminal window
git clone https://github.com/southwellmedia-dev/aether-platform.git
cd aether-platform
Terminal window
npm install

This will install all dependencies for the monorepo, including:

  • Web application dependencies
  • Plugin dependencies
  • Shared package dependencies

Create a .env file in the root of the project:

Terminal window
cp .env.example .env

Update the following variables in your .env file:

Terminal window
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/aether_dev"
# Better Auth
BETTER_AUTH_SECRET="your-secret-key-here"
BETTER_AUTH_URL="http://localhost:3000"
# Optional: Debug flags
NEXT_PUBLIC_SHOW_RAW_ONBOARDING=true # Show raw onboarding data in settings

Make sure PostgreSQL is running, then:

Terminal window
# Generate Prisma client
npm run db:generate
# Push schema to database
npm run db:push
# (Optional) Seed the database with test data
npm run db:seed
Terminal window
npm run dev

This starts:

  • Web app at http://localhost:3000
  • Documentation at http://localhost:4321/docs
aether-platform/
├── apps/
│ ├── web/ # Next.js web application
│ └── docs/ # Starlight documentation site
├── packages/
│ ├── core/ # Core domain & infrastructure
│ ├── database/ # Prisma schema and migrations
│ ├── ui/ # Shared UI components
│ ├── auth-utils/ # Authentication utilities
│ └── plugins/ # Plugin packages
│ ├── plugins-core/ # Plugin framework
│ ├── timer/ # Timer plugin
│ ├── tasks/ # Tasks plugin
│ └── ...
└── docs/
├── constitution/ # Architectural documentation
└── guides/ # Developer guides
Terminal window
npm run create:plugin

This interactive script will:

  1. Prompt for plugin details (name, description)
  2. Create plugin package structure
  3. Generate manifest boilerplate
  4. Update plugin registry

After making changes to plugin manifests:

Terminal window
npm run generate:manifests

This regenerates apps/web/src/lib/plugins/manifest-registry.generated.ts

Terminal window
# Type checking
npm run typecheck
# Linting
npm run lint
# Format code
npm run format
# Run tests
npm run test
Terminal window
# Generate Prisma client
npm run db:generate
# Push schema changes to database
npm run db:push
# Create a new migration
npm run db:migrate
# Open Prisma Studio (database GUI)
npm run db:studio
# Seed the database
npm run db:seed

Aether enforces constitutional architecture rules:

Terminal window
# Check domain purity (no infrastructure dependencies in domain layer)
npm run check:architecture

If port 3000 or 4321 is already in use:

Terminal window
# Kill all node processes (Windows)
taskkill /F /IM node.exe
# Kill all node processes (Mac/Linux)
killall node
  1. Ensure PostgreSQL is running
  2. Verify DATABASE_URL in .env
  3. Check database exists: psql -U postgres -l
  4. Create database if missing: createdb aether_dev
  1. Check plugin is enabled in Settings > Plugins
  2. Verify business type matches plugin requirements
  3. Regenerate manifests: npm run generate:manifests
  4. Refresh the page
Terminal window
# Clean and rebuild
npm run clean:all
npm install
npm run generate:manifests
npm run build