Skip to content

boluwatife-py/easyworship-countdown-timer

Repository files navigation

EasyWorship Countdown Timer

A lightweight desktop application that integrates seamlessly with EasyWorship's web browser display feature. Built with C++ and served via localhost, it provides an elegant countdown timer solution for worship services, sermons, and service segments without disrupting your presentation workflow.


Problem Statement

Church media teams using EasyWorship face a significant operational challenge: the software lacks built-in countdown timer display functionality. During live worship services, timing is crucial for coordinating music transitions, managing sermon length, and maintaining service flow.

While EasyWorship provides a web browser display feature, teams had no dedicated timer solution designed to leverage this capability, forcing them to use inadequate workarounds like external timer apps or manual timekeeping that require constant window switching.


Solution Overview

Worship Timer is a purpose-built application that integrates seamlessly with EasyWorship's web browser display feature. The application combines a C++ HTTP server backend with a responsive web-based frontend, running locally on localhost:3000.

Media operators simply add the timer URL to EasyWorship's web browser element, and it displays alongside worship slides with zero window switching. The solution requires no installation, runs from a single executable, and provides multiple customizable timer displays with smooth animations that maintain visual consistency with church branding.


Features

Timer Functionality

  • Countdown timer with customizable durations
  • Multiple visual themes for different church styles
  • Responsive design works on any screen size
  • Smooth animations with professional transitions
  • Persistent settings via browser localStorage

Integration

  • Web browser display compatible with EasyWorship
  • Localhost server (runs on port 3000)
  • Zero-configuration startup
  • Multi-display support for extended screens

Technical

  • Minimal memory footprint (<10MB RAM usage)
  • Instant startup time (<2 seconds)
  • Single executable deployment
  • No external dependencies required

Technical Architecture

Backend

  • Language: C++17
  • HTTP Server: Custom implementation using httplib.h library
  • Build System: CMake for cross-platform compilation
  • Resource Management: Static files embedded in executable

Frontend

  • HTML5 for structure
  • TailwindCSS for responsive styling
  • Vanilla JavaScript for timer logic and animations
  • localStorage for persistent user preferences

Server Architecture

┌─────────────────────────────────────┐
│   Windows Executable (.exe)         │
│  ┌────────────────────────────────┐ │
│  │   C++ HTTP Server              │ │
│  │   (localhost:3000)             │ │
│  │  ┌──────────────────────────┐  │ │
│  │  │ Embedded Static Files    │  │ │
│  │  │ - countdown.html         │  │ │
│  │  │ - settings.html          │  │ │
│  │  │ - setup.html             │  │ │
│  │  │ - tailwind.js            │  │ │
│  │  └──────────────────────────┘  │ │
│  └────────────────────────────────┘ │
└─────────────────────────────────────┘

Installation & Setup

Option 1: Use Pre-built Executable (Recommended)

  1. Download the latest release from the Releases page
  2. Extract the executable to any folder
  3. Double-click to run - server starts automatically
  4. Open your browser and navigate to http://localhost:3000

Option 2: Build from Source

Prerequisites

  • CMake 3.10 or higher
  • C++17 compatible compiler (MSVC, GCC, or Clang)
  • Windows SDK (for Windows builds)

Build Steps

# Clone the repository
git clone https://github.com/boluwatife-py/easyworship-countdown-timer.git
cd easyworship-countdown-timer

# Create build directory
mkdir build && cd build

# Generate build files
cmake ..

# Compile
cmake --build . --config Release

# Executable will be in build/Release/

Usage with EasyWorship

Step 1: Start the Timer Server

  1. Run the WorshipTimer.exe executable
  2. A console window will appear showing "Server running on http://localhost:3000"
  3. Keep this window open during your service

Step 2: Add to EasyWorship

  1. Open EasyWorship
  2. Go to MediaWeb Browser
  3. Enter URL: http://localhost:3000/countdown.html
  4. Position and resize the browser element on your slide
  5. The timer will now display during your presentation

Step 3: Configure Timer Settings

  1. Open http://localhost:3000/setup.html in your browser
  2. Set your preferred:
    • Timer duration
    • Visual theme
    • Text colors
    • Animation style
  3. Settings are automatically saved and persist between sessions

Customization

Available Pages

Page URL Description
Countdown Display /countdown.html Main timer display for EasyWorship
Settings /settings.html Configure timer preferences
Setup Guide /setup.html Integration instructions

Timer Themes

  • Classic: Traditional digital countdown
  • Minimal: Clean, modern design
  • Gradient: Colorful animated background
  • Church: Professional worship aesthetic

Customizable Options

  • Timer duration (minutes and seconds)
  • Background colors and gradients
  • Text colors and fonts
  • Animation speed and effects
  • Warning thresholds (color changes at specific times)

Technical Highlights

Embedded Web Server

  • Lightweight HTTP server implemented in C++
  • Serves static files directly from executable memory
  • No external web server dependencies
  • Instant response times with minimal overhead

Performance Characteristics

  • Memory Usage: < 10MB RAM
  • Startup Time: < 2 seconds
  • Response Time: < 10ms for static file requests
  • CPU Usage: < 1% during operation

Cross-Platform Ready

While currently optimized for Windows, the CMake build system and portable C++ code make it adaptable for:

  • Linux (with minor modifications)
  • macOS (requires testing)

Project Structure

easyworship-countdown-timer/
├── build/                  # CMake build output
├── main.cpp                # C++ server implementation
├── httplib.h               # HTTP server library
├── resource.h              # Windows resource definitions
├── resource.rc             # Windows resource file
├── CMakeLists.txt          # CMake configuration
├── countdown.html          # Timer display page
├── settings.html           # Configuration interface
├── setup.html              # Setup instructions
├── tailwind.js             # TailwindCSS framework
└── README.md               # This file

Development

Building for Development

# Debug build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .

# Release build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Adding New Features

  1. Frontend changes: Edit HTML files directly
  2. Backend changes: Modify main.cpp and rebuild
  3. Styling: Customize TailwindCSS classes in HTML
  4. Server routes: Add new endpoints in main.cpp

Testing

# Run the server
./WorshipTimer.exe

# Test endpoints
curl http://localhost:3000/countdown.html
curl http://localhost:3000/settings.html

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Ideas for Contributions

  • Additional timer themes
  • Sound notifications when timer expires
  • Multi-timer support (parallel timers)
  • Remote control via mobile app
  • Integration with other presentation software

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments

  • EasyWorship - For providing the web browser display feature
  • cpp-httplib - For the lightweight HTTP server library
  • TailwindCSS - For the responsive styling framework
  • Church media teams - For inspiring this solution

Support

If you encounter issues or have questions:

  • Open an issue on GitHub Issues
  • Check existing issues for solutions
  • Read the setup guide at http://localhost:3000/setup.html

Star this Repository

If this tool helps your worship team, please consider starring the repository! It helps others discover this solution.


Made with to help worship teams stay on time.

About

A lightweight desktop application that provides a visually appealing countdown timer designed to integrate directly with EasyWorship's web browser display feature. Built with C++ and served via localhost, it offers an elegant solution for timing sermons, worship sets, and service segments without disrupting your presentation workflow

Topics

Resources

License

Stars

Watchers

Forks

Contributors