@alteriom/painlessmesh 1.6.1

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/LICENSE +674 -0
  3. package/README.md +434 -0
  4. package/RELEASE_GUIDE.md +419 -0
  5. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +176 -0
  6. package/docs/README.md +71 -0
  7. package/docs/alteriom/overview.md +508 -0
  8. package/docs/api/core-api.md +607 -0
  9. package/docs/architecture/mesh-architecture.md +379 -0
  10. package/docs/architecture/plugin-system.md +517 -0
  11. package/docs/getting-started/first-mesh.md +410 -0
  12. package/docs/getting-started/installation.md +275 -0
  13. package/docs/getting-started/quickstart.md +158 -0
  14. package/docs/improvements/README.md +69 -0
  15. package/docs/troubleshooting/common-issues.md +521 -0
  16. package/docs/troubleshooting/faq.md +473 -0
  17. package/docs/tutorials/basic-examples.md +718 -0
  18. package/docs/wiki/API-Reference.md +246 -0
  19. package/docs/wiki/Complete-Documentation.md +123 -0
  20. package/examples/alteriom/README.md +82 -0
  21. package/examples/alteriom/alteriom.ino +186 -0
  22. package/examples/alteriom/alteriom_sensor_node.ino +184 -0
  23. package/examples/alteriom/alteriom_sensor_package.hpp +128 -0
  24. package/examples/alteriom/improved_sensor_node.ino +246 -0
  25. package/examples/alteriom/platformio.ini +25 -0
  26. package/examples/basic/basic.ino +66 -0
  27. package/examples/basic/platformio.ini +25 -0
  28. package/examples/bridge/bridge.ino +51 -0
  29. package/examples/bridge/platformio.ini +25 -0
  30. package/examples/echoNode/echoNode.ino +33 -0
  31. package/examples/echoNode/platformio.ini +25 -0
  32. package/examples/logClient/logClient.ino +109 -0
  33. package/examples/logClient/platformio.ini +25 -0
  34. package/examples/logServer/logServer.ino +81 -0
  35. package/examples/logServer/platformio.ini +25 -0
  36. package/examples/mqttBridge/mqttBridge.ino +118 -0
  37. package/examples/mqttBridge/platformio.ini +26 -0
  38. package/examples/namedMesh/namedMesh.ino +97 -0
  39. package/examples/namedMesh/platformio.ini +25 -0
  40. package/examples/otaReceiver/otaReceiver.ino +79 -0
  41. package/examples/otaReceiver/platformio.ini +25 -0
  42. package/examples/otaSender/nodemcu32s_connections.JPG +0 -0
  43. package/examples/otaSender/otaSender.ino +151 -0
  44. package/examples/otaSender/platformio.ini +25 -0
  45. package/examples/startHere/platformio.ini +25 -0
  46. package/examples/startHere/startHere.ino +159 -0
  47. package/examples/webServer/platformio.ini +27 -0
  48. package/examples/webServer/webServer.ino +89 -0
  49. package/keywords.txt +49 -0
  50. package/library.json +34 -0
  51. package/library.properties +11 -0
  52. package/package.json +78 -0
  53. package/src/AlteriomPainlessMesh.h +98 -0
  54. package/src/arduino/wifi.hpp +365 -0
  55. package/src/boost/asynctcp.hpp +279 -0
  56. package/src/painlessMesh.h +70 -0
  57. package/src/painlessMeshSTA.cpp +236 -0
  58. package/src/painlessMeshSTA.h +58 -0
  59. package/src/painlessTaskOptions.h +4 -0
  60. package/src/painlessmesh/base64.hpp +111 -0
  61. package/src/painlessmesh/buffer.hpp +229 -0
  62. package/src/painlessmesh/callback.hpp +91 -0
  63. package/src/painlessmesh/configuration.hpp +77 -0
  64. package/src/painlessmesh/connection.hpp +192 -0
  65. package/src/painlessmesh/layout.hpp +188 -0
  66. package/src/painlessmesh/logger.hpp +158 -0
  67. package/src/painlessmesh/memory.hpp +120 -0
  68. package/src/painlessmesh/mesh.hpp +560 -0
  69. package/src/painlessmesh/metrics.hpp +323 -0
  70. package/src/painlessmesh/ntp.hpp +263 -0
  71. package/src/painlessmesh/ota.hpp +553 -0
  72. package/src/painlessmesh/plugin.hpp +188 -0
  73. package/src/painlessmesh/protocol.hpp +813 -0
  74. package/src/painlessmesh/router.hpp +322 -0
  75. package/src/painlessmesh/tcp.hpp +71 -0
  76. package/src/painlessmesh/validation.hpp +239 -0
  77. package/src/plugin/performance.hpp +214 -0
  78. package/src/plugin/remote.hpp +64 -0
  79. package/src/scheduler.cpp +10 -0
  80. package/src/wifi.cpp +2 -0
