This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a monorepo containing multiple projects organized by company/product. All projects are included as Git submodules for centralized management and cross-project development.
central/
├── DNC/ # DoNotCarry delivery service projects
│ ├── apps/ # Mobile applications (React Native)
│ ├── backend/ # Laravel backends (v1 and v2)
│ └── utils/ # Shared utilities and packages
├── KCC/ # KCC Booklet projects
│ └── Booklet/ # Mobile app and Laravel backend
├── Metrix/ # Metrix Group projects
│ ├── AR-Character/ # Augmented reality project
│ └── mcp-insights/ # MCP server for Neo4j knowledge graphs
└── ReyemTech/ # Reyem Tech infrastructure and websites
├── cluster/ # Kubernetes cluster provisioning
├── gta-events/ # Laravel events application
├── sail/ # Docker/Helm scaffolding for Laravel
└── website/ # Company website (Laravel)
# Clone with all submodules
git clone --recursive git@github.com:user/central.git
# Or initialize submodules after cloning
git submodule update --init --recursive# Update all submodules to latest commit on their tracked branch
git submodule update --remote
# Update a specific submodule
git submodule update --remote DNC/backend/v2Each submodule is a full Git repository. To make changes:
cd DNC/backend/v2
# Make your changes
git add .
git commit -m "Description"
git push
# Return to parent repo and commit the submodule reference update
cd ../..
git add DNC/backend/v2
git commit -m "Update backend v2 submodule"
git pushLocation: DNC/backend/v1/
Setup:
cd DNC/backend/v1
make environment # Installs dependencies and sets up Homestead
vagrant upCommon Commands:
vagrant up # Start VM
vagrant suspend # Stop VM
vagrant ssh # SSH into VMAccess:
- Application: http://dnc.local/
- Admin: http://dnc.local/admin/login
- Mailpit: http://dnc.local:8025
- Database: dnc.local:3306 (user: homestead, password: secret)
Location: DNC/backend/v2/
Setup:
cd DNC/backend/v2
cp .env.example .env
composer install
php artisan key:generate
php artisan jwt:secret
./vendor/bin/sail up -dCommon Commands:
# Lifecycle
./vendor/bin/sail up -d # Start containers
./vendor/bin/sail down # Stop containers
./vendor/bin/sail logs -f # Follow logs
make start # Start with full setup (certs, hosts, etc.)
make stop # Stop containers
make restart # Restart Laravel container
make status # Check container status
# Development
./vendor/bin/sail artisan <command> # Run Artisan commands
./vendor/bin/sail composer <command> # Composer commands
./vendor/bin/sail npm <command> # NPM commands
./vendor/bin/sail php <script> # Run PHP scripts
# Testing & Code Quality
./vendor/bin/sail artisan test --env=testing
./vendor/bin/sail artisan test --env=testing tests/Feature/Cart/CartTest.php --filter=cart_total_is_correct
./vendor/bin/sail php ./vendor/bin/phpstan analyse
./vendor/bin/sail artisan pint
# Cache
./vendor/bin/sail artisan icons:cacheAccess:
- Application: http://localhost or https://local.donotcarry.tech
- Admin: http://localhost/admin
- Horizon: http://localhost/horizon
- API Docs: http://localhost/docs/api
- Mailpit UI: http://localhost:8025
- MinIO: http://localhost:9600
- Database: 127.0.0.1:3307 (user: sail, password: password)
Important Notes:
- v2 uses Filament v3 for admin panel
- Uses Livewire Volt (functional and class-based components)
- Uses Flux UI Pro for UI components
- Has comprehensive Laravel Boost guidelines in
CLAUDE.mdfile
Locations:
- Customer App:
DNC/apps/customer/ - Driver App:
DNC/apps/driver/ - Fastlane Config:
DNC/apps/fastlane/
These are React Native applications for iOS and Android.
Locations:
DNC/utils/api-sdk/- API SDKDNC/utils/filament-google-maps/- Filament Google Maps integrationDNC/utils/geokit/- Geolocation utilities
Location: ReyemTech/cluster/
Setup:
cd ReyemTech/cluster
brew install tfenv
tfenv install 1.11.3
tfenv use 1.11.3
vim terraform.tfvars # Configure your variables
terraform init
terraform plan
terraform applyComponents:
- Traefik: Ingress routing with Let's Encrypt SSL
- External DNS: Automated DNS management (AWS Route53)
- OAuth2 Proxy: Google Authentication for Traefik dashboard
- Redis Operator: Redis cluster management
- MySQL Operator: High-availability MySQL with automated backups
- Vault: Secret management with UI
- External Secrets Operator (ESO): Syncs Vault with Kubernetes secrets
Post-Provisioning:
- Access Vault UI at https://vault.example.com
- Initialize and unseal Vault
- Run bootstrap script:
kubectl exec -it vault-0 -n vault -- /vault/bootstrap/vault-bootstrap.sh
Location: ReyemTech/gta-events/
Setup:
cd ReyemTech/gta-events
composer install
cp .env.example .env
php artisan key:generate
php artisan jwt:secret
npm installCommon Commands:
php artisan serve
npm run dev
php artisan test --compact
vendor/bin/pint --dirtyImportant Notes:
- Laravel 12 with Inertia v2 + React 19
- Uses Pest 4 for testing (including browser tests)
- Uses Laravel Wayfinder for type-safe routing
- Uses Laravel Fortify for authentication
- Uses Tailwind CSS v4
- Has comprehensive Laravel Boost guidelines in
CLAUDE.mdfile
Location: ReyemTech/sail/
Custom Laravel package that provides Docker/Helm scaffolding for Laravel applications.
Key Command:
php artisan sail:build [options]Non-interactive Flags:
--environments=local,production--architectures=linux/amd64,linux/arm64--repository=ghcr.io|registry.gitlab.com|docker.io|none--organization=acme--domains=app.example.com,api.example.com--build-version=1.2.3--push(push built images)--use-previous(reuse last saved config)--bump=patch|minor|major|no
Location: Metrix/mcp-insights/
MCP server for MetrixGroup AI Insights Neo4j knowledge graph.
Setup:
cd Metrix/mcp-insights
pip install -e .
# or
uv pip install -e .
cp .env.example .env
# Configure Neo4j connection detailsRunning:
# Stdio (for Claude Code/Desktop)
python -m mcp_neo4j_insights.server
# or
mcp-neo4j-insights
# HTTP transport
mcp-neo4j-insights --transport http --port 8000
# SSE transport
mcp-neo4j-insights --transport sse --port 8000Claude Code Configuration:
Add to ~/.claude/mcp_servers.json:
{
"mcp-neo4j-insights": {
"command": "python",
"args": ["-m", "mcp_neo4j_insights.server"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your-password"
}
}
}Available Tools:
- Create: projects, behaviors, stakeholders, audiences, interviews, gaps, evidence, recommendations
- Query: behaviors, gaps, interviews, project context, evidence chains
- Bulk: create multiple gaps or evidence items
- Export: PDF reports, Excel spreadsheets
All Laravel projects in this monorepo follow similar patterns:
Environment Configuration:
- Never use
env()directly in code - only in config files - Use
config('key')to access configuration values - All API keys and secrets go in
.envfiles
Database Patterns:
- Use Eloquent ORM with proper relationships and type hints
- Avoid raw DB queries - prefer
Model::query() - Use eager loading to prevent N+1 queries
- Migrations must include all previous column attributes when modifying
Testing:
- All code changes must have tests
- Run minimal tests with filters:
php artisan test --filter=testName - Use factories for test data
- Follow existing test patterns (Pest or PHPUnit depending on project)
Code Style:
- Run Laravel Pint before committing:
vendor/bin/pint --dirty - Use curly braces for all control structures
- Use constructor property promotion in PHP 8+
- Always use explicit return type declarations
Each Laravel submodule may have its own CLAUDE.md file with detailed Laravel Boost guidelines. Always check for and follow project-specific guidelines:
DNC/backend/v2/CLAUDE.md- Laravel 11, Filament v3, Livewire Volt, Flux UI ProReyemTech/gta-events/CLAUDE.md- Laravel 12, Inertia v2, React 19, Wayfinder, Pest 4
- Each submodule is an independent Git repository
- Changes in a submodule require commits in both the submodule AND parent repo
- Always check which directory you're in before running commands
- Submodules may use different PHP/Node versions - check project requirements
- DNC Backend v1: Uses Vagrant/Homestead (VirtualBox or Parallels)
- DNC Backend v2: Uses Laravel Sail (Docker)
- Other Laravel Projects: May use different setups - check README
- Kubernetes: ReyemTech cluster requires Terraform and cloud provider access
- Write tests for all new features and bug fixes
- Run affected tests before finalizing changes
- Use filters to run specific tests quickly
- Browser tests available in Pest 4 projects
- Never commit
.envfiles or secrets - All Laravel projects use JWT for API authentication
- Backend v2 integrations: ShipEngine, Firebase, Bugsnag
- Kubernetes cluster uses Vault for secret management