Skip to content

SimpleDaemons/simple-utcd

Repository files navigation

Simple UTC Daemon

A lightweight, high-performance UTC (Universal Time Coordinate) daemon written in C++.

Features

  • High Performance: Optimized for low-latency time synchronization
  • Cross-Platform: Supports macOS, Linux, and Windows
  • Configurable: Flexible configuration options
  • Secure: Built with security best practices
  • Containerized: Full Docker support for development and deployment

Quick Start

Using Docker (Recommended)

The fastest way to get started is with Docker:

# Quick deployment cd deployment/examples/docker docker-compose up -d # Development environment docker-compose --profile dev up dev # Build for all platforms ./scripts/build-docker.sh -d all # Deploy with custom settings ./scripts/deploy-docker.sh -p runtime -c ./config -l ./logs

For more Docker options, see the Docker Deployment Guide.

Local Development

# Install dependencies make deps # Build the project make build # Run tests make test # Install make install

Help System

The project includes a comprehensive modular help system:

# Quick reference make help # Complete reference make help-all # Category-specific help make help-build # Build and development targets make help-package # Package creation targets make help-deps # Dependency management targets make help-service # Service management targets make help-docker # Docker targets make help-config # Configuration management targets make help-platform # Platform-specific targets

Docker Infrastructure

Multi-Platform Support

The Docker setup supports multiple Linux distributions and architectures:

  • Distributions: Ubuntu, CentOS, Alpine Linux
  • Architectures: x86_64, arm64, armv7
  • Multi-stage builds for optimized production images
  • Health checks and monitoring capabilities
  • Volume mounts for configuration and logs

Quick Docker Commands

# Development environment docker-compose --profile dev up dev # Runtime container docker-compose --profile runtime up simple-utcd # Build for specific distribution docker-compose --profile build build build-ubuntu docker-compose --profile build build build-centos docker-compose --profile build build build-alpine

Automated Building

Use the build script for automated cross-platform building:

# Build for all distributions ./scripts/build-docker.sh -d all # Build for specific distribution ./scripts/build-docker.sh -d ubuntu # Clean build cache ./scripts/build-docker.sh --clean

Deployment Scripts

# Deploy runtime environment ./scripts/deploy-docker.sh -p runtime # Deploy development environment ./scripts/deploy-docker.sh -p dev # Force rebuild and deploy ./scripts/deploy-docker.sh --clean --force

For comprehensive Docker documentation, see Docker Deployment Guide.

Development

Prerequisites

  • CMake 3.15+
  • C++17 compatible compiler
  • OpenSSL
  • JsonCPP

Development Tools

# Install development tools (macOS) make dev-deps # Install development tools (Homebrew alternative) make dev-deps-brew # Run code quality checks make format make lint make security-scan

Testing

# Run tests make test # Run tests with verbose output make test-verbose # Run tests in debug mode make dev-test

Building

Local Build

# Standard build make build # Debug build make debug # Release build make release # Development build make dev-build

Package Creation

# Create platform-specific packages make package # Create source package make package-source # Create all package formats make package-all

Service Management

Installation

# Install system service make service-install # Check service status make service-status # Start service make service-start # Stop service make service-stop

Platform Support

  • macOS: launchd service
  • Linux: systemd service
  • Windows: Windows Service

Configuration

Installation

# Install configuration files make config-install # Backup configuration make config-backup # Install log rotation make log-rotate

Security

The project includes comprehensive security scanning:

# Run security scan make security-scan # Run static analysis make analyze # Check code style make check-style

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and quality checks
  5. Submit a pull request

Code Quality

# Format code make format # Run linting make lint # Run security scan make security-scan

License

[Add your license information here]

Changelog

See CHANGELOG.md for a detailed history of changes.