@@ -0,0 +1,419 @@
1
+ # painlessMesh Release Guide
2
+
3
+ This document provides comprehensive instructions for releasing new versions of the Alteriom painlessMesh library across all distribution channels.
4
+
5
+ ## 🚀 Quick Release Process
6
+
7
+ ### Standard Release (Recommended)
8
+
9
+ ```bash
10
+ # 1. Update version using the bump script
11
+ ./scripts/bump-version.sh patch # or minor, major
12
+
13
+ # 2. Update CHANGELOG.md with your changes
14
+ # Add your changes under the new version section
15
+
16
+ # 3. Commit and trigger release
17
+ git add library.properties library.json package.json CHANGELOG.md
18
+ git commit -m "release: v1.6.1"
19
+ git push origin main
20
+ ```
21
+
22
+ **That's it!** GitHub Actions will automatically handle:
23
+ - ✅ Comprehensive testing across platforms
24
+ - ✅ Git tag creation and GitHub release
25
+ - ✅ NPM publishing (public + GitHub Packages)
26
+ - ✅ GitHub Wiki synchronization
27
+ - ✅ Arduino Library Manager package preparation
28
+ - ✅ Release notes generation from changelog
29
+
30
+ ## 📋 Distribution Channels
31
+
32
+ ### Automatic (Zero Manual Work Required)
33
+ 1. **GitHub Releases** - Created with changelog and downloadable packages
34
+ 2. **NPM Public Registry** - Published to https://www.npmjs.com/package/@alteriom/painlessmesh
35
+ 3. **GitHub Packages** - Published to GitHub's NPM registry (@alteriom/painlessmesh)
36
+ 4. **PlatformIO Registry** - Automatically indexed from GitHub releases
37
+ 5. **GitHub Wiki** - Documentation synchronized from repository
38
+
39
+ ### Semi-Automatic (One-Time Manual Submission)
40
+ 6. **Arduino Library Manager** - Submit once, then automatically indexed
41
+
42
+ ## 🎯 Detailed Process
43
+
44
+ ### Version Management
45
+
46
+ **File Consistency**: All three files must have matching versions:
47
+
48
+ ```properties
49
+ # library.properties
50
+ version=1.6.1
51
+ ```
52
+
53
+ ```json
54
+ // library.json
55
+ {
56
+ "version": "1.6.1"
57
+ }
58
+ ```
59
+
60
+ ```json
61
+ // package.json
62
+ {
63
+ "version": "1.6.1"
64
+ }
65
+ ```
66
+
67
+ **Semantic Versioning**: Follow [semver.org](https://semver.org/):
68
+ - **MAJOR**: Breaking changes (e.g., 1.6.0 → 2.0.0)
69
+ - **MINOR**: New features, backward compatible (e.g., 1.6.0 → 1.7.0)
70
+ - **PATCH**: Bug fixes, backward compatible (e.g., 1.6.0 → 1.6.1)
71
+
72
+ ### Automation Triggers
73
+
74
+ The release workflow triggers on commits to `main` that:
75
+ 1. Modify `library.properties`, `library.json`, `package.json`, or `CHANGELOG.md`
76
+ 2. Have a commit message starting with `release:`
77
+
78
+ ### What Gets Automated
79
+
80
+ #### Testing Pipeline
81
+ - **Desktop builds**: gcc & clang with strict warnings
82
+ - **Arduino CLI**: ESP32 & ESP8266 compilation
83
+ - **PlatformIO**: Cross-platform build validation
84
+ - **Code quality**: Formatting and lint checks
85
+
86
+ #### Release Artifacts
87
+ - **Git tag**: `v1.6.1` format
88
+ - **GitHub Release**: With changelog excerpt
89
+ - **Library package**: `painlessMesh-v1.6.1.zip`
90
+ - **Documentation**: Auto-deployed to GitHub Pages
91
+
92
+ #### NPM Publishing
93
+ - **Public NPM**: Available to anyone via `npm install @alteriom/painlessmesh`
94
+ - **GitHub Packages**: Scoped package for authenticated users
95
+ - **Version consistency**: Verified across all package files
96
+
97
+ #### Wiki Updates
98
+ - **Home Page**: Generated from README.md
99
+ - **API Reference**: Auto-generated documentation
100
+ - **Examples**: Links to repository examples
101
+ - **Installation Guide**: Multi-platform instructions
102
+
103
+ ## 📦 NPM Publishing Details
104
+
105
+ ### Dual Publishing Strategy
106
+
107
+ Each release publishes to **two NPM registries**:
108
+
109
+ 1. **Public NPM** (npmjs.com)
110
+ - Package: `@alteriom/painlessmesh`
111
+ - Installation: `npm install @alteriom/painlessmesh`
112
+ - No authentication required
113
+
114
+ 2. **GitHub Packages** (npm.pkg.github.com)
115
+ - Package: `@alteriom/painlessmesh`
116
+ - Installation: Requires `.npmrc` configuration
117
+ - Authentication required for installation
118
+
119
+ ### NPM Package Contents
120
+
121
+ The NPM package includes:
122
+ - `src/` - Complete library source code
123
+ - `examples/` - All Arduino examples
124
+ - `docs/` - Documentation files
125
+ - `library.properties` - Arduino metadata
126
+ - `library.json` - PlatformIO metadata
127
+ - Core documentation files (README, LICENSE, CHANGELOG)
128
+
129
+ Excluded from NPM package:
130
+ - Development files (`.github/`, `test/`, `scripts/`)
131
+ - Build artifacts (`bin/`, `build/`)
132
+ - IDE files and OS-specific files
133
+
134
+ ## 🛠️ Arduino Library Manager
135
+
136
+ ### One-Time Submission Process
137
+
138
+ After your first release, submit to Arduino Library Manager:
139
+
140
+ 1. **Go to**: https://github.com/arduino/library-registry
141
+ 2. **Create issue** with this template:
142
+
143
+ ```
144
+ Title: Add painlessMesh library
145
+
146
+ Repository URL: https://github.com/Alteriom/painlessMesh
147
+ Release tag: v1.6.1
148
+ Library name: painlessMesh
149
+ Version: 1.6.1
150
+
151
+ This is the Alteriom fork of the painlessMesh library with enhanced
152
+ CI/CD, automated releases, and improved Arduino Library Manager compatibility.
153
+ Includes SensorPackage, CommandPackage, and StatusPackage extensions.
154
+ ```
155
+
156
+ 3. **Monitor** the issue for Arduino team approval
157
+ 4. **Future releases** are automatically indexed
158
+
159
+ ### Arduino Library Compliance
160
+
161
+ The library meets all Arduino Library Manager requirements:
162
+ - ✅ Correct directory structure
163
+ - ✅ Valid `library.properties` file
164
+ - ✅ Source files in `src/` directory
165
+ - ✅ Examples compile successfully
166
+ - ✅ Consistent version numbering
167
+ - ✅ Open source license (LGPL-3.0)
168
+
169
+ ## 📚 GitHub Wiki Management
170
+
171
+ ### Automatic Synchronization
172
+
173
+ Wiki pages are automatically updated on each release:
174
+
175
+ - **Home** - From README.md
176
+ - **Release-Guide** - From RELEASE_GUIDE.md
177
+ - **Changelog** - From CHANGELOG.md
178
+ - **API-Reference** - Generated documentation
179
+ - **Examples** - Auto-generated from examples directory
180
+ - **Installation** - Multi-platform installation guide
181
+ - **Contributing** - From CONTRIBUTING.md
182
+
183
+ ### Manual Wiki Updates
184
+
185
+ If you need to update the wiki manually:
186
+
187
+ ```bash
188
+ # Clone wiki repository
189
+ git clone https://github.com/Alteriom/painlessMesh.wiki.git
190
+
191
+ # Edit markdown files directly
192
+ # Commit and push changes
193
+ ```
194
+
195
+ Note: Manual changes may be overwritten by automatic synchronization.
196
+
197
+ ## 🔧 Scripts Reference
198
+
199
+ ### `./scripts/bump-version.sh`
200
+ Updates version in all library files with consistency checks.
201
+
202
+ **Usage:**
203
+ ```bash
204
+ ./scripts/bump-version.sh patch # Increment patch version
205
+ ./scripts/bump-version.sh minor # Increment minor version
206
+ ./scripts/bump-version.sh major # Increment major version
207
+ ./scripts/bump-version.sh patch 1.6.2 # Set specific version
208
+ ```
209
+
210
+ ### `./scripts/validate-release.sh`
211
+ Comprehensive pre-release validation.
212
+
213
+ **Checks:**
214
+ - Version consistency between all files
215
+ - Changelog entries for current version
216
+ - Git working tree status
217
+ - Tag existence validation
218
+ - Dependency declarations
219
+ - Build file presence
220
+ - Quick compilation test
221
+
222
+ ## 🚨 Troubleshooting
223
+
224
+ ### Common Issues
225
+
226
+ **Version Mismatch Error**
227
+ ```bash
228
+ # Fix version inconsistencies
229
+ ./scripts/bump-version.sh patch 1.6.2 # Force set version
230
+ ```
231
+
232
+ **Missing Changelog Entry**
233
+ ```bash
234
+ # Add changelog entry for current version
235
+ vim CHANGELOG.md
236
+ # Add section: ## [1.6.2] - YYYY-MM-DD
237
+ ```
238
+
239
+ **Build Failures**
240
+ ```bash
241
+ # Test locally before release
242
+ npm run build
243
+ npm run test
244
+ ```
245
+
246
+ **NPM Token Invalid**
247
+ ```bash
248
+ # Verify NPM authentication
249
+ npm whoami
250
+ # If not logged in: npm login
251
+ ```
252
+
253
+ **GitHub Packages Authentication**
254
+ ```bash
255
+ # Check if GITHUB_TOKEN has packages:write permission
256
+ # Repository Settings → Actions → General → Permissions
257
+ ```
258
+
259
+ **Wiki Update Failure**
260
+ ```bash
261
+ # Wiki may need manual initialization
262
+ # Go to: https://github.com/Alteriom/painlessMesh/wiki
263
+ # Create any page to initialize, then re-run release
264
+ ```
265
+
266
+ ### Manual Override
267
+
268
+ If automation fails, you can manually perform any step:
269
+
270
+ ```bash
271
+ # Manual NPM publish
272
+ npm publish --access public
273
+
274
+ # Manual GitHub release
275
+ gh release create v1.6.2 --title "painlessMesh v1.6.2" --notes-file CHANGELOG.md
276
+
277
+ # Manual tag creation
278
+ git tag v1.6.2
279
+ git push origin v1.6.2
280
+ ```
281
+
282
+ ## 🔍 Validation Commands
283
+
284
+ ### Pre-Release Checks
285
+ ```bash
286
+ # Comprehensive validation
287
+ ./scripts/validate-release.sh
288
+
289
+ # Version consistency check
290
+ ./scripts/bump-version.sh --verify || echo "Use proper arguments"
291
+
292
+ # NPM package validation
293
+ npm run validate-library
294
+
295
+ # Build test
296
+ npm run build && npm run test
297
+ ```
298
+
299
+ ### Post-Release Verification
300
+ ```bash
301
+ # Check NPM publication
302
+ npm view @alteriom/painlessmesh
303
+
304
+ # Check GitHub Packages
305
+ npm view @alteriom/painlessmesh --registry=https://npm.pkg.github.com
306
+
307
+ # Verify GitHub release
308
+ gh release view
309
+
310
+ # Check wiki update
311
+ curl -s https://github.com/Alteriom/painlessMesh/wiki | grep -q "v1.6.2"
312
+ ```
313
+
314
+ ## 🎉 Success Indicators
315
+
316
+ ### Successful Release Shows:
317
+ - ✅ GitHub release created with changelog
318
+ - ✅ Git tag pushed to repository
319
+ - ✅ NPM package published (check npmjs.com)
320
+ - ✅ GitHub Packages updated
321
+ - ✅ Wiki pages synchronized
322
+ - ✅ All GitHub Actions workflows completed successfully
323
+
324
+ ### Distribution Verification:
325
+ ```bash
326
+ # Public NPM
327
+ npm view @alteriom/painlessmesh
328
+
329
+ # GitHub Packages
330
+ npm view @alteriom/painlessmesh --registry=https://npm.pkg.github.com
331
+
332
+ # PlatformIO (updated within 24 hours)
333
+ # Check: https://registry.platformio.org/libraries/alteriom/painlessMesh
334
+
335
+ # Arduino Library Manager (after manual submission)
336
+ # Search in Arduino IDE Library Manager
337
+ ```
338
+
339
+ ## 🌟 Advanced Topics
340
+
341
+ ### Custom Release Notes
342
+
343
+ To customize release notes beyond the changelog:
344
+
345
+ 1. Edit the generated `release_notes.txt` in the workflow
346
+ 2. Or create a custom release notes file in `.github/release-template.md`
347
+
348
+ ### Environment-Specific Releases
349
+
350
+ For testing releases:
351
+
352
+ ```bash
353
+ # Use pre-release tags
354
+ git tag v1.6.2-beta
355
+ git push origin v1.6.2-beta
356
+
357
+ # This creates a pre-release without full publication
358
+ ```
359
+
360
+ ### Rollback Procedure
361
+
362
+ If a release has issues:
363
+
364
+ ```bash
365
+ # Delete remote tag
366
+ git push origin :refs/tags/v1.6.2
367
+
368
+ # Delete local tag
369
+ git tag -d v1.6.2
370
+
371
+ # Delete GitHub release
372
+ gh release delete v1.6.2
373
+
374
+ # Unpublish NPM package (contact npm support)
375
+ # GitHub Packages: Delete from package settings
376
+ ```
377
+
378
+ ## 📊 Release Metrics
379
+
380
+ Monitor your releases:
381
+ - **GitHub**: https://github.com/Alteriom/painlessMesh/releases
382
+ - **NPM**: https://www.npmjs.com/package/@alteriom/painlessmesh
383
+ - **PlatformIO**: https://registry.platformio.org/libraries/alteriom/painlessMesh
384
+ - **Wiki**: https://github.com/Alteriom/painlessMesh/wiki
385
+
386
+ ## 🤝 Security & Permissions
387
+
388
+ ### Required GitHub Secrets
389
+ - `GITHUB_TOKEN`: Automatically provided by GitHub Actions
390
+ - `NPM_TOKEN`: Required for NPM publishing (add in repository secrets)
391
+
392
+ ### Repository Settings
393
+ - **Actions**: Enabled with write permissions
394
+ - **Packages**: Enabled for GitHub Packages publication
395
+ - **Wiki**: Enabled for documentation deployment
396
+ - **Releases**: Public releases enabled
397
+
398
+ ---
399
+
400
+ ## Quick Reference
401
+
402
+ **Release a patch version:**
403
+ ```bash
404
+ ./scripts/bump-version.sh patch
405
+ # Edit CHANGELOG.md
406
+ git add . && git commit -m "release: v1.6.2" && git push
407
+ ```
408
+
409
+ **Check release status:**
410
+ ```bash
411
+ ./scripts/validate-release.sh
412
+ ```
413
+
414
+ **Monitor release:**
415
+ - GitHub Actions: https://github.com/Alteriom/painlessMesh/actions
416
+ - Releases: https://github.com/Alteriom/painlessMesh/releases
417
+ - Documentation: https://github.com/Alteriom/painlessMesh/wiki
418
+
419
+ For questions or issues with the release process, create an issue with the `ci/cd` label.
@@ -0,0 +1,176 @@
1
+ # painlessMesh Documentation - Docusaurus Migration
2
+
3
+ ## Overview
4
+
5
+ This document outlines the migration from the current custom documentation approach to **Docusaurus 3** for better user experience and maintainability.
6
+
7
+ ## Current Issues
8
+
9
+ ### Broken Links Found
10
+ - `docs/tutorials/custom-packages.md` - Missing
11
+ - `docs/tutorials/sensor-networks.md` - Missing
12
+ - `docs/advanced/performance.md` - Missing
13
+ - `docs/architecture/routing.md` - Missing
14
+
15
+ ### Problems with Current Approach
16
+ 1. **Raw Markdown** - No processing, links break in GitHub Pages
17
+ 2. **Manual HTML generation** - Basic and unmaintainable
18
+ 3. **Doxygen isolation** - Separate from user documentation
19
+ 4. **No link validation** - Broken links undetected
20
+ 5. **No search functionality** - Poor discoverability
21
+ 6. **Poor mobile experience** - Not responsive
22
+
23
+ ## Proposed Solution: Docusaurus 3
24
+
25
+ ### Why Docusaurus?
26
+ - ✅ **Modern React-based** - Fast, responsive, beautiful
27
+ - ✅ **Built-in search** - Algolia integration
28
+ - ✅ **API docs integration** - Seamless with Doxygen
29
+ - ✅ **Link validation** - Automatic broken link detection
30
+ - ✅ **Versioning support** - Multiple library versions
31
+ - ✅ **GitHub Pages deployment** - Automated CI/CD
32
+ - ✅ **SEO optimized** - Better search engine ranking
33
+
34
+ ### Implementation Plan
35
+
36
+ #### Phase 1: Setup Docusaurus
37
+ ```bash
38
+ # Initialize Docusaurus
39
+ npx create-docusaurus@latest website classic
40
+
41
+ # Configure for painlessMesh
42
+ cd website
43
+ npm install --save @docusaurus/plugin-client-redirects
44
+ npm install --save @docusaurus/theme-mermaid
45
+ ```
46
+
47
+ #### Phase 2: Content Migration
48
+ 1. **Migrate existing docs** to `docs/` folder
49
+ 2. **Create missing pages** identified in review
50
+ 3. **Fix all broken links**
51
+ 4. **Integrate Doxygen** output
52
+ 5. **Add interactive examples**
53
+
54
+ #### Phase 3: Enhanced Features
55
+ 1. **Search integration** with Algolia
56
+ 2. **API documentation** with auto-generated content
57
+ 3. **Interactive code examples**
58
+ 4. **Version management** for releases
59
+ 5. **Analytics integration**
60
+
61
+ ## File Structure (Proposed)
62
+
63
+ ```
64
+ website/
65
+ ├── docs/ # Main documentation
66
+ │ ├── getting-started/
67
+ │ │ ├── installation.md
68
+ │ │ ├── quickstart.md
69
+ │ │ └── first-mesh.md
70
+ │ ├── api/
71
+ │ │ ├── core-api.md
72
+ │ │ └── alteriom-packages.md
73
+ │ ├── tutorials/
74
+ │ │ ├── basic-examples.md
75
+ │ │ ├── custom-packages.md # NEW - Currently missing
76
+ │ │ └── sensor-networks.md # NEW - Currently missing
77
+ │ ├── architecture/
78
+ │ │ ├── mesh-architecture.md
79
+ │ │ ├── plugin-system.md
80
+ │ │ └── routing.md # NEW - Currently missing
81
+ │ ├── advanced/
82
+ │ │ └── performance.md # NEW - Currently missing
83
+ │ └── troubleshooting/
84
+ │ ├── faq.md
85
+ │ └── common-issues.md
86
+ ├── src/
87
+ │ ├── components/ # React components
88
+ │ └── pages/ # Custom pages
89
+ ├── static/ # Static assets
90
+ ├── docusaurus.config.js # Main configuration
91
+ └── sidebars.js # Navigation structure
92
+ ```
93
+
94
+ ## Benefits
95
+
96
+ ### For Users
97
+ - 🚀 **Faster navigation** - Single-page app performance
98
+ - 🔍 **Powerful search** - Find anything instantly
99
+ - 📱 **Mobile-friendly** - Responsive design
100
+ - 🎯 **Better organization** - Clear navigation
101
+ - 💡 **Interactive examples** - Live code demos
102
+
103
+ ### For Maintainers
104
+ - 🔗 **Link validation** - Automatic broken link detection
105
+ - 📝 **Easy content management** - Simple Markdown workflow
106
+ - 🚀 **Automated deployment** - GitHub Actions integration
107
+ - 📊 **Analytics** - Usage insights
108
+ - 🔄 **Version control** - Git-based workflow
109
+
110
+ ## Migration Timeline
111
+
112
+ ### Week 1: Setup & Configuration
113
+ - [ ] Initialize Docusaurus project
114
+ - [ ] Configure for painlessMesh branding
115
+ - [ ] Set up build pipeline
116
+
117
+ ### Week 2: Content Migration
118
+ - [ ] Migrate existing documentation
119
+ - [ ] Create missing pages
120
+ - [ ] Fix all broken links
121
+ - [ ] Integrate Doxygen output
122
+
123
+ ### Week 3: Enhancement & Testing
124
+ - [ ] Add search functionality
125
+ - [ ] Create interactive examples
126
+ - [ ] Mobile testing
127
+ - [ ] Performance optimization
128
+
129
+ ### Week 4: Deployment & Cleanup
130
+ - [ ] Deploy to GitHub Pages
131
+ - [ ] Update all repository links
132
+ - [ ] Archive old documentation
133
+ - [ ] Team training
134
+
135
+ ## Implementation Commands
136
+
137
+ ```bash
138
+ # 1. Create Docusaurus site
139
+ npx create-docusaurus@latest docs-website classic
140
+ cd docs-website
141
+
142
+ # 2. Install additional plugins
143
+ npm install --save @docusaurus/plugin-client-redirects
144
+ npm install --save @docusaurus/theme-mermaid
145
+ npm install --save @docusaurus/plugin-google-analytics
146
+
147
+ # 3. Configure build for GitHub Pages
148
+ npm run build
149
+
150
+ # 4. Deploy
151
+ npm run deploy
152
+ ```
153
+
154
+ ## Cost-Benefit Analysis
155
+
156
+ ### Current Approach Costs
157
+ - ❌ **Developer time** - Manual HTML maintenance
158
+ - ❌ **User frustration** - Broken links, poor UX
159
+ - ❌ **SEO penalty** - Poor search ranking
160
+ - ❌ **Mobile users** - Bad mobile experience
161
+
162
+ ### Docusaurus Benefits
163
+ - ✅ **Time savings** - Automated builds
164
+ - ✅ **Better UX** - Professional documentation
165
+ - ✅ **SEO boost** - Optimized for search engines
166
+ - ✅ **Future-proof** - Modern, maintained framework
167
+
168
+ ## Recommendation
169
+
170
+ **Immediate Action**: Implement Docusaurus 3 migration
171
+
172
+ **Priority**: High - Current documentation has critical usability issues
173
+
174
+ **Timeline**: 2-4 weeks for full migration
175
+
176
+ **ROI**: High - Significantly better user experience with minimal ongoing maintenance
package/docs/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # painlessMesh Documentation
2
+
3
+ Welcome to the comprehensive documentation for painlessMesh - a user-friendly ESP8266/ESP32 mesh networking library that automatically handles routing and network management.
4
+
5
+ ## Documentation Structure
6
+
7
+ ### Getting Started
8
+ - [Quick Start Guide](getting-started/quickstart.md) - Get up and running in minutes
9
+ - [Installation](getting-started/installation.md) - Detailed installation instructions
10
+ - [First Mesh Network](getting-started/first-mesh.md) - Your first working mesh
11
+
12
+ ### Architecture & Design
13
+ - [Mesh Architecture](architecture/mesh-architecture.md) - How painlessMesh works internally
14
+ - [Plugin System](architecture/plugin-system.md) - Understanding the plugin architecture
15
+ - [Message Routing](architecture/routing.md) - Message routing algorithms and strategies
16
+ - [Time Synchronization](architecture/time-sync.md) - Mesh-wide time synchronization
17
+
18
+ ### API Reference
19
+ - [Core API](api/core-api.md) - Main painlessMesh class methods
20
+ - [Plugin API](api/plugin-api.md) - Creating custom packages and plugins
21
+ - [Configuration](api/configuration.md) - Configuration options and constants
22
+ - [Callbacks](api/callbacks.md) - Event handling and callbacks
23
+
24
+ ### Tutorials & Examples
25
+ - [Basic Examples](tutorials/basic-examples.md) - Simple mesh networking examples
26
+ - [Custom Packages](tutorials/custom-packages.md) - Creating your own message types
27
+ - [Sensor Networks](tutorials/sensor-networks.md) - Building IoT sensor networks
28
+ - [Bridge Applications](tutorials/bridge-apps.md) - Connecting mesh to external networks
29
+
30
+ ### Alteriom Extensions
31
+ - [Alteriom Overview](alteriom/overview.md) - Alteriom-specific functionality
32
+ - [Sensor Packages](alteriom/sensor-packages.md) - Environmental sensor data handling
33
+ - [Command System](alteriom/command-system.md) - Device command and control
34
+ - [Status Monitoring](alteriom/status-monitoring.md) - Device health and diagnostics
35
+
36
+ ### Advanced Topics
37
+ - [Performance Optimization](advanced/performance.md) - Optimizing mesh performance
38
+ - [Memory Management](advanced/memory.md) - Managing ESP8266/ESP32 memory constraints
39
+ - [Security Considerations](advanced/security.md) - Securing your mesh network
40
+ - [OTA Updates](advanced/ota.md) - Over-the-air firmware updates in mesh
41
+
42
+ ### Troubleshooting
43
+ - [Common Issues](troubleshooting/common-issues.md) - Solutions to frequent problems
44
+ - [Debugging Guide](troubleshooting/debugging.md) - Tools and techniques for debugging
45
+ - [FAQ](troubleshooting/faq.md) - Frequently asked questions
46
+ - [Network Issues](troubleshooting/network-issues.md) - Connectivity and mesh topology problems
47
+
48
+ ### Development
49
+ - [Contributing](development/contributing.md) - How to contribute to painlessMesh
50
+ - [Building & Testing](development/building.md) - Development environment setup
51
+ - [Documentation](development/documentation.md) - Contributing to documentation
52
+ - [Release Process](development/releases.md) - Understanding releases and versioning
53
+
54
+ ## Quick Links
55
+
56
+ - **[GitHub Repository](https://github.com/Alteriom/painlessMesh)**
57
+ - **[API Documentation](http://painlessmesh.gitlab.io/painlessMesh/index.html)**
58
+ - **[Community Forum](https://groups.google.com/forum/#!forum/painlessmesh-user)**
59
+ - **[Issue Tracker](https://github.com/Alteriom/painlessMesh/issues)**
60
+
61
+ ## Need Help?
62
+
63
+ - Start with the [Quick Start Guide](getting-started/quickstart.md)
64
+ - Check the [FAQ](troubleshooting/faq.md) for common questions
65
+ - Browse [Examples](tutorials/basic-examples.md) for practical use cases
66
+ - Join our [Community Forum](https://groups.google.com/forum/#!forum/painlessmesh-user)
67
+ - Report bugs on the [Issue Tracker](https://github.com/Alteriom/painlessMesh/issues)
68
+
69
+ ---
70
+
71
+ This documentation is maintained by the painlessMesh community. Contributions are welcome! See our [Documentation Contributing Guide](development/documentation.md) to get started.