Celeris is a lightweight, high-performance web server written in modern C++. It allows developers to spin up custom HTTP servers using a simple, HTML-like configuration system. Celeris is designed for speed, flexibility, and ease of use — whether you're building APIs, serving static files, or experimenting with new ideas.
- Fast and Lightweight – Built in C++ for maximum performance.
- Custom Configuration – Define your server behavior using intuitive HTML-like syntax.
- Routing – Easily create and manage routes.
- Authentication Support – Secure endpoints with built-in auth mechanisms.
- Static File Serving – Serve HTML, CSS, JS, and media files.
- Multithreading – Handles concurrent requests efficiently.
- Extensible – Built to support plugins and middleware in the future.
Coming soon: You would soon be able to install via
.exeinstaller, or.msi
Celeris supports Windows, Linux, macOS, and other Unix-like systems with compile-time OS detection.
- C++20 compatible compiler (GCC 9+, Clang 10+, MSVC 2019+)
- CMake 3.16+
- Platform-specific libraries (would be automatically linked by CMake)
Windows (Visual Studio):
git clone https://github.com/amethystcoder/Web-Serve.git
cd Web-Serve
mkdir build && cd build
cmake .. -G "Visual Studio 16 2019"
cmake --build . --config ReleaseLinux/macOS:
git clone https://github.com/amethystcoder/Web-Serve.git
cd Web-Serve
mkdir build && cd build
cmake ..
make -j$(nproc)Alternative (make):
git clone https://github.com/amethystcoder/Web-Serve.git
cd Web-Serve
make # or cmake . && make
./CelerisCeleris uses a lightweight markup-style config file:
<server port='5000' message='server is running on port {self.port}'>
<ratelimit maxRequests='100' per='60s' name='someratelimitname' message="rate limiter is created... or something"/>
<filesystem name='thefilesys' path='/' />
<api>
<route endpoint='/name' method='GET' rescontenttype='html' response='HTMLPage.html' rateLimit='someratelimitname'></route>
<route endpoint='/stats' method='GET' rescontenttype='html' response='kjfdkj.html'></route>
<route endpoint='/wonder' method='GET' rescontenttype='json' response='some file.json'></route>
<route endpoint='/equip' method='GET' rescontenttype='html' response='Hello, You are in the equip page!'></route>
</api>
</server> More details and examples coming soon.
celeris/ # Core main folder
include/ # Header files
src/ # cpp source files
# folders under src and include
ast/ # Execution Tree and Management
core/ # Standard Tags and their functionality
net/ # Network protocols and sockets
platform/ # Determining or working with different platforms (e.g Windows, Linux)
process/ # Request Lifecycles and Tag Lifecycle management
util/ # Core Utilities like parsers, file readers, loggers e.t.c
docs/ # Documentation (in progress)
tests/ # Unit and integration testsMain tests are coming very soon.
- Basic routing and static server
- HTML-like configuration parsing
- Request handling concurrency
- Middleware support
- Plugin system
- HTTPS support
- WebSocket integration
Contributions are welcome and appreciated! Please open an issue or PR.
- Fork the repo
- Create your feature branch (
git checkout -b feature/foo) - Commit your changes (
git commit -am 'Add foo') - Push to the branch (
git push origin feature/foo) - Open a pull request
More information about contributing here
MIT License. See LICENSE file for details.
Developed with ❤️ by Joshua Collins.