Skip to main content

Developer Onboarding

A structured learning path for new developers joining the Vertical Template project.

Day 1: Environment Setup (30 minutes)

Morning: Get Running

  1. Setup Environment (15 minutes)

  2. Explore the Codebase (15 minutes)

    • Browse src/ folder structure
    • Open src/eai.config/tenants/template.config.ts
    • Look at src/app/page.tsx

Afternoon: First Modification

  1. Your First Change (30 minutes)
    • Complete First Vertical tutorial
    • Create a tenant config with your name
    • Add one custom component

Day 1 Checkpoint:

  • App runs locally without errors
  • Can explain what a "tenant config" is
  • Made at least one code change and saw hot reload

Day 2: Understanding Architecture (1 hour)

Morning: System Architecture

  1. Read Architecture Docs (30 minutes)

  2. Trace a Request (15 minutes)

    • Open browser DevTools → Network tab
    • Click around in the app
    • Find calls to /api/eai/*
    • Understand: Browser → Next.js → Backend

Afternoon: Configuration System

  1. Deep Dive: Config System (30 minutes)

    • Read Configuration Overview
    • Study src/eai.config/types.ts
    • Understand store slices, layout slots, storeBindings
  2. Experiment (15 minutes)

    • Modify a showWhen condition
    • Add a new store slice
    • Change component priority order

Day 2 Checkpoint:

  • Can draw the request flow (Browser → BFF → Backend)
  • Understand config-driven UI concept
  • Can explain store slices and storeBindings

Week 1: Building Features

Days 3-4: Extension Patterns

  1. Adding Pages (1 hour)

    • Read Adding Pages
    • Create a new page at /dashboard
    • Make it tenant-aware
  2. Adding API Routes (1 hour)

  3. Custom Components (1 hour)

    • Read Custom Components
    • Create a component using Shadcn/ui primitives
    • Register it in ComponentRegistry
    • Add to a tenant config

Day 5: State Management

  1. Zustand Store Patterns (1 hour)
    • Read Data Flow
    • Use useStoreValue, useSetStore
    • Implement slice persistence
    • Debug with Redux DevTools

Week 1 Checkpoint:

  • Created a new page
  • Created a protected API route
  • Created and registered a custom component
  • Used store hooks to read/write state

Week 2: Advanced Topics

API Integration

  1. Client Package (2 hours)

    • Explore packages/client/
    • Use useProjects, useProvision hooks
    • Understand createAPIClient factory
  2. Public API Access (1 hour)

Architecture Decisions

  1. ADRs (1 hour)
    • Read ADRs in docs/architecture/decisions/
    • Understand "why" behind technical choices
    • Learn when to create new ADRs

AI-Assisted Development

  1. CLAUDE.md and Skills (30 minutes)
    • Read CLAUDE.md at project root
    • Understand AI context files
    • Try Agent Skills (if using Claude Code)

Week 2 Checkpoint:

  • Made API calls using client hooks
  • Understand authentication flows
  • Know where to find architectural decisions
  • Comfortable with AI assistance tools

Reference Reading List

Required Reading (First Week)

DocumentTimePurpose
Quickstart10 minGet running
First Vertical30 minHands-on learning
Architecture Overview20 minSystem understanding
Configuration Overview20 minConfig system
DocumentTimePurpose
Tenant Config Reference30 minDeep config knowledge
All ADRs45 minArchitectural context
Hooks Reference30 minAPI reference
Components Reference30 minComponent catalog

External Resources


Getting Help

Internal Resources

  • GitHub Issues: Report bugs or request features
  • CLAUDE.md: AI-optimized project context

Asking Good Questions

When seeking help, include:

  1. What you're trying to accomplish
  2. What you've tried
  3. Error messages (full text)
  4. Relevant code snippets

Common Stumbling Blocks

IssueUsually Caused BySolution
Component not renderingNot in ComponentRegistryRegister component
Store not updatingWrong storePathCheck path in config
API 401 errorsMissing/expired tokenCheck Entra credentials
Type errorsOutdated depsnpm install

Onboarding Completion Checklist

By the end of Week 2, you should be able to:

  • Set up local development environment
  • Create new tenant configurations
  • Add pages, API routes, and components
  • Use the Zustand store effectively
  • Make authenticated API calls
  • Navigate codebase independently
  • Understand architecture decisions
  • Find answers in documentation

Welcome to the team! 🎉