{"id":31578880,"url":"https://github.com/codedbycan/multi_tenant_basic_example","last_synced_at":"2025-10-05T20:14:14.010Z","repository":{"id":231115284,"uuid":"780952937","full_name":"codedByCan/Multi_Tenant_Basic_Example","owner":"codedByCan","description":"Çok kiracılı (multi-tenant) bir yapıya sahip temel bir örnek uygulamadır. Her bir kiracıya özgü yapılandırmaları yönetmek için basit bir yapı sunar.","archived":false,"fork":false,"pushed_at":"2024-04-02T13:33:16.000Z","size":4,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-15T15:37:33.748Z","etag":null,"topics":["development","multi-tenant","multi-tenant-applications","server","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codedByCan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-04-02T13:27:09.000Z","updated_at":"2024-04-07T19:36:50.000Z","dependencies_parsed_at":"2024-04-02T14:47:19.750Z","dependency_job_id":"bb5cfe5b-0448-4557-95bd-c08920f70b8f","html_url":"https://github.com/codedByCan/Multi_Tenant_Basic_Example","commit_stats":null,"previous_names":["fastuptime/multi_tenant_basic_example","codedbycan/multi_tenant_basic_example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codedByCan/Multi_Tenant_Basic_Example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedByCan%2FMulti_Tenant_Basic_Example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedByCan%2FMulti_Tenant_Basic_Example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedByCan%2FMulti_Tenant_Basic_Example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedByCan%2FMulti_Tenant_Basic_Example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codedByCan","download_url":"https://codeload.github.com/codedByCan/Multi_Tenant_Basic_Example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codedByCan%2FMulti_Tenant_Basic_Example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278510949,"owners_count":25999012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["development","multi-tenant","multi-tenant-applications","server","web"],"created_at":"2025-10-05T20:14:10.268Z","updated_at":"2025-10-05T20:14:13.997Z","avatar_url":"https://github.com/codedByCan.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Multi-Tenant Uygulama README 🏢\n\nBu uygulama, çok kiracılı (multi-tenant) bir yapıya sahiptir. Her bir kiracıya özgü yapılandırmaları yönetmek için StarDB kullanılmıştır.\n\n## Ekran Görüntüleri 📷\n\n![image](https://github.com/fastuptime/Multi_Tenant_Basic_Example/assets/63351166/ca8d6418-454e-4aa0-b9f8-c4800115b539)\n![image](https://github.com/fastuptime/Multi_Tenant_Basic_Example/assets/63351166/23c904ab-e973-49ac-a5e2-d6cdcd009812)\n![image](https://github.com/fastuptime/Multi_Tenant_Basic_Example/assets/63351166/de9dd2b0-e806-4612-b95e-c7c17c5603f0)\n![image](https://github.com/fastuptime/Multi_Tenant_Basic_Example/assets/63351166/848726a4-0909-4a80-9dde-fb3ef96c0ad5)\n![image](https://github.com/fastuptime/Multi_Tenant_Basic_Example/assets/63351166/4f1c29a8-e7b5-406a-801d-4054e910f545)\n\n\n## 🤔 Multi-Tenant Nedir?\n\nÇok kiracılı sistemler, tek bir uygulamanın birden fazla kiracıya (müşteri, kullanıcı) hizmet vermesini sağlar. Her bir kiracı kendi verilerini, yapılandırmalarını ve iş süreçlerini yönetebilir. Bu tür sistemler genellikle yazılım hizmet sağlayıcıları tarafından kullanılır ve genellikle paylaşılan bir altyapı üzerine inşa edilir.\n\n## Başlarken 🛠️\n\nUygulamayı başlatmak için aşağıdaki adımları izleyin:\n\n1. **Gereksinimlerin Yüklenmesi**\n   \n   Uygulamayı çalıştırmak için öncelikle aşağıdaki paketlerin yüklü olduğundan emin olun:\n   ```\n   npm install express stardb\n   ```\n\n2. **Konfigürasyon ⚙️**\n\n   Uygulamanın çalışması için her bir kiracıya özgü yapılandırmaları `database.json` dosyasına eklemeniz gerekmektedir. Aşağıdaki gibi bir örnek kullanılabilir:\n\n   ```json\n   [\n       {\n           \"site\": \"example.com\",\n           \"blocked\": false,\n           \"maintenance\": false\n       },\n       {\n           \"site\": \"example2.com\",\n           \"blocked\": false,\n           \"maintenance\": true\n       }\n   ]\n   ```\n\n3. **Uygulamanın Başlatılması**\n\n   Uygulamayı başlatmak için terminalde aşağıdaki komutu çalıştırın:\n   ```\n   node app.js\n   ```\n   veya\n   ```\n   nodemon app.js\n   ```\n\n4. **Test 🧪**\n\n   Uygulamanın başarıyla çalıştığını doğrulamak için tarayıcınızda `http://localhost` adresine gidin.\n\n## MongoDB ile Çok Kiracılı Uygulama Nasıl Yapılır? 📦\n\nGerçek bir çok kiracılı uygulama için MongoDB gibi bir NoSQL veritabanı kullanılabilir. Her bir kiracıya ait verileri farklı koleksiyonlarda veya aynı koleksiyonda ayrı belgelerde saklayabilirsiniz.\n\nÖrneğin, kullanıcıları saklamak için bir `User` şeması oluşturabilir ve her bir kullanıcı belgesinde `domain` alanını tutabilirsiniz:\n\n```javascript\nconst mongoose = require('mongoose');\n\nconst userSchema = new mongoose.Schema({\n    username: { type: String, required: true },\n    domain: { type: String, required: true }\n});\n\nconst User = mongoose.model('User', userSchema);\n\nmodule.exports = User;\n```\n\nKullanıcıları domainlerine göre sorgulamak ve getirmek için bir yardımcı fonksiyon ekleyebilirsiniz:\n\n```javascript\nconst User = require('./userModel');\n\n// Domain ve kullanıcı adına göre kullanıcıları getirme\nasync function getUserByDomain({ domain, username }) {\n    try {\n        const user = await User.findOne({ domain: domain, username: username });\n        return user;\n    } catch (error) {\n        console.error('Kullanıcı getirilemedi:', error);\n        throw error;\n    }\n}\n\nmodule.exports = { getUserByDomain };\n```\n\nBu fonksiyon, belirli bir domain ve kullanıcı adına sahip olan kullanıcıyı MongoDB'den getirir. Uygulamanın başka yerlerinde bu fonksiyonu kullanarak, istenen domain ve kullanıcı adına sahip kullanıcıyı getirebilirsiniz.\n\n```javascript\nconst { getUserByDomain } = require('./userController');\n\n// Örnek: \"example.com\" domainine ve \"Can\" kullanıcı adına sahip kullanıcıyı getirme\nconst user = await getUserByDomain({ domain: \"example.com\", username: \"Can\" });\nconsole.log(user);\n```\nBu şekilde, belirli bir domain ve kullanıcı adına sahip olan kullanıcıyı bulmak için kullanabilirsiniz.\n\n\n## API Kullanımı 🌐\n\nUygulama, aşağıdaki API rotalarını destekler:\n\n- `GET /`: Ana sayfaya yönlendirir ve kiracının domain adını gösterir.\n  \n## Notlar 📝\n\n- Bu örnek uygulama performansı artırmak için basit bir dosya tabanlı veritabanı kullansa da, gerçek bir multi-tenant uygulaması için MongoDB veya Redis gibi veritabanları daha uygun olabilir.\n- Her bir kiracıya özgü yapılandırmaları güncellemek veya yeni kiracılar eklemek için `database.json` dosyasını düzenleyebilirsiniz.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedbycan%2Fmulti_tenant_basic_example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodedbycan%2Fmulti_tenant_basic_example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodedbycan%2Fmulti_tenant_basic_example/lists"}