منصوبے کے بارے میں
NK Omladinac Niza، نزا (بلدیہ کوشکا) سے تعلق رکھنے والے اسی نام کے فٹ بال کلب کی سرکاری ویب سائٹ کا repository ہے۔ سائٹ Astro، Tailwind CSS v4 اور TypeScript سے بنی ہے اور GitHub Pages پر میزبانی کی گئی ہے۔ کھیلوں کے ڈیٹا کا براہ راست ذریعہ HNS Semafor ہے۔
خودکار مواد کی تازہ کاری مرکزی خصوصیت ہے۔ تین scraper اور ایک دستی ذریعہ ڈیٹا فراہم کرتے ہیں:
1. HNS Semafor (کھیلوں کا ڈیٹا) — scripts/scrape.mjs اسکرپٹ Cheerio parser استعمال کرتا ہے تاکہ کلب کا نام، اسٹیڈیم، پتہ، crest، موجودہ مقابلہ اور سیزن، crests اور فارم کے ساتھ مکمل لیگ ٹیبل، تمام مقابلوں (لیگ اور کپ) کے سیزن کے تمام میچز، کھیلے جا چکے میچز کی تفصیلات (لائن اپس، گول، کارڈز، ریفری، تماشائی)، تصاویر، نمبروں، پوزیشنز اور میچز کی شماریات کے ساتھ کھلاڑی، اور اسکوررز، کارڈز اور سب سے زیادہ میچ کھیلنے والوں کی درجہ بندیاں حاصل کی جا سکیں۔ کلب جن تمام مقابلوں میں حصہ لیتا ہے انہیں عمر کے گروپ کے لحاظ سے scrape کیا جاتا ہے (سینئرز اور U-11 ابتدائی)، اور مقابلوں کی فہرست Semafor کے getCompetitions handler کے ذریعے آتی ہے۔ نتیجہ src/data/hns.json کی صورت میں نکلتا ہے، جس میں ہر مقابلے کا ڈیٹا اور ایک متحد سینئر view موجود ہوتا ہے۔
2. Facebook خبریں — scripts/scrape-facebook.mjs Graph API v21.0 استعمال کرتا ہے تاکہ @omladinacniza صفحہ سے تازہ ترین پوسٹس حاصل کی جا سکیں۔ تصاویر مقامی طور پر ڈاؤن لوڈ کی جاتی ہیں کیونکہ FB CDN URLs ایک سے دو ہفتوں میں ختم ہو جاتے ہیں۔ GitHub Secrets FB_PAGE_ID اور FB_ACCESS_TOKEN ضروری ہیں۔
3. Facebook البمز (گیلری) — scripts/scrape-facebook-albums.mjs تمام البمز اور تصویروں کے metadata حاصل کرتا ہے، ہر کیلنڈر سال کے لیے quota کے ساتھ (FB_PHOTOS_PER_YEAR، طے شدہ 200)۔ ہر تصویر کے لیے 500 px کا WebP thumbnail اور dimensions محفوظ کیے جاتے ہیں؛ grid thumbnail دکھاتا ہے اور lightbox اصل تصویر دکھاتا ہے۔ پروفائل اور کور تصاویر کو چھوڑ دیا جاتا ہے۔
4. دوستانہ میچز — واحد فائل جسے دستی طور پر edit کیا جا سکتا ہے وہ src/data/friendlies.json ہے، جس کی ہدایات friendlies.README.md میں موجود ہیں؛ اسے GitHub کے ذریعے فون سے بھی edit کیا جا سکتا ہے۔
Scrapers فائلیں صرف اس وقت لکھتے ہیں جب مواد تبدیل ہوا ہو، اس لیے وہ غیر ضروری commits اور deployments نہیں بناتے۔ GitHub Action workflow scrape-and-deploy.yml ہر 30 منٹ کے cron شیڈول پر، main پر ہر push پر، اور دستی طور پر چلتا ہے۔ یہ تینوں scrapers چلاتا ہے، تبدیلیوں کو commit کرتا ہے، پھر rebuild اور deploy کرتا ہے؛ build job کو جان بوجھ کر دوبارہ scrape نہیں کرنے دیا جاتا تاکہ شائع شدہ سائٹ اور repository میں اختلاف نہ آئے۔
منصوبے کے ڈھانچے میں components (Header، Footer، cards، table)، SEO/OG/favicon/manifest/RSS/View Transitions کی ترتیبات کے ساتھ layout، base path، متحد میچز، کروشین عددی صرف و نحو اور Facebook پوسٹ فارمیٹنگ کے لیے libraries، اور صفحات شامل ہیں: جامد .astro صفحات، کھلاڑیوں کے پروفائلز، میچ کی تفصیلات، ہر میچ کے لیے متحرک OG تصاویر (satori اور resvg)، RSS feed، subscription کے لیے .ics فارمیٹ میں schedule، اور PWA manifest۔ اسٹائلز Tailwind v4 کے @theme کو کلب کے رنگوں اور فونٹس کے ساتھ استعمال کرتے ہیں۔
مقامی ترقی کے لیے Node.js 22.12+ درکار ہے۔ اسکرپٹس میں hot reload کے ساتھ dev سرور، scrape:hns، scrape:facebook، scrape:fb-albums، scrape (تینوں)، WebP thumbnails کے لیے thumbs، build (جو پہلے خودکار طور پر scrape کرتا ہے)، بغیر scraping کے astro build، type checking کے لیے check، اور پروڈکشن build کا preview شامل ہیں۔
تعیناتی GitHub Actions کے ذریعے GitHub Pages پر ہوتی ہے، جبکہ ڈومین omladinacniza.hr کو public/CNAME (deSEC DNS) کے ذریعے ترتیب دیا گیا ہے، اور SITE اور BASE astro.config.mjs میں مقرر ہیں جنہیں ASTRO_SITE اور ASTRO_BASE variables سے override کیا جا سکتا ہے۔ کلب کا تمام مواد (لوگو، تصاویر، تاریخ) NK Omladinac Niza کی ملکیت ہے، اور کوڈ دوسرے کلبوں کے لیے آزادانہ طور پر رہنمائی حاصل کرنے کے لیے دستیاب ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.