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.