{"id":13650664,"url":"https://github.com/tractr/directus-sync","last_synced_at":"2025-04-06T12:12:33.489Z","repository":{"id":206917884,"uuid":"708936984","full_name":"tractr/directus-sync","owner":"tractr","description":"A CLI tool for synchronizing the schema and configuration of Directus across various environments.","archived":false,"fork":false,"pushed_at":"2024-06-10T17:51:21.000Z","size":2722,"stargazers_count":144,"open_issues_count":5,"forks_count":6,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-06-13T10:42:58.401Z","etag":null,"topics":["devops","directus","directus-extension","environments"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tractr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-23T17:23:41.000Z","updated_at":"2024-06-17T02:54:27.457Z","dependencies_parsed_at":"2023-11-13T06:33:56.544Z","dependency_job_id":"71b3ac19-9772-4b87-aa5c-1fb7c4846eeb","html_url":"https://github.com/tractr/directus-sync","commit_stats":null,"previous_names":["tractr/directus-sync"],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tractr%2Fdirectus-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tractr%2Fdirectus-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tractr%2Fdirectus-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tractr%2Fdirectus-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tractr","download_url":"https://codeload.github.com/tractr/directus-sync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478327,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","directus","directus-extension","environments"],"created_at":"2024-08-02T02:00:39.155Z","updated_at":"2025-04-06T12:12:33.483Z","avatar_url":"https://github.com/tractr.png","language":"TypeScript","readme":"# Directus Sync\n\n![Directus 11.6.1](https://img.shields.io/badge/Directus-11.6.1-64f?style=for-the-badge\u0026logo=directus)\n[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/Directus-Sync/donate)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge\u0026logo=discord)](https://discord.gg/4vGzHPQmud)\n\n\u003e [!IMPORTANT]\n\u003e **Documentation**: Check the [documentation](https://tractr.github.io/directus-sync/docs/intro) for detailed\n\u003e information. You **need to install** the required Directus extension `directus-extension-sync` on your Directus instance to\n\u003e use Directus-Sync. Follow the installation instructions in the [directus-extension-sync documentation](https://tractr.github.io/directus-sync/docs/getting-started/installation).\n\n\u003e [!NOTE]\n\u003e **Donate**: If Directus Sync is enhancing your team's productivity in a commercial setting, please consider supporting our project\n\u003e financially. More information in the [Donate](#donate) section.\n\n## Overview\n\nDirectus Sync is a powerful CLI tool that enables seamless synchronization and versioning of configurations across\nmultiple Directus instances. It addresses the critical need for maintaining consistent setups across development,\nstaging, production, and any number of additional environments.\n\nBy facilitating easy configuration transfers between instances and providing version control, Directus Sync streamlines\nworkflows and enhances collaboration for teams managing Directus deployments.\n\n## Why use Directus-Sync?\n\n- **Simplified Deployment**: Easily deploy configuration changes from one environment to another.\n- **Code-First Approach**: Manage your Directus schema, roles, and permissions through code, improving maintainability\n  and enabling automated testing.\n- **Version Control**: Version your Directus configurations like code, allowing for change tracking and easy rollbacks.\n\n## Key features\n\n- **Full Collections Support**: Tracks dashboards, flows, folders, operations, panels, permissions, policies, presets,\n  roles, settings, and translations.\n- **Selective \u0026 Granular Synchronization**: Include or exclude specific collections during sync operations. Enables\n  precise configuration synchronization between Directus instances.\n- **Seed Data Management**: Provides tools to manage and synchronize custom data across environments, with support \n  for complex relationships and custom configurations.\n- **Hooks System**: Customize the synchronization process using hooks for collections and snapshots.\n- **Original ID Preservation**: Offers the ability to preserve original IDs for certain collections.\n- **Sync ID Tracking**: Uses unique synchronization IDs (SyncIDs) to track configurations across instances.\n- **Built-in Dependency Management**: Handles complex dependencies, including circular ones, between configurations.\n- **Automated Testing**: Includes end-to-end and unit testing to ensure reliability and compatibility.\n\n## Installation\n\nTo use Directus Sync, you need to install the required Directus extension `directus-extension-sync` on your Directus\ninstance.\n\nFollow the installation instructions in\nthe [directus-extension-sync documentation](https://tractr.github.io/directus-sync/docs/getting-started/installation).\n\n## Usage\n\n### Basic Commands\n\n- `npx directus-sync pull`: Retrieve configurations from a Directus instance\n- `npx directus-sync diff`: Compare local configurations with a Directus instance\n- `npx directus-sync push`: Apply local configurations to a Directus instance\n\n### Configuration\n\nCreate a `directus-sync.config.js` file in your project root to configure Directus Sync. Example:\n\n```jsx\nmodule.exports = {\n    directusUrl: 'https://your-directus-instance.com',\n    directusToken: 'your-access-token',\n    dumpPath: './directus-config',\n    // Additional options...\n};\n```\n\nFor detailed configuration options, refer to the [full documentation](https://tractr.github.io/directus-sync/docs/intro).\n\n## Roadmap\n\nWe're constantly working to improve Directus Sync. Some features we're considering for future releases:\n\n- TypeScript support, enabling type-safe schema and configuration definitions\n- Database seeding functionality to easily populate your Directus instances with initial or test data\n- Improved handling of custom data synchronization\n\nWe value your input! Help shape the future of Directus Sync by sharing your experience and suggestions. Please take a\nmoment to complete our [feedback form](https://forms.gle/LnaB89uVkZCDqRfGA). Your insights are crucial in guiding our\ndevelopment priorities and ensuring Directus Sync continues to meet your needs.\n\n## Contributing\n\nWe welcome contributions to Directus Sync! Please check\nour [contribution guidelines](https://github.com/tractr/directus-sync/blob/main/CONTRIBUTING.md) for more information on\nhow to get involved.\n\n## Donate\n\n### For individual developers\n\nIf you're a solo developer or using Directus Sync for personal projects, please enjoy the tool without any consideration\nto donate. There are other ways you can support like **starring our repository, share your experience** with Directus\nSync in your network or **provide feedback thanks to** our [feedback form](https://forms.gle/LnaB89uVkZCDqRfGA).\n\n### For companies and commercial users\n\nIf Directus Sync is enhancing your team's productivity in a commercial setting, **please consider supporting our project\nfinancially**. Your contributions enable us to dedicate more time to feature development, ensure long-term maintenance,\nand potentially provide priority support. Even small donations can significantly impact our ability to improve and\nexpand the tool. By supporting Directus Sync, **you're investing in your team's efficiency** and the project's future.\n\n[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/Directus-Sync/donate)\n\n## Support\n\nIf you encounter any issues or have questions, please:\n\n1. Check the [documentation](https://tractr.github.io/directus-sync/docs/intro) for detailed\n   information.\n2. Search existing [issues](https://github.com/tractr/directus-sync/issues) for similar problems.\n3. If you can't find a solution, open a new issue with a detailed description of the problem.\n","funding_links":["https://liberapay.com/Directus-Sync/donate"],"categories":["Extensions"],"sub_categories":["Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftractr%2Fdirectus-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftractr%2Fdirectus-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftractr%2Fdirectus-sync/lists"}