Yeni Dünya - Strapi - Bölüm 1
“Yeni Dünya” serisi teknik başlangıcını burada yapıyor. Bu makalede Strapi’yi Docker container/stack olarak çalıştıracağım.
Strapi Nedir?
Strapi bir Headless CMS’dir. Yani: Strapi bir backend için gereken tüm gereksinimleri sağlar. Veri depolama, web hizmeti ve yönetim bunlardan birkaçıdır.
İçeriğin görüntülenmesi vb. operatör/geliştirici tarafından ayrıca sağlanmalıdır. Örnek olarak GatsbyJS kullanacağım.
Strapi Ne Yapabilir?
Ghost burada sevmeye başladığım bir sistem. Ghost ayrıca Headless CMS olarak da çalıştırılabilir. Ghost özel “içerik türleri” oluşturma sunsa bu yazıyı yazmazdım.
ContentTypes / Alanlar
Strapi ile özel içerik türleri oluşturabilirim. İçerik türünü modellemek için çeşitli alan türleri sunulur.
İlişki/relations alanı burada ayrıca değinilmeye değer. 10 yılı aşkın süredir ContentType modelleyen biri olarak – SharePoint’i biliyorum ve oldukça iyi biliyorum – lookup alanı her zaman yarım kalmış bir şeydi. MOSS 2007 ile bu harikaydı, yıllar geçtikçe o kadar değil :)
Lookup alanı bugün hala 1->1 veya 1->n ilişkiler yapabiliyor. Strapi daha fazlasını yapabiliyor: 1->1 ve 1->n yanında n->n de mümkün… ve sonra tersi :)
GraphQL
Strapi GraphQL yapabiliyor ve bunu oldukça iyi yapıyor! Strapi hızlı gösteriler veya küçük-orta ölçekli PoC’ler için de kullanılabilir.
İlişkisel veri modelimi yüzeyde modelleyip, API için gerekli izinleri yüzey üzerinden veriyorum ve ardından buna karşı sorgulayıp/geliştirebiliyorum. Bu basit, basit :)
Ne Yapamaz?
Strapi OOTB olarak birçok şeyi yapamaz, çoğu programatik olarak uygulanabilir/entegre edilebilir.
Yönetim Arayüzü
Beğenmediğim şey yönetim arayüzü. Diğer Headless CMS sistemlerinden daha iyi olsa da hala çirkin. 2012’den önceki bir tarihi bir tarih alanına ayarlamayı deneyin…
İçerik Türü Hiyerarşisi Yok
Ayrıca SharePoint’ten alışık olduğum ve gerçekten Strapi’de özlediğim işlevler de var: Hiyerarşik İçerik Türü yapısı!
Strapi böyle bir şey sunsa, benim için küçük ontolojiler oluşturmak ve biraz mantıkla semantik web ortamı kurmak için ideal platform olurdu.
Harici MongoDB ile İşletme
Strapi’nin yaratıcıları bir Docker image’ı ve ayrıca oldukça iyi bir dokümantasyon sağladığından bu girişim aslında çok basit.
docker-compose.yml:
version: '3'
services:
strapi:
container_name: strapi
image: strapi/strapi:${TAG}
environment:
- DATABASE_CLIENT=${DATABASE_CLIENT}
- DATABASE_HOST=${DATABASE_HOST}
- DATABASE_PORT=${DATABASE_PORT}
- DATABASE_NAME=${DATABASE_NAME}
- DATABASE_USERNAME=${DATABASE_USERNAME}
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_AUTHENTICATION_DATABASE=${DATABASE_AUTHENTICATION_DATABASE}
- VIRTUAL_HOST=${VIRTUAL_HOST}
- LETSENCRYPT_HOST=${LETSENCRYPT_HOST}
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
ports:
- 1337:1337
volumes:
- strapi_data:/srv/app
volumes:
strapi_data:
networks:
default:
external:
name: nginx-proxy
docker-compose up ile başlatın ve ardından modellemeye başlayabilirsiniz.