প্রকল্প সম্পর্কে

dotfiles-web হলো dotgibson dotfiles সিস্টেমের পাবলিক শোকেস এবং ডকুমেন্টেশন হাব, যাকে README-তে ১১-রিপো বিশিষ্ট তিন-স্তরের টার্মিনাল এনভায়রনমেন্ট (Core → OS-native → Role) হিসেবে বর্ণনা করা হয়েছে। এটি সিস্টেমটির ডকুমেন্টেশন প্রদান করে, কোনো মেশিন কনফিগার করে না, তাই এটি স্পষ্টভাবে ওই তিন স্তরের কোনোটি নয়। সাইটটি Astro দিয়ে তৈরি, Tokyo Night থিমে সাজানো এবং GitHub Pages-এ ডেপ্লয় করা হয়েছে। কাঠামো README-তে পাঁচটি প্রধান রুট তালিকাভুক্ত করা হয়েছে: একটি ল্যান্ডিং পেজ যাতে হিরো সেকশন, তিন-স্তরের মডেল, রিপো ম্যাপ এবং ইনস্টলেশন নির্দেশাবলী রয়েছে; একটি গেটিং-স্টার্টেড পেজ যাতে প্ল্যাটফর্ম অনুযায়ী ইনস্টলেশন গাইড দেওয়া আছে; একটি আর্কিটেকচার পেজ যাতে লেয়ার মডেল, subtree-র যৌক্তিকতা, লোডার এবং বিস্তারিত আলোচনা করা হয়েছে; একটি ডকস হাব যাতে কনসেপ্ট, গাইড, রেফারেন্স এবং প্রতিটি রিপোজিটরির জন্য একটি করে জেনারেটেড পেজ রয়েছে; এবং একটি চেঞ্জলগ যা প্রতিটি রিপোর CHANGELOG.md-এর প্রতিফলন ঘটায়। ডেটা-চালিত কন্টেন্ট সাইটটি নিজেকে ডেটা-চালিত এবং মূলত সোর্স-ডেরাইভড হিসেবে বর্ণনা করে: শোকেস কার্ড, প্রতি-রিপো ডকস পেজ, "by the numbers" স্ট্রিপ এবং চেঞ্জলগগুলো src/data-এর অধীনে থাকা ফাইল এবং সিবলিং রিপোজিটরি থেকে আসে, যাতে ডকুমেন্টেশন কোড থেকে আলাদা হয়ে না যায়। এডিটযোগ্য ইনপুটগুলোর মধ্যে রয়েছে src/data/site.ts (সাইটের নাম, মালিক, নেভ, GitHub লিঙ্ক), src/data/repos.ts (রিপোজিটরি ম্যাপ এবং প্রতি-রিপো বর্ণনা ও স্ট্যাটাস), src/data/install.ts (প্ল্যাটফর্ম অনুযায়ী ইনস্টলেশন ধাপ) এবং src/content/docs-এর অধীনে থাকা Markdown পেজগুলো। scripts/-এর অধীনে চারটি কালেক্টর সিবলিং রিপোজিটরি থেকে জেনারেটেড ডেটা সংগ্রহ করে: collect-metrics.mjs ১১টি dotfiles রিপো থেকে generated.json তৈরি করে; collect-snippets.mjs ৬টি রিপোর ৮টি কিউরেটেড ফাইল থেকে snippets.json তৈরি করে; collect-corpus.mjs htpx থেকে corpus.json তৈরি করে; এবং collect-coverage.mjs dotfiles-Defense থেকে coverage.json তৈরি করে। কঠোরতা এবং প্রোভেন্যান্স গার্ডস npm run data-কে পাবলিশ পাথ হিসেবে বর্ণনা করা হয়েছে এবং এটি অত্যন্ত কঠোর: কোনো রিপো অনুপস্থিত থাকলে, অথবা কোনো সিবলিং ফিচার ব্রাঞ্চে থাকলে বা কালেক্টর দ্বারা পড়া কোনো ফাইলে আনকমিটেড এডিট থাকলে রানটি ব্যর্থ হয়। README-তে ব্যাখ্যা করা হয়েছে যে, এই চেকটি কেন প্রয়োজন, কারণ একবার dotfiles-core একটি ফিচার ব্রাঞ্চে চেকআউট করা অবস্থায় এমন একটি চেঞ্জলগ এন্ট্রি পাবলিশ করেছিল যা Core-এর মেইন ব্রাঞ্চে ছিল না। ব্যক্তিগত কালেক্টর এবং npm run data:lenient এক্সপ্লোরেটরি রানের জন্য শিথিল থাকে; README একটি ক্ষতিকারক কেস (সোর্স রিপো অনুপস্থিত—কমিটেড ফাইল অপরিবর্তিত, exit 0) এবং একটি কেসের মধ্যে পার্থক্য করে যা দূষিত ডেটা লেখে (ফ্লিট উপস্থিত কিন্তু আনক্লিন, stamped generatedFrom.clean: false)। দুটি গার্ড এই প্রোভেন্যান্স রায়টি পড়ে: npm install বা npm run hooks:install দ্বারা ইনস্টল করা একটি প্রি-কমিট হুক (একটি মেশিনে, generated.json এবং snippets.json কভার করে) এবং data-freshness.yml-এ একটি committed-data-provenance CI জব (প্রতিটি PR-এ)। যখন core.hooksPath সেট করা থাকে তখন হুকটি লাউডলি স্কিপ করে এবং DOTFILES_ALLOW_DIRTY_DATA=1 বা --no-verify দিয়ে এটি বাইপাস করা যায়; তবে CI জবটি করা যায় না। অটোমেশন fleet-sync.yml প্রতি সপ্তাহে চারটি কালেক্টর রান করে এবং আউটপুট পরিবর্তিত হলে একটি PR ওপেন করে। data-freshness.yml তখন CI ফেইল করে যখন চারটি কমিটেড ফাইলের কোনোটি তার সোর্সের সাথে মেলে না, এবং অতিরিক্তভাবে যখন generated.json-এর Core ভার্সন সর্বশেষ dotfiles-core রিলিজের পেছনে থাকে। main-এ পুশ করলে deploy.yml (Astro build → GitHub Pages) ট্রিগার হয়, এবং সোর্স রিপোজিটরিগুলো repository_dispatch-এর মাধ্যমে রিবিল্ড রিকোয়েস্ট করতে পারে, যা docs/WEBHOOK-SETUP.md-এ বর্ণিত একটি স্বল্পমেয়াদী GitHub App টোকেনের মাধ্যমে অথেন্টিকেটেড হয়। ডেভলপমেন্ট প্রয়োজনীয়তা হলো npm সহ Node.js; প্রজেক্টটি একটি স্ট্যান্ডার্ড Astro প্রজেক্ট। কমান্ডগুলোর মধ্যে রয়েছে npm run dev (লোকাল ডেভ সার্ভার), npm run build (dist/-এ প্রোডাকশন বিল্ড), npm run preview এবং npm run check (Astro টাইপ এবং কন্টেন্ট-কালেকশন চেক)। কন্ট্রিবিউশন গাইডে কন্ট্রিবিউটরদের সোর্স-অফ-ট্রুথ রিপোজিটরিগুলোকে ক্যানোনিকাল হিসেবে গণ্য করতে, কন্টেন্ট পেজে হার্ড-কোড করার পরিবর্তে ডেটা ফাইলে রাখতে এবং পুশ করার আগে npm run check এবং npm run build পাস করতে বলা হয়েছে। এখানে একটি MIT লাইসেন্স উল্লেখ করা হয়েছে।