Projects
Fifteen projects, honestly rated. Each carries two markers: how far along it is — and whether you can see it.
On links and repositories: most of these are client or commercial projects — their repositories are private and their systems are not publicly accessible. Brücke OS is the one that is publicly viewable. For the rest I show architecture, decisions and screenshots. I am happy to give a guided demo on request.
All software projects are built AI-assisted. Concept, architecture, requirements and quality assurance are mine; implementation is carried out together with AI coding agents.
Brücke OS
Brand: TreuLink
In active development Demo on request Advice that shows its sources. A multilingual platform for the Germany–Türkiye corridor.
- Next.js 16
- PostgreSQL
- Redis
- Turborepo
- Playwright
- i18n (DE/EN/TR)
- Docker Compose
Details Close
Brücke OS
Brand: TreuLink
The problem
People planning a move to Germany find the information they need scattered across government sites, forums and advisory services — written in legal language, of varying currency, with no visible provenance. The result is costly wrong turns and long stretches of uncertainty. The gap sits between paid one-to-one consulting and unverified forum answers.
Architecture decision
Three principles carry the system. First: every piece of information carries its source, retrieval date and confidence level — a claim without a source counts as a bug, not a feature. Second: thresholds and deadlines are computed by a tested rules engine, not by the language model; the model explains, it does not calculate. Third: German legal-services law (RDG) is implemented as a technical guard (core-legal-guard), not as a footnote — where risk rises, the system routes the user to qualified professionals. Domain knowledge lives in a separate package (domain-packs/de-tr-corridor), decoupled from the code.
My role
Concept, system architecture, requirements, domain model and quality assurance are mine. Implementation was carried out together with AI coding agents in two parallel development lines, governed by agent contracts, ADRs and Playwright end-to-end tests. The hard decisions — what the system must not do — were never coding questions.
Where it comes from
I have walked this path myself: language courses, ZAB recognition, application documents. Along the way it struck me how hard this process is to follow — information is scattered, sources go stale, and who decided what, and when, often stays unclear. That is precisely the problem Brücke OS addresses.
Local AI Homelab
The "localai" CLI + a real multi-device infrastructure
Running Private repository Where hardware meets AI systems: a security-first CLI and a lab that actually runs.
- Python 3.11
- Ollama
- Docker
- Tailscale
- Qdrant
- JSON-Schema-Evals
- Raspberry Pi
Details Close
Local AI Homelab
The "localai" CLI + a real multi-device infrastructure
The problem
Setting up local AI systems usually means copying scripts off the internet, opening ports and picking models by gut feeling. None of it is verifiable, little of it is reversible — and security mistakes only surface once it is too late.
Architecture decision
Four invariants the tool never violates: dry-run before any change, explicit consent, local-only by default, no automatically opened port. Every command is classified by risk; doctor and inventory are strictly read-only. Model selection is not left to intuition but to an eval suite: measured latency, measured quality, documented result. The lab itself spans a Raspberry Pi, two PCs and a MacBook, joined over a Tailscale mesh, with telemetry, thermal profiling and a backup runbook.
My role
The security model, command classification, eval methodology and day-to-day operation of the infrastructure are mine. This project joins the two halves of my training: the electrical engineering that knows what hardware can take, and the systems architecture that knows what software may do.
Aykaralar Platform
Running Client project Multi-tenant corporate platform with CMS, SEO and AI visibility. Live on staging.
- Payload CMS 3
- Next.js
- PostgreSQL
- Turborepo
- Hetzner + Coolify
- Lighthouse CI
Details Close
Aykaralar Platform
Architecture decision
Search engines are no longer the only readers of a website. Alongside JSON-LD, sitemap and robots.txt, the platform ships an experimental llms.txt — machine-readable for the AI systems that increasingly sit between a customer and a company. The lead form is multi-step and triple-guarded (honeypot, Turnstile, rate limit), and consent records are pseudonymised. If the database goes down, the site still serves content from a safe fallback.
My role
Concept, monorepo architecture (8 packages), data model, deployment pipeline and quality gates. First client: a construction company in Ankara.
Aykaralar OS
An operating system for small field-service businesses
In active development Commercial project Not another CRM but a quotation engine: from a voice memo on site to a finished PDF quote.
- Next.js 15
- React 19
- Drizzle ORM
- Better Auth
- Playwright (PDF)
- MinIO
- Worker-Architektur
Details Close
Aykaralar OS
An operating system for small field-service businesses
Architecture decision
Small firms rarely fail for lack of customer records; they fail because a quote takes three days. So the centre of the system is not the contact — it is the quote. Voice note from the phone, AI draft, human approval, PDF. A memory of materials, prices and suppliers grows with every job. Tenant isolation, RBAC and audit logging are hard security boundaries, not options.
My role
Product concept, modular architecture, data model, worker design. Prepared for conversion into a SaaS product.
AI Marketing Studio
In active development Commercial project Site photos become marketing drafts — but nothing is exported until a human approves it.
- TypeScript strict
- Turborepo
- Drizzle
- pg-boss
- Zod
- Vitest + PGlite
- Provider-agnostischer KI-Adapter
Details Close
AI Marketing Studio
Architecture decision
The central rule lives in the code, not in the manual: the AI produces drafts only; without human approval there is no export. Every generation, approval and export is written to the audit log. The AI adapter is provider-agnostic — with no API key it falls back to a mock, which makes tests possible without network and without cost. The test suite runs PGlite in-process, so no live database is needed.
My role
Concept, security boundaries, job-queue architecture, test strategy.
Youth AI Platform
A governance platform for municipalities
In active development Private repository Young people report what their neighbourhood lacks. The map shows where. The decision stays with people.
- PostGIS
- pgvector
- Drizzle
- pg-boss
- MapLibre GL
- Auth.js
- Recharts
Details Close
Youth AI Platform
A governance platform for municipalities
Architecture decision
Two data worlds in one database: geography via PostGIS, semantic similarity via pgvector. That lets hundreds of submissions be grouped by place and by meaning at once — "three streets over, twelve young people are saying the same thing in different words". The AI classifies, summarises and raises early warnings; it decides nothing. That boundary is the project's most important requirement, not its limitation.
My role
Concept, data model, governance rules, map integration. It grew out of my work on the Youth Executive Committee of Çankaya municipality.
Shopping-Centre Showcase
Running Client project The work here was not the features but the operations: backups, health checks, runbooks.
- Next.js SSG
- Payload CMS
- Cloudflare R2
- GitHub Actions
- pnpm-Monorepo
Details Close
Shopping-Centre Showcase
Architecture decision
Building a website is the smaller half; running it for years is the larger one. So the project ships automated checks for backup freshness, storage health, DNS hygiene and audit-log pruning — plus smoke tests and a written runbook. Staging deploys automatically; production only on explicit approval.
My role
Monorepo structure, CI/CD pipelines, operational automation, documentation.
Vitrinali
Running Commercial project A catalogue with no shopping cart. Deliberately: the sale happens on the phone, not at checkout.
- Astro-artiger Static Export
- Payload CMS v3
- SQLite (lokal)
- PostgreSQL (Prod)
- Cloudflare Pages
Details Close
Vitrinali
Architecture decision
For antiques and one-off items a shopping cart is the wrong metaphor — every sale starts with a conversation. So: static export, no payment provider, no session handling. Locally everything runs without Docker, Postgres or cloud storage (SQLite plus the filesystem); in production the same application runs on PostgreSQL and object storage. One data model, two environments, one build step.
My role
Architecture, environment-aware adapters, build pipeline, unit tests.
Decibel Video Trimmer
Running Private repository Detects passages below a dBFS threshold and cuts them out. Small, finished, works.
- Python
- ffmpeg
- pydub
Details Close
Decibel Video Trimmer
Architecture decision
Not every tool needs to become a platform. One script, one purpose, one clean result.
Germany Journey OS
Concept & architecture Private repository Architecture and knowledge base for a personal career and relocation system. No application code yet.
- ADR
- Roadmap
- Wissensbasis
- Monorepo-Gerüst
Details Close
Germany Journey OS
Architecture decision
The core of the design is one rule: every official fact carries a URL, a retrieval date and a confidence level — a claim without a source is a bug. Sensitive documents never live in the repository, only their metadata. I list this project as a concept on purpose, not as an application: designed and planned, not built.
BMS assemblies for electric vehicles
ElecSys France · Erasmus+ · Étupes, France · 2022
Running Over 100 battery-management boards built, programmed and tested. Not one defect. Delivered to customers in Switzerland.
- Leistungselektronik
- Löten
- Firmware-Flashing
- Funktionsprüfung
Details Close
BMS assemblies for electric vehicles
ElecSys France · Erasmus+ · Étupes, France · 2022
Architecture decision
That number is why I take quality assurance seriously. Shipping the same board a hundred times without a fault teaches you that care is a method, not a character trait: same sequence, same checks, every single time.