zabbix-graphql-api/.junie/guidelines.md
Andreas Hilbig 4ec61ffba1 chore: add MCP integration and refactor documentation into modular how-to guides
- Moved GraphQL query samples into a new `docs/queries` directory for better organization.
- Added new queries and mutations, including `createHost.graphql` and `GetApiVersion.graphql`.
- Introduced `mcp-config.yaml` and updated `docker-compose.yml` for MCP integration.
- Updated IntelliJ `.idea/workspace.xml` settings to reflect project changes.
- Added new how-to guides (`docs/howtos`) for permissions, tags, MCP integration, and schema usage.
- Enhanced tests by updating file paths and improving sample data locations.
- Refined permissions and host group structures in `zabbix-hostgroups.ts` and `resolvers.ts`.
2026-01-30 00:47:02 +01:00

2.7 KiB

Project Guidelines

This document provides concise information and best practices for developers working on the Zabbix GraphQL API project.

Environment

  • Operating System: Windows with WSL + Ubuntu installed.
  • Commands: Always execute Linux commands (e.g., use ls instead of dir).

Tech Stack

  • Runtime: Node.js (v18+)
  • Language: TypeScript (ESM)
  • API: GraphQL (Apollo Server 4)
  • Testing: Jest
  • Deployment: Docker

Project Structure

  • src/api/: GraphQL server configuration, schema loading, and root resolvers (see createResolvers in resolvers.ts).
  • src/datasources/: Modular classes for interacting with various Zabbix API components (hosts, items, etc.).
  • src/execution/: Business logic for complex, multi-step operations (importers, exporters, deleters).
  • src/model/: Shared data models and enumerations.
  • src/test/: Unit and integration tests.
  • schema/: GraphQL Schema Definition Language (SDL) files.

Common Scripts

  • npm run start: Launches the development server with tsx and nodemon for hot-reloading.
  • npm run test: Executes the Jest test suite.
  • npm run codegen: Generates TypeScript types based on the GraphQL schema definitions.
  • npm run compile: Compiles TypeScript source files into the dist/ directory.
  • npm run prod: Prepares the schema and runs the compiled production build.

Best Practices & Standards

  • ESM & Imports: The project uses ECMAScript Modules (ESM). Always use the .js extension when importing local files (e.g., import { Config } from "../common_utils.js";), even though the source files are .ts.
  • Configuration: Always use the Config class to access environment variables. Avoid direct process.env calls.
  • Type Safety: Leverage types generated via npm run codegen for resolvers and data handling to ensure consistency with the schema.
  • Import Optimization:
    • Always optimize imports before committing.
    • Project setting OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT is enabled.
    • Junie should include "Optimize imports" as a step in every plan.
  • Modular Datasources: When adding support for new Zabbix features, create a new datasource class in src/datasources/ extending ZabbixRESTDataSource.
  • Schema Organization: Place GraphQL SDL files in the schema/ directory. Use descriptive comments in SDL as they are used for API documentation.
  • Testing: Write reproduction tests for bugs and cover new features with both unit and integration tests in src/test/.

Git Standards

  • Commit Messages: Use Conventional Commits (e.g., feat:, fix:, chore:, docs:, test:, refactor:, style:).