Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

IndopenSource — Komunitas Open Source Indonesia

IndopenSource.org

CILicense: MIT

Website komunitas dan direktori open source Indonesia di https://indopensource.org.

Tech Stack

  • Astro
  • Tailwind CSS
  • TypeScript
  • GitHub Actions
  • Cloudflare Workers Static Assets

Pages

  • Home: pintu masuk ke direktori, roadmap, pembelajaran, dan kontribusi.
  • Falsafah: prinsip komunitas dan kurasi open source Indonesia.
  • Projects: direktori proyek dari IndopenSource/awesome-indonesia.
  • Top User: peringkat pemilik repository berdasarkan akumulasi stars.
  • Komunitas: direktori komunitas yang diusulkan melalui pull request.
  • Roadmap: rencana kerja publik 2026–2027.
  • Belajar dan Blog: materi serta artikel yang disinkronkan dari repository sumber.
  • Donasi: informasi OpenSawer, sponsorship, CSR, dan dukungan non-dana.
  • Forum dan Kontak: GitHub Discussions serta kanal resmi IndopenSource.

Development

npm install
npm run dev

Sinkronisasi data bersifat opsional untuk pengembangan UI. File hasil sinkronisasi yang diperlukan sudah tersedia di src/data/.

Project Structure

src/
components/ Reusable Astro UI components
data/ Synced project directory data
layouts/ Shared page layout
lib/ Small shared helpers
pages/ Route files
styles/ Tailwind entrypoint and theme tokens

Checks

npm test
npm run check
npm run build

Deployment

Cloudflare terhubung langsung ke repository dan membuat preview untuk pull request atau branch non-production. Production hanya dibangun dari branch release.

  • Build command: npm run build
  • Deploy command: npx wrangler deploy
  • Output directory: dist
  • Konfigurasi Worker: wrangler.jsonc
  • Production branch: release
  • Custom domain: indopensource.org

Semua kontribusi masuk ke main. Anggota organisasi mempromosikan versi yang sudah diuji melalui pull request dari main ke release; jangan membuka pull request kontribusi langsung ke release.

GitHub Pages sudah tidak digunakan. Deployment dan preview website ditangani oleh Cloudflare; workflow sinkronisasi konten hanya memperbarui data di main.

Lihat checklist release sebelum mempromosikan main ke release.

Project Sync

npm run sync:projects membaca repos.json dari IndopenSource/awesome-indonesia, lalu mengambil metadata repo dari GitHub API dan menulis hasilnya ke src/data/projects.json.

Gunakan GITHUB_TOKEN atau GH_TOKEN untuk rate limit yang lebih lega.

Blog Sync

npm run sync:blog membaca artikel Markdown dari IndopenSource/Blog-IndopenSource, mengambil tanggal commit pertama, commit terbaru, dan seluruh kontributor unik setiap artikel, lalu menulis hasilnya ke src/data/blog-posts.json. Halaman artikel menautkan commit terbaru tersebut agar riwayat sumber dapat diperiksa langsung.

Artikel berstatus draft tetap dibangun pada URL /blog/preview/{slug}/, tetapi tidak ditampilkan di indeks blog, tidak masuk sitemap, dan memakai noindex, nofollow, noarchive sampai statusnya diterbitkan.

Auto Sync

Workflow .github/workflows/sync-content.yml memperbarui data secara otomatis.

  • Manual: jalankan workflow Sync content data.
  • Schedule: berjalan setiap jam pada menit ke-17.
  • Dispatch dari repo lain:
    • sync-projects
    • sync-blog
    • sync-content

Jika data berubah, workflow membuat commit Sync content data. Setelah commit masuk main, perubahan mengikuti validasi dan alur promosi main ke release. Cloudflare kemudian membuat preview main; production tetap dipromosikan lewat pull request ke release.

Analytics & Search Verification

Analytics aktif saat build Cloudflare menerima environment variable berikut:

  • PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN
  • PUBLIC_GOOGLE_ANALYTICS_ID (format G-XXXXXXXXXX)
  • PUBLIC_GOOGLE_SITE_VERIFICATION (opsional)

Nilainya merupakan identifier publik dan tidak perlu dimasukkan ke Git. Isi di pengaturan build Cloudflare untuk production dan preview sesuai kebutuhan.

Contributing

See CONTRIBUTING.md.

About

Website Komunitas Open Source Indonesia

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages