Skip to content
Majd Kalthoum

Majd Kalthoum

Fullstack developer in Berlin

Hi, I’m Majd. I build web apps end to end: React and TypeScript in the browser, Node.js and Laravel on the server.

Most recently I built RTM, a real-time messenger with live typing and presence. It’s the first project below.

Open to full-time roles in Berlin or remote

Portrait of Majd Kalthoum

Things I’ve built and shipped

All repositories on GitHub

RTM

A real-time messenger

Direct and group chats that update live, with typing indicators, read receipts, online presence and reactions, all without a page refresh. A Laravel API and WebSocket server sit behind a React 19 and TypeScript app.

  • React 19
  • TypeScript
  • TanStack Query
  • Tailwind v4
  • Laravel
  • Reverb + Echo
  • Redis
  • PostgreSQL
  • Docker
  • Laravel Reverb delivers messages, typing and presence live; Redis holds that short-lived state so it never touches the main database.
  • Group roles with promote, demote and admin-only actions. Members who leave keep read access to the history up to that point.
  • PostgreSQL full-text search across message history, and private, short-lived signed URLs for attachments.
  • Sanctum cookie sessions, Google sign-in and a complete password-reset flow by email.
  • Light and dark themes, keyboard navigation and screen-reader live regions.
  • 128 backend tests with Pest, CI, and zero-downtime automated deploys to Docker Compose on Oracle Cloud.
RTM on desktop: a group chat with a shared PDF, an image with reactions, and the group info panelRTM on mobile: the chat list with unread counts and a live typing status

Designo

A CMS-driven agency website

A seven-page agency site where every page, menu and label is edited in Strapi instead of being hard-coded. Editors build each page from reusable sections.

  • Next.js 15
  • React 19
  • TypeScript
  • SCSS + Bulma
  • Framer Motion
  • Strapi 4
  • SQLite
  • Docker
  • Caddy
  • GitHub Actions

The visual design comes from a Frontend Mentor challenge. The build, CMS setup and deployment are my own.

  • Ten section types, rendered by a single catch-all Next.js route.
  • Pages are static and refresh every two minutes. If the API is down, the last good version stays online.
  • The contact API validates, length-limits and HTML-escapes input, and accepts 5 requests per 15 minutes per IP.
  • Strapi 4 is hardened: a middleware blocks filter queries on admin fields, and unused auth endpoints are closed on every start.
  • A push to master deploys through GitHub Actions and waits for a healthy container. SQLite is backed up daily.

Where I’ve worked

  1. 04/2025 – now

    Freelance and own projects

    Fullstack web development

    • Built RTM, a real-time chat app with a Laravel REST API and a React and TypeScript frontend.
    • Authentication and authorisation with Laravel Sanctum, plus OAuth2 social login with Laravel Socialite.
    • Real-time features with Laravel Reverb and Echo, including live typing indicators and Redis-backed presence.
  2. 06/2023 – 03/2025

    Aleks & Shantu GmbH

    Fullstack web developer, Berlin

    • Built and optimised web apps with React, Next.js, TypeScript, Node.js and the WordPress REST API.
    • Interactive animations and dynamic UI with Framer Motion; responsive builds from prototypes and style guides.
    • Accessible frontends following WCAG, external API integrations and ongoing maintenance in an agile team.
  3. 09/2021 – 05/2022

    Radscheit GmbH (happycoding)

    Fullstack web developer, Berlin

    • Websites with React (Gatsby) on headless WordPress.
    • WordPress theming and maintenance in PHP, SCSS and JavaScript, plus custom PHP API endpoints.
    • Performance optimisation, code reviews, and feature planning with the design and marketing teams.
  4. 05/2021 – 07/2021

    Jobvector GmbH

    Web development intern, Düsseldorf

    • Frontend features and UI changes in Vue.js and Nuxt, including a dashboard that shows incidents.
    • Testing, bug fixing and release preparation in a test-driven CI/CD setup.

What I work with

Each tool with where I’ve used it.

Frontend

  • React and TypeScriptRTM, Designo, Aleks & Shantu
  • Next.jsDesigno, Aleks & Shantu
  • Tailwind CSS and SCSSRTM, Designo, Radscheit
  • Motion (Framer Motion)This site, Designo, Aleks & Shantu
  • Vue.js and NuxtJobvector
  • Accessibility (WCAG)RTM, Aleks & Shantu

Backend and real-time

  • Laravel and PHPRTM, Radscheit
  • Laravel Reverb and EchoRTM
  • Node.jsAleks & Shantu
  • REST APIsRTM, Designo, Radscheit
  • Sanctum and Google OAuthRTM
  • Strapi and headless WordPressDesigno, Radscheit, Aleks & Shantu

Data, testing and deployment

  • PostgreSQLRTM, with full-text search
  • RedisRTM
  • Pest and VitestRTM
  • Docker Compose and CaddyRTM, Designo
  • GitHub ActionsRTM, Designo
  • VercelThis site, RTM, Designo

Also worked with: React Native, Angular, Python and Django, GraphQL, Socket.io, JWT, MySQL, Gatsby, GitLab

Hiring for a fullstack or frontend role?

I’m open to full-time roles in Berlin or remote. Email is the fastest way to reach me, and I’m happy to walk you through any of the projects above.

Based in
Berlin, Germany
Languages
German (C1), English (C1), Arabic (native)