Skip to content

Instantly share code, notes, and snippets.

View hkulekci's full-sized avatar
⛰️
Remote

Haydar KÜLEKCİ hkulekci

⛰️
Remote
View GitHub Profile
@hkulekci
hkulekci / comparison-headless-cms.md
Created December 26, 2025 07:04
Comparison of Headless CMS

Headless CMS comparison for multi-tenant website builders

Payload CMS emerges as the clear winner for building a website platform serving thousands of tenants. Its native multi-tenancy plugin enables a single deployment to serve unlimited tenants efficiently, while most competitors either lack multi-tenancy entirely or become prohibitively expensive at scale. For teams prioritizing full control and cost efficiency, self-hosted Directus ranks second; Firebase/Firestore offers a viable path for those willing to build custom CMS features on top of proven infrastructure.

The fundamental challenge is that most headless CMS solutions were designed for single-tenant use cases. Strapi, Ghost, and even enterprise platforms like Contentful hit architectural walls when scaled to thousands of separate tenant websites. The comparison below reveals which platforms can actually handle this demanding use case.

Multi-tenancy is the decisive factor

The website builder use case fundamentally requires true multi-ten

POST _bulk
{"index": {"_index": "accounts2", "_id": "1"}}
{"id": 1, "name": "AHMET", "surname": "MERT EKİNCİOĞLU", "iban": "TR910006200000100001234567", "balance": 15, "created_at": "2020-08-19T00:00:00Z"}
{"index": {"_index": "accounts2", "_id": "2"}}
{"id": 2, "name": "GÜLNAME", "surname": "KINDIR", "iban": "TR910006200000100001234568", "balance": 27, "created_at": "2020-08-19T00:00:00Z"}
{"index": {"_index": "accounts2", "_id": "3"}}
{"id": 3, "name": "SALİM", "surname": "İLTEMİZ", "iban": "TR910006200000100001234569", "balance": 54, "created_at": "2020-08-19T00:00:00Z"}
{"index": {"_index": "accounts2", "_id": "4"}}
{"id": 4, "name": "MÜBERRA", "surname": "GÜVEN MEŞE", "iban": "TR910006200000100001234570", "balance": 81, "created_at": "2020-08-19T00:00:00Z"}
@hkulekci
hkulekci / training.md
Created November 20, 2025 08:48
Training Elasticsearch

Elasticsearch Presentation

Indexing Document and Retriving

POST accounts/_doc
{
  "id": 1,
@hkulekci
hkulekci / detect.js
Created August 23, 2012 07:31
Detect Operating System with Javascript
// This script sets OSName variable as follows:
// "Windows" for all versions of Windows
// "MacOS" for all versions of Macintosh OS
// "Linux" for all versions of Linux
// "UNIX" for all other UNIX flavors
// "Unknown OS" indicates failure to detect the OS
var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
@hkulekci
hkulekci / cube.c
Created April 4, 2012 10:41
OpenGL Cube Example
#include<stdio.h>
#include <gl/glut.h>
#define KEY_ESC 27 /* GLUT doesn't supply this */
int fullscreen = 0;
int mouseDown = 0;
float xrot = 100.0f;
float yrot = -100.0f;
@hkulekci
hkulekci / QdrantServiceProvider.php
Created February 24, 2024 05:14
Qdrant Laravel
<?php
/**
* @since Apr 2023
* @author Haydar KULEKCI <haydarkulekci@gmail.com>
*/
namespace App\Providers;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;
@hkulekci
hkulekci / 01 - Readme.md
Last active December 28, 2023 19:35
Download Folder Recursively for Box Cloud

Usage

Create an app through developer platform :

https://<your-account>.app.box.com/developers/console

Then later, get the service account email from the general settings :

@hkulekci
hkulekci / solve.md
Last active October 5, 2023 20:08
Elasticsearch "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)" error

If u are getting below error while indexing:

{
  "error": {
    "root_cause": [
      {
        "type": "cluster_block_exception",
        "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
 }
@hkulekci
hkulekci / terms_set_query.md
Last active September 9, 2023 09:00
terms_set Query
DELETE job-candidates

PUT job-candidates
{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword"
      },
@hkulekci
hkulekci / percolator.md
Last active September 9, 2023 04:53
Percolator Field with Nested Query
PUT testindex1
{
  "mappings": {
    "properties": {
      "search": {
        "properties": {
          "query": { 
            "type": "percolator" 
          }