Erkam Cengiz
Let’s talk

Open to new opportunities

Senior Full Stack Developer

  • Backend Engineering
  • Distributed Systems
  • Software Architecture

I design distributed backends and run them in production.

Full stack developer with 4+ years across Node.js / TypeScript backends, React / Next.js on the web and Flutter on mobile. I built a language-learning app’s microservice backend from scratch — and shipped my own game, solo.

Portrait of Erkam Cengiz
Fig. 01Erkam Cengiz · Bursa, Türkiye

Based in
Bursa, Türkiye 40.19° N, 29.06° E
Work mode
Remote since 2023
Local time
GMT+3

Scroll

(01)About

My work starts where a product meets its hardest questions. What if a service fails halfway? What if a message arrives twice? What if the user is offline? I answer them in the architecture — before production asks.

Years of full stack experience
4+
Backend services built from scratch for Pingua
8
Years working remotely
3+
Mobile game shipped solo to the App Store
1

I work across the stack, with a focus on distributed systems, real-time communication and AI automation. At Setfree I built Pingua’s backend from scratch as eight services — seven in Node.js / TypeScript, one Go real-time gateway — and ran it in production.

In that role I also took on technical decisions, code reviews, task allocation and mentoring. Before that, I built Node.js services and a React / Next.js interface at Kidly, and C# / .NET systems at Element, including an Oracle-backed information management system. On my own, I designed, built and shipped a mobile game — and I still maintain it.

  1. Design for failure

    Outbox, saga and compensation, idempotent consumers, circuit breakers. I assume a step will fail and decide in advance how the system recovers.

  2. Own it end to end

    From requirements and data model to release, monitoring and rollback. A feature isn’t done when it merges; it’s done when it runs well in production.

  3. Measure, then trust

    Health checks on every API, k6 performance and failover tests, Grafana and OpenTelemetry in production. Behavior under load is observed, not assumed.

(02)Selected work

Systems I designed. Products I shipped.

A language-learning app whose backend I built from scratch, a mobile game I shipped alone, and the earlier products I worked on at Kidly and Element.

Case study 01 — Language-learning app · iOS & Android

Pingua

Role
Senior Full Stack Developer
Company
Setfree
Period
Jan 2024 – Oct 2026
Scope
  • Backend
  • Back Office
  • Website
  • Databases

Pingua is a language-learning app for iOS and Android. I built its backend from scratch — seven Node.js / TypeScript services and a Go real-time gateway — developed the Back Office and the pingua.app website, and ran it all in production.

The challenge

Auth, gamification, content, communication, backup and AI ran as separate services. Together they had to stay consistent across service boundaries, deliver events in real time and keep reads fast, while remaining healthy in production.

