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.
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.
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.
- 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
- Web browser display compatible with EasyWorship
- Localhost server (runs on port 3000)
- Zero-configuration startup
- Multi-display support for extended screens
- Minimal memory footprint (<10MB RAM usage)
- Instant startup time (<2 seconds)
- Single executable deployment
- No external dependencies required
- Language: C++17
- HTTP Server: Custom implementation using
httplib.hlibrary - Build System: CMake for cross-platform compilation
- Resource Management: Static files embedded in executable
- HTML5 for structure
- TailwindCSS for responsive styling
- Vanilla JavaScript for timer logic and animations
- localStorage for persistent user preferences
┌─────────────────────────────────────┐
│ Windows Executable (.exe) │
│ ┌────────────────────────────────┐ │
│ │ C++ HTTP Server │ │
│ │ (localhost:3000) │ │
│ │ ┌──────────────────────────┐ │ │
│ │ │ Embedded Static Files │ │ │
│ │ │ - countdown.html │ │ │
│ │ │ - settings.html │ │ │
│ │ │ - setup.html │ │ │
│ │ │ - tailwind.js │ │ │
│ │ └──────────────────────────┘ │ │
│ └────────────────────────────────┘ │
└─────────────────────────────────────┘
- Download the latest release from the Releases page
- Extract the executable to any folder
- Double-click to run - server starts automatically
- Open your browser and navigate to
http://localhost:3000
- CMake 3.10 or higher
- C++17 compatible compiler (MSVC, GCC, or Clang)
- Windows SDK (for Windows builds)
# 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/- Run the
WorshipTimer.exeexecutable - A console window will appear showing "Server running on http://localhost:3000"
- Keep this window open during your service
- Open EasyWorship
- Go to Media → Web Browser
- Enter URL:
http://localhost:3000/countdown.html - Position and resize the browser element on your slide
- The timer will now display during your presentation
- Open
http://localhost:3000/setup.htmlin your browser - Set your preferred:
- Timer duration
- Visual theme
- Text colors
- Animation style
- Settings are automatically saved and persist between sessions
| Page | URL | Description |
|---|---|---|
| Countdown Display | /countdown.html |
Main timer display for EasyWorship |
| Settings | /settings.html |
Configure timer preferences |
| Setup Guide | /setup.html |
Integration instructions |
- Classic: Traditional digital countdown
- Minimal: Clean, modern design
- Gradient: Colorful animated background
- Church: Professional worship aesthetic
- Timer duration (minutes and seconds)
- Background colors and gradients
- Text colors and fonts
- Animation speed and effects
- Warning thresholds (color changes at specific times)
- Lightweight HTTP server implemented in C++
- Serves static files directly from executable memory
- No external web server dependencies
- Instant response times with minimal overhead
- Memory Usage: < 10MB RAM
- Startup Time: < 2 seconds
- Response Time: < 10ms for static file requests
- CPU Usage: < 1% during operation
While currently optimized for Windows, the CMake build system and portable C++ code make it adaptable for:
- Linux (with minor modifications)
- macOS (requires testing)
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
# Debug build
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
# Release build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .- Frontend changes: Edit HTML files directly
- Backend changes: Modify
main.cppand rebuild - Styling: Customize TailwindCSS classes in HTML
- Server routes: Add new endpoints in
main.cpp
# Run the server
./WorshipTimer.exe
# Test endpoints
curl http://localhost:3000/countdown.html
curl http://localhost:3000/settings.htmlContributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Additional timer themes
- Sound notifications when timer expires
- Multi-timer support (parallel timers)
- Remote control via mobile app
- Integration with other presentation software
This project is licensed under the MIT License - see the LICENSE file for details.
- 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
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
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.