diff --git a/.cursor/rules/conventional-commits.mdc b/.cursor/rules/conventional-commits.mdc new file mode 100644 index 0000000..464944b --- /dev/null +++ b/.cursor/rules/conventional-commits.mdc @@ -0,0 +1,67 @@ +--- +description: "Enforces conventional commit message format for better version control and changelog generation" +globs: ["**/*"] +--- + +# Conventional Commit Messages + +Use the Conventional Commit Messages specification to generate commit messages. + +## Commit Message Structure + +``` +[optional scope]: + +[optional body] + +[optional footer(s)] +``` + +## Commit Types + +- `fix`: Patches a bug in your codebase (correlates with PATCH in Semantic Versioning) +- `feat`: Introduces a new feature to the codebase (correlates with MINOR in Semantic Versioning) +- `BREAKING CHANGE`: Introduces a breaking API change (correlates with MAJOR in Semantic Versioning) +- Other allowed types: `build:`, `chore:`, `ci:`, `docs:`, `style:`, `refactor:`, `perf:`, `test:` + +## Specification Details + +1. Commits MUST be prefixed with a type, followed by an OPTIONAL scope, OPTIONAL !, and REQUIRED terminal colon and space +2. The type `feat` MUST be used when adding a new feature +3. The type `fix` MUST be used when fixing a bug +4. A scope MAY be provided after a type, surrounded by parenthesis (e.g., `fix(parser):`) +5. A description MUST immediately follow the colon and space +6. A longer commit body MAY be provided after the short description +7. One or more footers MAY be provided one blank line after the body +8. Breaking changes MUST be indicated in the type/scope prefix or as a footer +9. If included as a footer, a breaking change MUST use: `BREAKING CHANGE: description` +10. If included in the type/scope prefix, breaking changes MUST use `!` before the `:` +11. Types other than `feat` and `fix` MAY be used +12. Information MUST NOT be treated as case sensitive, except for `BREAKING CHANGE` +13. `BREAKING-CHANGE` MUST be synonymous with `BREAKING CHANGE` + +## Examples + +``` +feat: add new authentication system + +This commit adds a new authentication system using JWT tokens. +The system supports both local and OAuth authentication methods. + +BREAKING CHANGE: Authentication endpoints have been moved to /api/v2/auth +``` + +``` +fix(parser): handle empty input gracefully + +Previously, the parser would throw an error when given empty input. +This commit adds proper handling for empty input cases. +``` + +``` +chore: update dependencies + +- Update React to v18.2.0 +- Update TypeScript to v4.9.5 +- Update Jest to v29.5.0 +``` \ No newline at end of file diff --git a/.cursor/rules/docker-configuration.mdc b/.cursor/rules/docker-configuration.mdc new file mode 100644 index 0000000..2b4308d --- /dev/null +++ b/.cursor/rules/docker-configuration.mdc @@ -0,0 +1,33 @@ +--- +description: "Provides guidelines for Docker service configuration and setup" +globs: ["docker-compose.yml", "Dockerfile*", "volumes/**/*"] +--- + +# Docker Configuration Guide + +## Service Configuration +The [docker-compose.yml](mdc:docker-compose.yml) file defines all service configurations and their relationships. Key aspects include: +- Service dependencies +- Volume mounts +- Network configuration +- Environment variables +- Port mappings + +## Custom Images +Two custom Docker images are used: +1. [Dockerfile.n8n](mdc:Dockerfile.n8n) - Extends official n8n image with custom configurations +2. [Dockerfile.temporal](mdc:Dockerfile.temporal) - Extends official Temporal auto-setup image + +## Data Persistence +All service data is persisted in Docker volumes mapped to the local `volumes/` directory: +- n8n data: `./volumes/n8n_data` +- OpenSearch: `./volumes/opensearch-data` +- PostgreSQL: `./volumes/postgresql-data` + +## Network Configuration +Services communicate over an internal Docker network with the following exposed ports: +- n8n: 5678 (HTTP) +- Temporal: 7233 (gRPC) +- Temporal UI: 8080 (HTTP) +- PostgreSQL: 5432 +- OpenSearch: 9200 (HTTP) \ No newline at end of file diff --git a/.cursor/rules/no-apologies-rule.mdc b/.cursor/rules/no-apologies-rule.mdc new file mode 100644 index 0000000..0a597b1 --- /dev/null +++ b/.cursor/rules/no-apologies-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Prohibits the use of apologies in communication" +globs: ["**/*"] +--- + +- Never use apologies \ No newline at end of file diff --git a/.cursor/rules/no-summaries-rule.mdc b/.cursor/rules/no-summaries-rule.mdc new file mode 100644 index 0000000..798c238 --- /dev/null +++ b/.cursor/rules/no-summaries-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Prohibits summarizing changes made in communication" +globs: ["**/*"] +--- + +- Don't summarize changes made \ No newline at end of file diff --git a/.cursor/rules/no-unnecessary-confirmations-rule.mdc b/.cursor/rules/no-unnecessary-confirmations-rule.mdc new file mode 100644 index 0000000..70f1d22 --- /dev/null +++ b/.cursor/rules/no-unnecessary-confirmations-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Prohibits asking for confirmation of information already provided in context" +globs: ["**/*"] +--- + +- Don't ask for confirmation of information already provided in the context \ No newline at end of file diff --git a/.cursor/rules/no-unnecessary-updates-rule.mdc b/.cursor/rules/no-unnecessary-updates-rule.mdc new file mode 100644 index 0000000..6fe1d52 --- /dev/null +++ b/.cursor/rules/no-unnecessary-updates-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Prohibits suggesting updates or changes when no modifications are needed" +globs: ["**/*"] +--- + +- Don't suggest updates or changes to files when there are no actual modifications needed \ No newline at end of file diff --git a/.cursor/rules/preserve-existing-code-rule.mdc b/.cursor/rules/preserve-existing-code-rule.mdc new file mode 100644 index 0000000..f7597e2 --- /dev/null +++ b/.cursor/rules/preserve-existing-code-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Ensures preservation of existing code and functionality during modifications" +globs: ["**/*"] +--- + +- Don't remove unrelated code or functionalities. Pay attention to preserving existing structures. \ No newline at end of file diff --git a/.cursor/rules/project-structure.mdc b/.cursor/rules/project-structure.mdc new file mode 100644 index 0000000..5383e75 --- /dev/null +++ b/.cursor/rules/project-structure.mdc @@ -0,0 +1,28 @@ +--- +description: "Documents the project structure and service architecture" +globs: ["**/*"] +--- + +# Project Structure Guide + +This repository contains a Docker Compose setup for running n8n (workflow automation tool) and Temporal (workflow orchestration platform) services together. + +## Key Files +- [docker-compose.yml](mdc:docker-compose.yml) - Main service orchestration configuration +- [Dockerfile.n8n](mdc:Dockerfile.n8n) - Custom n8n image configuration +- [Dockerfile.temporal](mdc:Dockerfile.temporal) - Custom Temporal image configuration + +## Important Directories +- `volumes/` - Contains persistent data for all services: + - `n8n_data/` - n8n workflows and data + - `opensearch-data/` - OpenSearch data for Temporal + - `postgresql-data/` - PostgreSQL database for Temporal +- `scripts/` - Contains utility scripts for setup and maintenance + +## Service Architecture +The project consists of several interconnected services: +1. n8n (Port 5678) - Workflow automation tool +2. Temporal Server (Port 7233) - Workflow orchestration engine +3. Temporal UI (Port 8080) - Web interface for Temporal +4. PostgreSQL (Port 5432) - Database for Temporal +5. OpenSearch (Port 9200) - Search engine for Temporal visibility features \ No newline at end of file diff --git a/.cursor/rules/service-configuration.mdc b/.cursor/rules/service-configuration.mdc new file mode 100644 index 0000000..0da1e7f --- /dev/null +++ b/.cursor/rules/service-configuration.mdc @@ -0,0 +1,31 @@ +--- +description: "Provides service setup, health verification, and troubleshooting guidelines" +globs: ["scripts/*.sh", "docker-compose.yml", ".env*"] +--- + +# Service Configuration Guide + +## Setup Instructions +1. Run [scripts/setup_volumes.sh](mdc:scripts/setup_volumes.sh) to create required volume directories +2. Create `.env` file from `.env.example` for environment configuration +3. Use `docker compose up -d` to start all services + +## Service Health Verification +The [scripts/check_services.sh](mdc:scripts/check_services.sh) script verifies accessibility of: +- n8n health endpoint (http://localhost:5678/healthz) +- Temporal UI (http://localhost:8080) +- OpenSearch API (http://localhost:9200) +- Temporal server gRPC (localhost:7233) +- PostgreSQL database (localhost:5432) + +## Service Access +- n8n UI: http://localhost:5678 +- Temporal UI: http://localhost:8080 +- OpenSearch API: http://localhost:9200 + +## Troubleshooting +1. Check container logs using `docker logs` +2. Verify port availability +3. Ensure sufficient Docker resources +4. Run setup script for volume mount issues +5. Check service health endpoints \ No newline at end of file diff --git a/.cursor/rules/single-chunk-edits-rule.mdc b/.cursor/rules/single-chunk-edits-rule.mdc new file mode 100644 index 0000000..de1d60c --- /dev/null +++ b/.cursor/rules/single-chunk-edits-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Requires providing all edits in a single chunk instead of multiple steps" +globs: ["**/*"] +--- + +- Provide all edits in a single chunk instead of multiple-step instructions or explanations for the same file \ No newline at end of file diff --git a/.cursor/rules/verify-information-rule.mdc b/.cursor/rules/verify-information-rule.mdc new file mode 100644 index 0000000..d6b3703 --- /dev/null +++ b/.cursor/rules/verify-information-rule.mdc @@ -0,0 +1,6 @@ +--- +description: "Requires verification of information before presentation" +globs: ["**/*"] +--- + +- Always verify information before presenting it. Do not make assumptions or speculate without clear evidence. \ No newline at end of file diff --git a/.gitignore b/.gitignore index 919b2ea..5f9be27 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,20 @@ yarn-error.log* lerna-debug.log* .pnpm-debug.log* +# IDE files and directories +.idea/ +.vscode/ + +*.swp +*.swo +.DS_Store + # mcp executable mcp mcp-config.json -.cursor/ +.cursor/* +!.cursor/rules/** + # JetBrains IDE .idea/ @@ -110,7 +120,6 @@ dist # vuepress v2.x temp and cache directory .temp -.cache # vitepress build output **/.vitepress/dist