Skip to main content

Development Environment Setup

This guide walks through setting up the local development environment for the uzdavines.ai platform.

Prerequisites

RequirementVersionPurpose
Node.js>= 20.0JavaScript runtime
npm>= 10.0Package manager (ships with Node.js)
GitLatestVersion control
GitHub CLI (gh)LatestPR management, deploy hooks

Clone and Install

git clone https://github.com/bobbyuzda1/uzdavines-platform.git
cd uzdavines-platform
npm install

The monorepo uses npm workspaces. Running npm install at the root installs dependencies for all apps and packages.

Environment Variables

Create a .env file at the monorepo root:

# Render
RENDER_API_KEY=
RENDER_HOMEPAGE_DEPLOY_HOOK=
RENDER_DOCS_DEPLOY_HOOK=
RENDER_RESUME_DEPLOY_HOOK=

# Cloudflare
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_ZONE_ID=

# AI
ANTHROPIC_API_KEY=
caution

Never commit .env files. The .gitignore is already configured to exclude them.

Running Locally

Each app runs independently on localhost:3000:

# Homepage
npm run dev:homepage

# Docs site
npm run dev:docs

# Resume site
npm run dev:resume

Build Commands

# Build individual apps
npm run build:homepage
npm run build:docs
npm run build:resume

Git Configuration

The repository uses the following git settings:

git config core.autocrlf input

This ensures consistent line endings across Windows and Linux environments (important for WSL development).

Project Structure

uzdavines-platform/
├── apps/
│ ├── homepage/ # Next.js — localhost:3000
│ ├── docs/ # Docusaurus — localhost:3000
│ └── resume/ # Next.js — localhost:3000
├── packages/
│ └── shared/ # Shared utilities
├── .github/
│ └── workflows/ # CI/CD pipeline definitions
├── .env # Environment variables (gitignored)
└── package.json # Workspace root

Branching Strategy

Branch PatternPurposeExample
mainProduction branch
feat/*New featuresfeat/add-chatbot
fix/*Bug fixesfix/nav-alignment
docs/*Documentation changesdocs/update-sops
chore/*Maintenance taskschore/dependency-bump

All branches are created from main and merged back via pull request with squash merge.