Joel Codja. Backend developer, focused on API design and serverless edge architectures.

From Gabon, based in Cotonou.

Codja

Joel/ko.dʒa/say ko-ja

My projects

All projects

Use the arrows to go through the projects. Click the card to play its demo.Swipe to go through the cards. Tap one to play its demo.

MakiSend

Open-source transactional email that runs on your own Cloudflare account.

Shipped
MakiSend
I build it at Lixali Studio.
  • Cloudflare Workers
  • D1
  • Queues
  • Workflows
  • TypeScript
  • Hono
  • Drizzle
  • Better Auth
  • Zod
  • Astro
  • React
  • Tailwind CSS
  • Vitest

Visit site: MakiSendGitHub: MakiSend

linkedin-scheduler

Write LinkedIn posts in advance as Markdown files and let cron publish them through LinkedIn's official API.

Shipped
linkedin-scheduler
My open-source project.
  • Python
  • LinkedIn API
  • cron
  • Node.js
  • Playwright
  • Shiki
  • Markdown

Visit site: linkedin-schedulerGitHub: linkedin-scheduler

SupasecretIn progress

A 1time.io-style web app to share secrets through one-time links, encrypted in the browser so the server never reads them.

Planned for
Supasecret
My own project, under way.
  • Cloudflare Workers
  • Hono
  • TypeScript
  • Web Crypto
  • Durable Objects
  • Vitest

VoctraIn progress

A Thunder Client-style VS Code extension to send HTTP requests, read responses and save them in collections, without leaving the editor.

Planned for
Voctra
My own project, under way.
  • TypeScript
  • VS Code API
  • Node.js
  • esbuild
  • Vitest

What I can do for you

Engraving: a hand comes out of a cloud and sets a compass on a block of stone, under a ribbon reading Labore et Constantia
Engraving: a hand firmly grips a cord
Engraving: two hands clasped in a handshake
  1. 01

    Build your backend from scratch

    You have an idea, a product or an app, and nothing behind it yet.

    I model your data, build the API your apps talk to, and set up the work that runs in the background: emails, payments, scheduled tasks. It goes live tested and documented from day one.

    What you get

    • A data model that fits your business
    • A documented API your apps can rely on
    • A backend in production, tested and documented
  2. 02

    Take over a backend that is slow, fragile or undocumented

    It works, mostly. But nobody dares to touch it, and the person who built it has left.

    I map how it really works and write it down, then fix what hurts first, slow queries, hidden errors, missing tests, without stopping what runs. Your team can ship again without fear.

    What you get

    • A map and documentation of what exists
    • The worst problems fixed first, without downtime
    • A backend your team can change safely
  3. 03

    Connect what you have to payments, email and outside APIs

    Your product works, but it has to talk to the rest of the world.

    Payments, emails, a CRM, another platform: I wire them in with webhooks, retries and logs, so a failure on their side never becomes a lost order on yours.

    What you get

    • Payments, email and third-party APIs wired in
    • Retries when an outside service fails
    • Logs that show what happened, and when

The tools I use

Languages
  • TypeScript
  • SQL
  • Python
APIs
  • Hono
  • Node.js
  • REST
  • OpenAPI
  • Scalar
  • Zod
Cloud and data
  • Cloudflare Workers
  • D1
  • Queues
  • Workflows
  • Drizzle
  • SQLite
  • PostgreSQL
Quality and delivery
  • Vitest
  • GitHub Actions
  • Docker

Where I do this today

  • Lixali Studio

    Backend developer

    – now

    Developer-facing APIs, event-driven systems and serverless infrastructure deployed at the edge.

Writing

Notes from building things.

  1. The best transactional email services in 2026

    Password resets, receipts and sign-in codes have to arrive. Here are seven ways to send them from your app, starting with the one that keeps your data and your provider in your hands.

    Tools

  2. Validating API input with Zod in TypeScript

    TypeScript checks nothing once your app is running. Here is how to validate request bodies, environment variables and API responses with one Zod schema that also gives you the type.

    TypeScriptBackend

  3. Why I use Drizzle for every TypeScript backend

    Raw SQL has no types, and heavy ORMs hide the SQL. Drizzle sits in between: you write TypeScript that reads like SQL, and every query is typed from your schema.

    TypeScriptTools

  4. Implementing AES-256-GCM encryption at rest in Node.js

    TLS stops protecting your data once it reaches the database. Here is how to encrypt sensitive fields yourself, with Node's native crypto module.

    Security

All posts

Let's talk

Hiring for a backend role, a project to build or take over, or just saying hello? Send a request to my inbox, or write to me directly.

Engraving: Mercury, messenger of the gods, flies on a cloud and holds up a letter

POST /joel/messages

Content-Type: application/json

// a message, straight to my inbox

{

"subject": What is it about?:
"",
"",
""

}