@@ -9,13 +9,11 @@ A containerized service that automatically syncs birthdays from CardDAV to CalDA
99## Features
1010
1111- ** Automated Birthday Sync** : Fetches contacts from CardDAV and creates recurring birthday events in CalDAV
12- - ** Multi-Server Support** : Works with Nextcloud, Baikal, Radicale, SOGo, and other CardDAV/CalDAV servers
12+ - ** Multi-Server Support** : Compatible with Nextcloud, Baikal, Radicale, SOGo, and other CardDAV/CalDAV servers
1313- ** Flexible Scheduling** : Cron-style scheduling or interval-based syncing
1414- ** Customizable Events** : Template-based event titles, descriptions, and reminders
15- - ** Robust Error Handling** : Graceful fallbacks and comprehensive logging
1615- ** Container-Native** : Built for Docker with health checks and graceful shutdown
1716- ** Multi-Architecture** : Supports AMD64 and ARM64 platforms
18- - ** Security-First** : Runs as non-root user with vulnerability scanning
1917
2018## Quick Start
2119
@@ -204,24 +202,6 @@ bdaysync/
204202- ** Scheduler Service** : Handles cron-style or interval-based scheduling
205203- ** Configuration Manager** : Validates environment and sets up logging
206204
207- ## Health Monitoring
208-
209- The service includes comprehensive health checks:
210-
211- ``` bash
212- # Docker health status
213- docker inspect birthday-sync --format=' {{.State.Health.Status}}'
214-
215- # Manual health check
216- docker exec birthday-sync python bdaysync/main.py --health-check
217- ```
218-
219- Health checks verify:
220-
221- - Required environment variables
222- - Python module imports
223- - Optional connectivity testing
224-
225205## Troubleshooting
226206
227207### Debug Mode
@@ -273,38 +253,18 @@ docker-compose logs --tail=50 birthday-sync
273253docker-compose logs birthday-sync | grep -i error
274254```
275255
276- ## Security
277-
278- - ** Non-root execution** : Container runs as dedicated user
279- - ** Minimal base image** : Uses Python slim for reduced attack surface
280- - ** Vulnerability scanning** : Automated security scans with Trivy
281- - ** Secure defaults** : No exposed ports, restricted permissions
282- - ** Environment isolation** : Credentials via environment variables only
283-
284256## Multi-Architecture Support
285257
286258Images are built for multiple architectures:
287259
288260- ` linux/amd64 ` (Intel/AMD 64-bit)
289261- ` linux/arm64 ` (ARM 64-bit, Apple Silicon, Raspberry Pi 4+)
290262
291- ## Automatic Updates
292-
293- Use Watchtower for automatic container updates:
294-
295- ``` yaml
296- watchtower :
297- image : containrrr/watchtower
298- volumes :
299- - /var/run/docker.sock:/var/run/docker.sock
300- command : --interval 86400 --cleanup birthday-sync
301- ` ` `
302-
303263## Contributing
304264
3052651 . Fork the repository
3062662 . Create a feature branch (` git checkout -b feature/amazing-feature ` )
307- 3. Commit your changes ( `git commit -m 'Add amazing feature'`)
267+ 3 . Commit your changes using [ Conventional commits ] ( https://www.conventionalcommits.org/en/v1.0.0/ ) ( ` git commit -m 'feat: added amazing feature' ` )
3082684 . Push to the branch (` git push origin feature/amazing-feature ` )
3092695 . Open a Pull Request
310270
@@ -318,11 +278,9 @@ cd bdaysync
318278# Install development dependencies
319279pip install -r requirements.txt
320280
321- # Run tests
322- python -m pytest
281+ # Run the program
282+ python -m bdaysync/main.py
323283
324- # Run linting
325- flake8 bdaysync/
326284```
327285
328286## License
@@ -338,11 +296,3 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
338296## Acknowledgments
339297
340298- Built with [ caldav] ( https://github.com/python-caldav/caldav ) and [ vobject] ( https://github.com/eventable/vobject ) libraries
341- - Inspired by the need for automated birthday reminders across CalDAV systems
342- - Thanks to the open-source community for CardDAV/CalDAV protocol implementations
343-
344- ---
345-
346- **Latest Build**: ghcr.io/anatosun/bdaysync:latest
347-
348- <!-- Last updated : 2024-01-01 00:00:00 UTC -->
0 commit comments