Development Environment Setup
This guide walks you through setting up a local development environment for Arda on macOS. By the end you will have the workspace cloned, toolchains installed, secrets configured, and each repository building successfully.
Prerequisites
Section titled “Prerequisites”Install the following tools before cloning any repositories. All commands assume macOS with Homebrew available.
Homebrew
Section titled “Homebrew”If Homebrew is not installed:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Node.js
Section titled “Node.js”Install Node.js v20 or later. The recommended approach is nvm so you can switch versions per project:
brew install nvmnvm install 20nvm use 20nvm alias default 20Alternatively, install directly via Homebrew:
brew install node@20JDK 21
Section titled “JDK 21”Install Eclipse Temurin 21 (the distribution used in CI):
brew install --cask temurin@21Verify:
java -version# openjdk version "21.x.x" ...Gradle
Section titled “Gradle”Backend repositories include a Gradle wrapper (./gradlew) and do not require a system-level Gradle installation. If you want the gradle command available globally for convenience:
brew install gradleDocker or Rancher Desktop
Section titled “Docker or Rancher Desktop”Backend services use TestContainers for integration tests and can be deployed to a local Kubernetes cluster. Install one of the following:
- Docker Desktop — https://www.docker.com/products/docker-desktop
- Rancher Desktop — https://rancherdesktop.io (open source alternative)
kubectl and Helm
Section titled “kubectl and Helm”Required for deploying backend services to local Kubernetes:
brew install kubectl helm1Password CLI
Section titled “1Password CLI”Secrets (API keys, database credentials, environment-specific configuration) are managed through 1Password. Install the CLI and authenticate:
brew install --cask 1password/tap/1password-cliop signinVerify:
op whoamiYou must be a member of the Arda 1Password team and have access to the Arda Dev vault before secret-injected commands will work.
macOS ships with Git. Confirm the version is 2.35 or later (worktree commands require this):
git --versionIf you need a newer version:
brew install gitAWS CLI v2
Section titled “AWS CLI v2”Required for services that interact with AWS resources and for SSO-authenticated deployments:
brew install awscliaws configure ssoFollow the prompts to configure your SSO profile. The profile name used in Makefile targets is arda-dev — match that name during setup.
Setting Up the Workspace
Section titled “Setting Up the Workspace”The Arda workspace is a parent directory containing sibling repositories. A bootstrap script automates the setup.
Quick Start (Recommended)
Section titled “Quick Start (Recommended)”1. Clone the workspace control plane:
mkdir -p ~/code/ardacd ~/code/ardagit clone git@github.com:Arda-cards/workspace.git2. Run the bootstrap script:
bash workspace/scripts/bootstrap-workspace.sh --role full --sshThe --role flag controls which repositories are cloned:
| Role | Repositories |
|---|---|
full | All repositories (default) |
backend | Backend services + shared libraries + infrastructure + API tests + docs |
frontend | Frontend apps + component library + docs |
minimal | Workspace + documentation only |
The script is idempotent — safe to re-run if you add repos later or switch roles.
What the Bootstrap Script Does
Section titled “What the Bootstrap Script Does”- Creates symlinks at the workspace root:
CLAUDE.md → workspace/CLAUDE.md(AI agent instructions)GEMINI.md → workspace/AGENTS.md(Gemini CLI instructions).claude → workspace/instructions/claude(agent configuration)
- Creates
projects/andscratch/directories - Clones repositories based on your role
- Installs pre-commit hooks for
documentationandworkspacerepos (manifest auto-regeneration)
After setup, your workspace looks like:
arda/├── CLAUDE.md → workspace/CLAUDE.md├── GEMINI.md → workspace/AGENTS.md├── .claude → workspace/instructions/claude├── workspace/├── documentation/├── operations/├── arda-frontend-app/├── projects/├── scratch/└── ...Manual Setup
Section titled “Manual Setup”If you prefer to set things up manually or need to add a single repository:
# Clone a specific repogit clone git@github.com:Arda-cards/<repo-name>.git
# Install hooks for repos that have themcd documentation && make install-hooks && cd ..cd workspace && make install-hooks && cd ..1Password Environment Files
Section titled “1Password Environment Files”Secrets are not stored in .env files in source control. Instead, each repository contains one or more 1Password*.env files that map environment variable names to 1Password secret references. The op run command injects the resolved secrets at process startup.
Backend Repositories
Section titled “Backend Repositories”Backend repositories (operations, common-module, accounts-component) use a single 1Password.env file at the repository root:
# Build and deploy with secrets injectedop run --env-file=1Password.env -- ./gradlew buildop run --env-file=1Password.env -- ./gradlew helmInstallToLocalapi-test Repository
Section titled “api-test Repository”The api-test repository has one file per environment under 1Password/:
api-test/└── 1Password/ ├── dev.env ├── stage.env ├── prod.env └── local.env# Run tests against devop run --env-file=1Password/dev.env -- make test-dev
# Run tests against local Kubernetesop run --env-file=1Password/local.env -- make test-local1Password Vault Reference
Section titled “1Password Vault Reference”| Vault | Contents | Used By |
|---|---|---|
Arda Dev | API keys, database credentials, JWT signing keys | Backend repos, api-test |
Arda Infrastructure | AWS access credentials, Helm chart values | infrastructure, deployments |
Contact a team lead to get vault access if op run fails with “item not found” errors.
IDE Setup
Section titled “IDE Setup”IntelliJ IDEA (Kotlin Backend)
Section titled “IntelliJ IDEA (Kotlin Backend)”IntelliJ IDEA is the recommended IDE for Kotlin backend repositories. After cloning:
- Open IntelliJ IDEA and choose File > Open.
- Navigate to the repository root (e.g.,
~/code/arda/operations) and open thebuild.gradle.ktsfile as a project. - Allow IntelliJ to import the Gradle project and download dependencies. This may take several minutes on first import.
- Confirm that the project SDK is set to JDK 21: File > Project Structure > Project > SDK.
For composite builds (changes spanning common-module and a consuming service), see Multi-Repository Gradle Development.
VS Code (Frontend and AI-Assisted Work)
Section titled “VS Code (Frontend and AI-Assisted Work)”VS Code is recommended for frontend repositories and for working with Claude Code:
brew install --cask visual-studio-codeRecommended extensions:
- ESLint — for TypeScript and React linting
- Prettier — for code formatting
- Tailwind CSS IntelliSense — for
ux-prototypedevelopment - Claude Code (
anthropics.claude-code) — for AI-assisted development
Both IntelliJ IDEA and VS Code can be open simultaneously on the same workspace without conflict. A common setup is IntelliJ for backend work and VS Code as the Claude Code terminal host.
Local Kubernetes (Optional)
Section titled “Local Kubernetes (Optional)”Full-stack local development requires a running Kubernetes cluster. This is optional for frontend-only or documentation-only work.
1. Enable Kubernetes in Docker Desktop or Rancher Desktop:
- Docker Desktop: Settings > Kubernetes > Enable Kubernetes
- Rancher Desktop: Kubernetes is enabled by default
2. Verify kubectl can reach the cluster:
kubectl cluster-info3. Deploy a backend service:
op run --env-file=1Password.env -- ./gradlew helmInstallToLocalThis builds the service, packages it as a Helm chart, and installs it into the local cluster. Helm values for local deployment live in helm/values-local.yaml within each backend repository.
4. Set up port forwarding as needed:
kubectl port-forward svc/operations 8080:8080Verification Checklist
Section titled “Verification Checklist”Run the following commands after setup to confirm each layer of the stack is working.
Backend:
cd ~/code/arda/operations./gradlew buildA successful build produces no errors and runs all unit tests. Integration tests are excluded from the default build profile.
Frontend:
cd ~/code/arda/arda-frontend-appnpm installnpm run dev:mockThe development server starts on http://localhost:3000 with a mock API backend. No real backend services are required.
Documentation site:
cd ~/code/arda/documentationnpm installmake buildThe site builds to dist/ without errors. Run make test-preview to catch link errors that are only visible under the production base path.
API tests:
cd ~/code/arda/api-testnpm installop run --env-file=1Password/dev.env -- make test-devAI Agent Setup
Section titled “AI Agent Setup”Installing Claude Code
Section titled “Installing Claude Code”Claude Code is the primary AI coding assistant used at Arda. Install it as an npm global package:
npm install -g @anthropic/claude-codeAuthenticate:
claude loginWorkspace Configuration
Section titled “Workspace Configuration”The .claude symlink at the workspace root points to workspace/instructions/claude/. This directory contains:
agents/— persona definitions loaded by the team-lead skillskills/— on-demand skill files (coding conventions, release workflows, etc.)rules/— always-on behavior rules applied to every session
When you start Claude Code from ~/code/arda/, it automatically picks up the workspace-level configuration and project-level CLAUDE.md. You do not need to configure anything manually.
Agent Behavior Conventions
Section titled “Agent Behavior Conventions”Key conventions that Claude Code follows in this workspace:
- Consultative by default. Claude Code produces explanations and plans unless you explicitly ask for file changes.
- Concrete artifacts. When changes are requested, output is files — not conversational summaries.
- Absolute paths only. When working across sibling repositories, all file operations use absolute paths to avoid operating on the wrong directory.
- Secrets never in source. Claude Code is configured not to commit
1Password*.envfiles or any file containing API keys or credentials.
For AI-assisted multi-agent team workflows, see Working with AI Agent Assistants.
Related Pages
Section titled “Related Pages”- Development Workflows — Quick reference for build, test, and deploy commands.
- Worktree Conventions — How to structure Git worktrees for project work.
- Multi-Repository Gradle Development — Working across
common-moduleand consuming services. - Working with AI Agent Assistants — Collaborating with Claude Code and multi-agent teams.
Copyright: (c) Arda Systems 2025-2026, All rights reserved
Copyright: © Arda Systems 2025-2026, All rights reserved