Skip to content
All work
Case study 02Live

EngerekTech platform

Company site, AI-assisted blog and internal portal on a self-hosted stack.

Role
Full-stack engineering and operations
Year
2026
The EngerekTech blog with search and topic filters
engerektech.com home page in English

Overview

  • Angular SSR
  • Spring Boot
  • Java 25
  • PostgreSQL
  • Docker
  • GitHub Actions
  • nginx
  • Claude API

The public website of my studio and the portal the team works in, built on Angular SSR and Spring Boot and run on a Linux server I manage. It publishes a bilingual blog with AI-assisted writing and translation, and gives the team analytics, a tester mailing tool and the question-bank editor for our apps.

A studio needs a site that sells, a blog that keeps it visible and an internal tool for everything else. I wanted all three on one codebase, cheap to run on a small server and easy to change every day.

From push to production

  1. 1git pusha commit on main starts the Build & deploy workflow
  2. 2GitHub Actionsbuilds the Angular SSR and Spring Boot images and pushes them to GHCR
  3. 3Linux serverpulls the new images over SSH and restarts them with Docker Compose
  4. 4nginx + TLSroutes the site, the API and analytics; Flyway migrates the database on start

A blog that writes and translates itself, with a human in charge

A scheduled job scans tech news every hour. When the team picks a story, the Claude API researches it and writes a sourced draft, a 15-point SEO check fixes what is missing and a branded cover image is drawn. Nothing is published without review.

Every published post gets an English version: a job translates one post a minute with structured output, keeps links and Markdown intact, maps internal links to their English pages and re-translates when the Turkish text changes, detected by a content hash.

Built to be found by people and by AI

  • Server-side rendering, per-page metadata, hreflang pairs and a generated sitemap for both languages.
  • FAQ and article structured data derived from the post content.
  • WebMCP: the contact form and site tools are described so browser agents can use them; ARD and AI-catalog files point agents to an agent skill.
  • Blog search, reading progress and share tools, in both languages.

The portal the team works in

  • Google sign-in with an allowlist.
  • Site visits from a self-hosted, cookieless Umami instance, for the last day, 7 days, 30 days or all time.
  • Tester mailings whose release notes are written for users from the full commit history of each app.
  • Push notifications to app users, and the question bank and subject catalog of KPSS Düello, published to Firestore.

Operations

  • Runs on 1 vCPU and 2 GB of RAM with Docker Compose, host nginx and Let's Encrypt.
  • Company email on a separate server with Mailu (Postfix, Dovecot, Rspamd, Roundcube), SPF, DKIM and DMARC, relayed through Amazon SES; a small forwarder rewraps shared mailboxes so they reach one inbox.
  • Errors go to Sentry; uptime is checked by a scheduled workflow.

What I took away

  • A small server goes a long way when the build does the heavy lifting.
  • AI features earn their place when there is a clear review step and a cheap way to redo the work.

0