Pingua backend architecture · illustrativeIllustrative architecture of the Pingua backend. The iOS and Android apps, the pingua.app website and the Back Office reach the services through HAProxy load balancing. Seven Node.js / TypeScript services — Auth, Gamification, Content, Communication, Backup, AI Manager API and AI Automation — communicate asynchronously over AWS SQS with a dead-letter queue. A Go / WebSocket Real-Time Gateway delivers events to online users and falls back to push notifications for offline ones. Writes go to the primary database and reads to read replicas, with a multi-layer cache in front. Scheduled cron jobs handle reward distribution and weekly resets; the AI services use LLM, speech and image tools orchestrated by n8n and connected to the Back Office; Grafana, Prometheus, Loki, OpenTelemetry and Sentry provide observability.Websitepingua.appBack OfficeReact · Next.jsMobile appsiOS · AndroidLoad balancerHAProxyReal-Time GatewayGo · WebSocketPushAuthGamificationContentCommunicationBackupAI Manager APIAI AutomationMessage queueAWS SQS · DLQCron jobsLLMsSpeech & imagesn8nPrimary databaseRead replicasMulti-layer cachein-memory · hybrid · RedisMonitoringGrafana · Prometheus · Loki · OpenTelemetry · Sentry
  1. 01 / 07

    Microservices from zero

    The app needed a backend that could evolve one service at a time, with slow work kept off the request path.

    I built the backend from scratch as Express.js microservices in Node.js / TypeScript: Auth, Gamification, Content, Communication, Backup, AI Manager API and AI Automation. I designed their asynchronous communication on AWS SQS, which also carried background jobs such as email delivery.

    • Node.js / TypeScript
    • Express.js
    • Microservices
    • AWS SQS
    • Async inter-service messaging
    • Background jobs (email)
  2. 02 / 07

    Consistency by design

    An update spanning several services must not be left half-applied when a step fails or a message arrives twice.

    I used transactions and the outbox pattern so each event committed with the write that produced it, and sagas with compensation to unwind multi-service flows that failed midway. Queued jobs ran through idempotent consumers with a DLQ, database locks guarded concurrent access, and circuit breakers contained failing external calls.

    • Transactions
    • Outbox pattern
    • Saga / compensation
    • Idempotent consumers
    • DLQ
    • Database locks
    • Circuit breaker
  3. 03 / 07

    Delivered, online or not

    Interactions and notifications had to arrive instantly for online users — and still reach those who were offline.

    I built a real-time gateway in Go on WebSockets and designed delivery around a single question: is the user online? If yes, the event goes over the socket. If not, it arrives as a push notification.

    • Go
    • WebSocket
    • Real-Time Gateway
    • Socket delivery when online
    • Push fallback when offline
  4. 04 / 07

    Engagement on a schedule

    Streaks, weekly quests and leaderboards only work if rewards and resets happen on schedule, without manual work.

    I built the game mechanics of learning: streaks, XP and badges, weekly quests and leaderboards. Reward distribution and weekly resets ran as scheduled cron jobs, so every week closed and reopened on its own.

    • Streaks
    • XP
    • Badges
    • Weekly quests
    • Leaderboards
    • Cron jobs
  5. 05 / 07

    Fast reads, lean sync

    Read traffic shouldn’t compete with writes, and clients shouldn’t download data that hasn’t changed.

    I split reads from writes: the primary database took the writes while read replicas carried the read load. Connection pooling and a multi-layer cache — in-memory, hybrid, Redis — cut repeated work, and version-based incremental sync sent clients only what had changed.

    • Read replicas
    • Read/write splitting
    • Connection pooling
    • In-memory · hybrid · Redis cache
    • Version-based incremental sync
  6. 06 / 07

    An AI content pipeline

    Learning content needs text, audio and optimized images, and preparing each of them by hand is slow.

    I built services that automate content production: text from OpenAI, Claude and Gemini, audio from Azure TTS and ElevenLabs, images optimized with Sharp / TinyPNG. n8n orchestrated the workflows and connected them to the Back Office.

    • OpenAI · Claude · Gemini
    • Azure TTS
    • ElevenLabs
    • Sharp / TinyPNG
    • n8n
    • Back Office integration
  7. 07 / 07

    Running it in production

    A distributed system is judged on its worst day: failures have to be visible, contained and reversible.

    I ran production on AWS and DigitalOcean with HAProxy load balancing and health checks on every API, self-hosted internal tools with Docker Compose, and wrote k6 performance and failover tests. Grafana, Prometheus, Loki, OpenTelemetry and Sentry backed monitoring, root-cause analysis, hotfixes and rollbacks.

    • AWS · DigitalOcean
    • HAProxy + health checks
    • Docker Compose
    • k6 performance & failover tests
    • Grafana · Prometheus · Loki
    • OpenTelemetry · Sentry
    • Root-cause analysis · hotfix · rollback

Case study 02 — Independent mobile game · Solo

Endless Village Defense

Role
Design, development, release & maintenance
Stack
  • Flutter / Dart
  • Supabase
  • Next.js
  • Docker
  • GitHub Actions
  • AdMob
  • Crashlytics
  • Sentry
Status
Live on the App Store

Endless Village Defense is my own mobile game. I designed and built it alone — the Flutter app, its Supabase backend and the Next.js landing page — released it, and have maintained it since launch.

Live on the App Store

In closed testing on Google Play

  1. 01

    Idea & build

    Designed the game from the first idea, then built the app in Flutter / Dart, localization included.

    • Flutter
    • Dart
  2. 02

    Backend & cloud

    Built the game’s backend and cloud layer on Supabase and wired it into the app.

    • Supabase
  3. 03

    Testing

    Wrote unit tests for the game logic and golden tests that catch visual regressions before they reach players.

    • Unit tests
    • Golden tests
  4. 04

    Monetization & insight

    Integrated in-app purchases and subscriptions, AdMob and Google Analytics, with Crashlytics and Sentry reporting crashes and errors.

    • IAP / subscriptions
    • AdMob
    • Google Analytics
    • Crashlytics
    • Sentry
  5. 05

    Release pipeline

    Set up CI/CD, code signing and build/release with GitHub Actions.

    • GitHub Actions
  6. 06

    Live & maintained

    Live on the App Store, with the Google Play version in closed testing and a Next.js landing page alongside. I have maintained it since launch.

    • Next.js

Case study 03 — Children’s stories & audiobooks

Kidly

Role
Full Stack Developer
Company
Kidly
Period
May 2023 – Dec 2023

At Kidly I worked across three products — Children’s Stories, Audio Book with its Back Office, and the Gamification Manager — building backend services and the messaging between them, plus Audio Book’s data model and React / Next.js interface.

  • Node.js
  • PostgreSQL
  • NoSQL
  • RabbitMQ
  • AWS SQS
  • Redis Pub/Sub
  • React
  • Next.js
  1. Kidly – Children’s Stories

    Built backend services with Node.js and PostgreSQL / NoSQL, used RabbitMQ, AWS SQS and Redis Pub/Sub for inter-service communication, and took on deployment and operations.

  2. Audio Book & Audio Book Back Office

    Built the data model, API services and React / Next.js interface from scratch.

  3. Gamification Manager

    Owned backend services, Redis and database integrations, and production support.

Earlier work

  • Information Management System

    Element Jun 2022 – May 2023

    Built web screens, SQL queries, reports and authorization with C# / .NET and Oracle.

    • C#
    • .NET
    • Oracle
    • SQL
  • Municipality Web Service & Element Common

    Element Jun 2022 – May 2023

    Owned development, maintenance and deployment of shared services.

    • C#
    • .NET

Microservices, Event-Driven Architecture, Outbox Pattern, Saga / Compensation, Idempotency, Circuit Breaker, DLQ, Retry/Backoff, Read/Write Splitting, Connection Pooling, Cache Invalidation, CQRS

(03)Experience

From .NET screens to distributed systems.

  1. —

    2 years 10 months

    Istanbul · Remote

    Setfree

    Senior Full Stack Developer

    Responsible for the backend, Back Office, website and databases of Pingua, a language-learning app for iOS and Android.

    • Built the microservice backend from scratch: seven Node.js / TypeScript services on Express.js, messaging and background jobs on AWS SQS, and a Go / WebSocket gateway.
    • Kept multi-service updates consistent with transactions, the outbox pattern and saga / compensation; used idempotent consumers, DLQs, database locks and circuit breakers.
    • Spread read load across read replicas; applied connection pooling, multi-layer caching (in-memory, hybrid, Redis) and version-based incremental data sync.
    • Ran production on AWS and DigitalOcean behind HAProxy; handled monitoring, root-cause analysis, hotfixes and rollbacks with Grafana, Prometheus, Loki and Sentry.
    • Owned features from requirements to release; took on technical decisions, code reviews, task allocation and mentoring within the team.
    • Node.js
    • TypeScript
    • Express.js
    • Go
    • AWS SQS
    • Redis
    • React / Next.js
    • HAProxy
    • n8n
  2. —

    8 months

    Istanbul · Remote

    Kidly

    Full Stack Developer

    Built backend services across three products — children’s stories, audiobooks and gamification — plus the data model and React / Next.js interface for Audio Book.

    • Kidly – Children’s Stories: built Node.js backend services on PostgreSQL / NoSQL, with RabbitMQ, AWS SQS and Redis Pub/Sub for inter-service communication.
    • Took on deployment and operations for the same backend.
    • Audio Book & Audio Book Back Office: built the data model, API services and React / Next.js interface from scratch.
    • Gamification Manager: owned backend services, Redis and database integrations, and production support.
    • Node.js
    • PostgreSQL
    • NoSQL
    • RabbitMQ
    • AWS SQS
    • Redis
    • React
    • Next.js
  3. —

    1 year

    Bursa

    Element

    .NET Developer

    Built and maintained C# / .NET systems: an Oracle-backed information management system, a municipality web service and shared common services.

    • Information Management System: built web screens and authorization with C# / .NET.
    • Wrote SQL queries and reports on Oracle for the same system.
    • Municipality Web Service & Element Common: owned development, maintenance and deployment of shared services.
    • C#
    • .NET
    • Oracle
    • SQL
    • Web services

(04)Expertise

Seven disciplines. One system.

The disciplines behind the work above, each paired with where I applied it — on Pingua, at Kidly and Element, or in my own game.

  1. Node.js / TypeScript services and APIs, designed from the data model up and built for how they will behave in production.

    In practice

    Pingua’s seven Node.js / TypeScript services on Express.js; Kidly’s backend services on PostgreSQL / NoSQL; earlier, C# / .NET with Oracle at Element.

    • Node.js
    • TypeScript
    • Express.js
    • REST API
    • PostgreSQL
    • MongoDB
    • Redis
    • Sequelize
    • C# / .NET
  2. Asynchronous messaging that stays correct when steps fail, messages repeat or load grows.

    In practice

    Pingua: AWS SQS, outbox, saga / compensation, idempotent consumers, DLQs, database locks and circuit breakers. Kidly: RabbitMQ, AWS SQS and Redis Pub/Sub.

    • AWS SQS
    • RabbitMQ
    • Redis Pub/Sub
    • Outbox Pattern
    • Saga / Compensation
    • Idempotency
    • DLQ
    • Circuit Breaker
    • Retry/Backoff
    • Concurrency Control
  3. Boundaries first: deciding what becomes a service, what stays a module, and how data moves between them.

    In practice

    Designed Pingua’s microservice architecture from scratch and took features through requirements, architecture, data model, estimation and integration tests to release.

    • Microservices
    • Event-Driven Architecture
    • Clean Architecture
    • DDD
    • CQRS
    • Hexagonal Architecture
    • Vertical Slice
  4. Interfaces on both sides of a product: back offices for the team that runs it, websites and apps for the people who use it.

    In practice

    Pingua’s Back Office (Vue.js first, then React / Next.js) and pingua.app; Kidly’s Audio Book interface in React / Next.js; my game’s Flutter app and Next.js landing page.

    • React
    • Next.js
    • TypeScript
    • Vue.js
    • TanStack Query
    • Zustand
    • Redux
    • Pinia
    • Flutter
  5. Real-time delivery that picks the channel: the open socket when a user is online, a push notification when they are not.

    In practice

    Built Pingua’s Go / WebSocket Real-Time Gateway alongside its Node.js / TypeScript services, with the socket-or-push delivery flow for interactions and notifications.

    • Go
    • WebSocket
    • Real-Time Gateway
    • Push notifications
    • FCM/APNs
  6. Production that is load-balanced, health-checked, failover-tested and observable — with root-cause analysis and rollback when something breaks.

    In practice

    Ran Pingua on AWS and DigitalOcean with HAProxy and health checks on every API; self-hosted internal tools with Docker Compose; set up GitHub Actions CI/CD for my game.

    • AWS
    • DigitalOcean
    • Docker / Compose
    • HAProxy
    • GitHub Actions
    • Linux
    • Nginx
    • k6
    • Grafana · Prometheus · Loki
    • OpenTelemetry · Sentry
  7. LLM, speech and image services wired into content workflows — and AI-assisted tools in my own development process.

    In practice

    Pingua’s content automation: text with OpenAI, Claude and Gemini, audio with Azure TTS and ElevenLabs, orchestrated with n8n. I build with Claude Code, Codex, the Pi coding agent and MCP.

    • OpenAI
    • Claude
    • Gemini
    • Function Calling
    • n8n
    • Azure TTS
    • ElevenLabs
    • Claude Code
    • Codex
    • MCP

(05)Contact

Building something that has to hold together? Let’s talk.

I’m open to new opportunities in backend, distributed systems and full stack engineering. Tell me what you’re building and where it’s getting hard — email reaches me directly.

Email

erkamcengiz@gmail.com

Based in

Bursa, Türkiye

Local time · GMT+3

© 2026 Erkam Cengiz. All rights reserved.

Built with React, TypeScript and Vite.

Back to top