strapi-content-sync-pro 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -8
- package/admin/src/components/ConfigTab.jsx +1012 -1007
- package/admin/src/components/HelpTab.jsx +58 -0
- package/docs/Screenshot 2026-04-20 160506.png +0 -0
- package/docs/Screenshot 2026-04-20 160558.png +0 -0
- package/docs/Screenshot 2026-04-20 175903.png +0 -0
- package/docs/Screenshot 2026-04-20 175931.png +0 -0
- package/docs/Screenshot 2026-04-20 180001.png +0 -0
- package/docs/Screenshot 2026-04-20 180041.png +0 -0
- package/docs/Screenshot 2026-04-20 180116.png +0 -0
- package/docs/Screenshot 2026-04-20 180135.png +0 -0
- package/docs/Screenshot 2026-04-20 180202.png +0 -0
- package/docs/Screenshot 2026-04-20 180228.png +0 -0
- package/docs/Screenshot 2026-04-20 180251.png +0 -0
- package/docs/Screenshot 2026-04-20 180301.png +0 -0
- package/docs/logo-horizontal.svg +33 -0
- package/docs/logo-mark.svg +38 -0
- package/docs/logo-square.svg +27 -0
- package/package.json +2 -1
- package/server/src/services/sync.js +141 -0
package/README.md
CHANGED
|
@@ -1,10 +1,53 @@
|
|
|
1
1
|
# Content Sync Pro Plugin for Strapi
|
|
2
2
|
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/logo-horizontal.svg" alt="Content Sync Pro" width="720" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
3
7
|
A powerful Strapi v5 plugin to copy, migrate, and live-sync content, media, and data between multiple Strapi environments.
|
|
4
8
|
|
|
5
9
|
[](https://www.npmjs.com/package/strapi-content-sync-pro)
|
|
6
10
|
[](https://opensource.org/licenses/MIT)
|
|
7
11
|
|
|
12
|
+
## Video
|
|
13
|
+
|
|
14
|
+
Plugin intro: https://youtu.be/hr3dD6dLgLQ
|
|
15
|
+
|
|
16
|
+
<a href="https://youtu.be/hr3dD6dLgLQ" target="_blank" rel="noopener noreferrer">
|
|
17
|
+
<img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160506.png" alt="Content Sync Pro � watch the intro video" width="100%" />
|
|
18
|
+
</a>
|
|
19
|
+
|
|
20
|
+
## Screenshots
|
|
21
|
+
|
|
22
|
+
<details>
|
|
23
|
+
<summary>View screenshots</summary>
|
|
24
|
+
|
|
25
|
+
<br />
|
|
26
|
+
|
|
27
|
+
<table>
|
|
28
|
+
<tr>
|
|
29
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160506.png" alt="Content Sync Pro - screenshot 1" width="100%" /></td>
|
|
30
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160558.png" alt="Content Sync Pro - screenshot 2" width="100%" /></td>
|
|
31
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20175903.png" alt="Content Sync Pro - screenshot 3" width="100%" /></td>
|
|
32
|
+
</tr>
|
|
33
|
+
<tr>
|
|
34
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20175931.png" alt="Content Sync Pro - screenshot 4" width="100%" /></td>
|
|
35
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180001.png" alt="Content Sync Pro - screenshot 5" width="100%" /></td>
|
|
36
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180041.png" alt="Content Sync Pro - screenshot 6" width="100%" /></td>
|
|
37
|
+
</tr>
|
|
38
|
+
<tr>
|
|
39
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180116.png" alt="Content Sync Pro - screenshot 7" width="100%" /></td>
|
|
40
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180135.png" alt="Content Sync Pro - screenshot 8" width="100%" /></td>
|
|
41
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180202.png" alt="Content Sync Pro - screenshot 9" width="100%" /></td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180228.png" alt="Content Sync Pro - screenshot 10" width="100%" /></td>
|
|
45
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180251.png" alt="Content Sync Pro - screenshot 11" width="100%" /></td>
|
|
46
|
+
<td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180301.png" alt="Content Sync Pro - screenshot 12" width="100%" /></td>
|
|
47
|
+
</tr>
|
|
48
|
+
</table>
|
|
49
|
+
</details>
|
|
50
|
+
|
|
8
51
|
## Features
|
|
9
52
|
|
|
10
53
|
- **Bi-directional Content Sync** - Push, pull, or sync both ways (Local wins, Remote wins, or Latest wins).
|
|
@@ -17,7 +60,7 @@ A powerful Strapi v5 plugin to copy, migrate, and live-sync content, media, and
|
|
|
17
60
|
- **Alerts & Logging** - Detailed sync logs. Receive success/failure alerts via Email (using Strapi's email provider) or Webhooks.
|
|
18
61
|
- **Secure Communication** - API token authentication combined with HMAC-SHA256 request signing using a shared secret.
|
|
19
62
|
|
|
20
|
-
##
|
|
63
|
+
## Prerequisites
|
|
21
64
|
|
|
22
65
|
- Strapi v5.0.0 or higher
|
|
23
66
|
- Node.js 20.0.0 or higher
|
|
@@ -61,7 +104,7 @@ npm run develop
|
|
|
61
104
|
2. Go to **Configuration** tab
|
|
62
105
|
3. Enter your remote server details:
|
|
63
106
|
- **Base URL**: The remote Strapi instance URL (e.g., `https://api.example.com`)
|
|
64
|
-
- **API Token**: Generate from remote Strapi's Settings
|
|
107
|
+
- **API Token**: Generate from remote Strapi's Settings ? API Tokens
|
|
65
108
|
- **Instance ID**: Unique identifier for this instance
|
|
66
109
|
- **Shared Secret**: Same secret on both instances for HMAC signing
|
|
67
110
|
|
|
@@ -115,14 +158,14 @@ Configure **when** sync runs in the Sync tab:
|
|
|
115
158
|
|
|
116
159
|
Full media synchronization between Strapi instances:
|
|
117
160
|
|
|
118
|
-
- **URL Strategy** (HTTP)
|
|
119
|
-
- **rsync Strategy**
|
|
120
|
-
- **Profile-based**
|
|
121
|
-
- **DB + File Sync**
|
|
161
|
+
- **URL Strategy** (HTTP) � Works with any upload provider (local, S3, Cloudinary). Downloads and re-uploads via the Upload API.
|
|
162
|
+
- **rsync Strategy** � Host-level file copy using the `rsync` binary. Fastest for local-provider setups with SSH access.
|
|
163
|
+
- **Profile-based** � Create media sync profiles with direction, conflict strategy, MIME filters, filename patterns, and execution settings.
|
|
164
|
+
- **DB + File Sync** � Syncs both the `plugin::upload.file` database rows and the actual file bytes.
|
|
122
165
|
|
|
123
166
|
## Enforcement
|
|
124
167
|
|
|
125
|
-
Pre-sync validation (Configuration
|
|
168
|
+
Pre-sync validation (Configuration ? Enforcement):
|
|
126
169
|
|
|
127
170
|
- **Schema Match** - Verify content type schemas match (strict/compatible/none)
|
|
128
171
|
- **Version Check** - Verify Strapi versions (exact/minor/major/none)
|
|
@@ -130,7 +173,7 @@ Pre-sync validation (Configuration → Enforcement):
|
|
|
130
173
|
|
|
131
174
|
## Alerts
|
|
132
175
|
|
|
133
|
-
Get notified of sync events (Configuration
|
|
176
|
+
Get notified of sync events (Configuration ? Alerts):
|
|
134
177
|
|
|
135
178
|
- **Strapi Logs** - Logs to sync log and server console
|
|
136
179
|
- **Email** - Requires Strapi email plugin configured
|
|
@@ -191,6 +234,14 @@ Check the **Logs** tab for detailed sync history including:
|
|
|
191
234
|
- Direction (push/pull)
|
|
192
235
|
- Status and error messages
|
|
193
236
|
|
|
237
|
+
## Security & Privacy
|
|
238
|
+
|
|
239
|
+
- **No usage tracking.** This plugin does not collect, transmit, or store any analytics or telemetry data.
|
|
240
|
+
- **Credential handling.** The optional "Generate Token" feature lets you authenticate to **your own** remote Strapi server to create an API token. Credentials are sent directly from your browser to your server via the plugin's backend proxy, used once, and **never stored** on disk, in the database, or in memory after the request completes.
|
|
241
|
+
- **API Tokens** are encrypted at rest using Strapi's built-in store.
|
|
242
|
+
- **HMAC-SHA256** signatures protect all inter-instance requests from tampering.
|
|
243
|
+
- **Masked secrets** � API tokens and shared secrets are masked (`��������`) in all API responses.
|
|
244
|
+
|
|
194
245
|
## Contributing
|
|
195
246
|
|
|
196
247
|
Contributions are welcome! Please open an issue or submit a pull request.
|