DarynOngera

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

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.

Where Next?

Popular in Announcing Top

wmnnd
Hi there, for my project DBLSQD, I needed a file storage solution that is a bit more flexible than Arc. Because I thought others might f...
New
martinthenth
Hello everybody :wave: Recently, some of my colleagues talked about database ids and uuids and their problems, and I remembered the pain...
New
seancribbs
Today I released a new dialyzer Mix task as the dialyzex package! At the time we started writing this task, the existing dialyzer integra...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
mbuhot
Leverage Open Api 3.0 (Swagger) to document, test, validate and explore your Plug and Phoenix APIs. Generate and serve a JSON Open API ...
New
cjen07
parameterized pipe in elixir: |n> edit: negative index in |n> and mixed usage with |> are supported example: use ParamPipe ...
New
mindok
What is ContEx? A pure Elixir server-side data plotting/charting library outputting SVG. It has nice barcharts in particular and works g...
New
Jskalc
Hi! Today, after a couple weeks of development I’ve released v0.1 of LiveVue. It’s a seamless integration of Vue and Phoenix LiveView, i...
New
michalmuskala
Hello everybody. I have just released Jason - a new JSON library. You might be wondering, why do we need a new library? The primary foc...
New
marcuslankenau
I feel kind of stuck with the absence of a proper xml library for Elixir. Currently I use SweetXML which was ok for me more or less to pa...
New

Other popular topics Top

marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement