DarynOngera
ServCore - a minimal, production-grade server framework for building reliable, observable backend services
Elixir Server Core — Standalone Worker Services in Elixir
I have been learning elixir for a while now and I’ve enjoyed every bit. In my beginner endeavours I built Elixir Server Core as a lightweight, forkable framework for building standalone background-processing services in Elixir as part of my learning journey. This is more of a learning project I have decided to share with the larger community.
It’s meant for situations where you don’t really want the overhead of a full stack like Phoenix, but you still want structure instead of wiring GenServers and queues from scratch every time.
It works well when you need:
- HTTP endpoints to receive requests
- A background job queue to process work asynchronously
- Worker processes managed under OTP supervision
- Basic durability, retries, and scheduling
- A simple deployment model for single-purpose services
Instead of repeatedly assembling Phoenix, Oban, and custom infrastructure, this gives you a small, ready-to-run foundation that you can either use directly or fork and shape into your own service.
What it gives you
- Plug + Cowboy HTTP server
- OTP-based job queue and worker pool
- Job lifecycle tracking (queued, running, done, failed)
- Retry system with exponential backoff
- Optional job scheduling
- Pluggable persistence (in-memory, SQLite, or custom stores)
- Telemetry hooks for observability
What I use it for
- Small backend services with a single responsibility
- Background processing workloads (media, documents, webhooks, automation)
- Lightweight VPS or edge deployments
- Learning and experimenting with OTP in a real system
What it is not
- Not a replacement for Phoenix
- Not a distributed job system like Oban
- Not a full web application framework
It sits somewhere between “building everything from scratch” and “bringing in a full framework,” giving you a minimal but structured starting point for worker-based services.
Feel free to poke around : hex-package
Most Liked
DarynOngera
Update: ServCore has moved the HTTP server from Plug.Cowboy to Bandit. Same Plug interface, but with HTTP/2 enabled by default and fewer transitive dependencies. The rest of the framework (job queue, worker pools, SQLite persistence, Telemetry) is unchanged.
Popular in Announcing
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








