diff --git a/.cursor/environment.docker-compose.json b/.cursor/environment.docker-compose.json new file mode 100644 index 000000000..ef96b3d06 --- /dev/null +++ b/.cursor/environment.docker-compose.json @@ -0,0 +1,18 @@ +{ + "install": "yarn install && echo 'Setting up Docker Compose environment...' && cd packages/twenty-docker && cp -n docker-compose.yml docker-compose.dev.yml || true", + "start": "sudo service docker start && cd packages/twenty-docker && echo 'Installing yq...' && sudo apt-get update && sudo apt-get install -y wget && wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq && echo 'Patching docker-compose for local development...' && yq eval 'del(.services.server.image)' -i docker-compose.dev.yml && yq eval '.services.server.build.context = \"../../\"' -i docker-compose.dev.yml && yq eval '.services.server.build.dockerfile = \"./packages/twenty-docker/twenty/Dockerfile\"' -i docker-compose.dev.yml && yq eval 'del(.services.worker.image)' -i docker-compose.dev.yml && yq eval '.services.worker.build.context = \"../../\"' -i docker-compose.dev.yml && yq eval '.services.worker.build.dockerfile = \"./packages/twenty-docker/twenty/Dockerfile\"' -i docker-compose.dev.yml && echo 'Setting up .env file...' && echo 'SERVER_URL=http://localhost:3000' > .env && echo 'APP_SECRET='$(openssl rand -base64 32) >> .env && echo 'PG_DATABASE_PASSWORD='$(openssl rand -hex 16) >> .env && echo 'SIGN_IN_PREFILLED=true' >> .env && echo 'Building and starting services...' && docker-compose -f docker-compose.dev.yml up -d --build", + "terminals": [ + { + "name": "Docker Compose Logs", + "command": "sleep 30 && cd packages/twenty-docker && docker-compose -f docker-compose.dev.yml logs -f" + }, + { + "name": "Database Seed", + "command": "sleep 60 && cd packages/twenty-docker && echo 'Waiting for services to be ready...' && until docker-compose -f docker-compose.dev.yml exec -T server curl --fail http://localhost:3000/healthz 2>/dev/null; do echo 'Waiting for server...'; sleep 5; done && echo 'Seeding database...' && docker-compose -f docker-compose.dev.yml exec -T server yarn command:prod -- workspace:seed:dev" + }, + { + "name": "Service Status", + "command": "sleep 10 && cd packages/twenty-docker && while true; do clear; echo '=== Service Status ===' && docker-compose -f docker-compose.dev.yml ps && echo '\\n=== Health Status ===' && docker-compose -f docker-compose.dev.yml exec -T server curl -s http://localhost:3000/healthz 2>/dev/null && echo ' - Server: Healthy' || echo ' - Server: Starting...' && sleep 30; done" + } + ] +} \ No newline at end of file diff --git a/.cursor/environment.json b/.cursor/environment.json new file mode 100644 index 000000000..aea8e2558 --- /dev/null +++ b/.cursor/environment.json @@ -0,0 +1,14 @@ +{ + "install": "yarn install", + "start": "sudo service docker start && echo 'Waiting for Docker to start...' && sleep 5 && echo 'Starting PostgreSQL and Redis containers...' && make postgres-on-docker && make redis-on-docker && sleep 15 && echo 'Containers started successfully! Checking status...' && docker ps --filter name=twenty_", + "terminals": [ + { + "name": "Development Server", + "command": "sleep 20 && echo 'Starting Twenty development server...' && export SERVER_URL=http://localhost:3000 && yarn start" + }, + { + "name": "Logs & Status", + "command": "sleep 10 && echo '=== Waiting for containers to be ready ===' && until docker exec twenty_pg pg_isready -U postgres 2>/dev/null; do echo 'Waiting for PostgreSQL...'; sleep 2; done && echo 'PostgreSQL is ready!' && echo '=== Container Status ===' && docker ps --filter name=twenty_ --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}' && echo '\\n=== Following PostgreSQL logs ===' && docker logs -f twenty_pg" + } + ] +} \ No newline at end of file