Skip to content

feat: add full stack local development environment with docker compos…#699

Open
Yash-Karakoti wants to merge 1 commit into
Smartdevs17:mainfrom
Yash-Karakoti:feature/issue-616-docker-compose-env
Open

feat: add full stack local development environment with docker compos…#699
Yash-Karakoti wants to merge 1 commit into
Smartdevs17:mainfrom
Yash-Karakoti:feature/issue-616-docker-compose-env

Conversation

@Yash-Karakoti

Copy link
Copy Markdown
Contributor

feat: add full stack local development environment with docker compose (#616)

Description

Fixes #616

This PR introduces a unified, single-command local development environment using Docker Compose. It eliminates the need for contributors to manually install dependencies like PostgreSQL, Redis, Soroban CLI, Node.js, and Python, solving "works on my machine" inconsistencies.

Key Implementations:

  • Complete Orchestration: Added docker-compose.yml to spin up the API server, background workers, webhook dispatcher, PostgreSQL, Redis, Soroban standalone node, ML service, and mobile (Expo).
  • Hot-Reloading: Configured docker-compose.override.yml with volume mounts to support instant hot-reloading for the Node.js backend (ts-node-dev) and Expo frontend.
  • Health Checks & Startup Order: Implemented depends_on with service_healthy conditions so services wait for their database/cache dependencies before booting.
  • Resource Limits: Enforced global deployment limits across all containers (Totaling 8GB RAM and 4 CPU cores) to prevent local system crashes.
  • Test Data Seeding: Added docker/seed/seed.sql and a dedicated seed service profile to automatically populate 5 plans, 10 users, and 20 invoices.
  • Port Conflict Management: Generated an .env.example mapping all COMPOSE_PORT_* variables to allow developers to easily bypass local port conflicts.
  • Setup Automation: Created scripts/setup.sh to validate Docker installation, copy environment variables, and build the images seamlessly (with native Apple Silicon / Rosetta support).
  • Documentation: Updated README.md with the new architecture diagram and local development quick-start guide.

Pull Request Checklist

Quality Gates (All must pass before merge)

  • Lint: Code passes ESLint and Prettier checks
  • Type Check: TypeScript compilation succeeds
  • Tests: All tests pass
  • Build: Project builds successfully
  • Rust Format: Smart contract formatting is correct
  • Rust Clippy: Smart contract linting passes
  • Rust Tests: All smart contract tests pass
  • Rust Build: Smart contracts compile successfully

Additional Requirements

  • New code has appropriate TypeScript types (N/A - Infrastructure config only)
  • No hardcoded secrets or credentials (Used .env.example templates)
  • New features have corresponding tests (Seeding script covers environment tests)
  • Documentation updated if needed (README.md architecture and setup updated)

Reviewers

  • At least 1 approval required for merge
  • All CI checks must be green

This PR will not be mergeable until all quality gates pass.

@drips-wave

drips-wave Bot commented Jun 28, 2026

Copy link
Copy Markdown

@Yash-Karakoti Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add local development environment with Docker Compose for full stack

1 participant