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

escaping হলো একটি শক্তিশালী মতামত-ভিত্তিক (opinionated) ব্যক্তিগত সাইট জেনারেটর, যার মূল ধারণা হলো GitHub Issues-কে তাৎক্ষণিক রেন্ডারিং ডেটার পরিবর্তে ডিটারমিনিস্টিক কম্পাইলেশনের ইনপুট হিসেবে বিবেচনা করা। এটি কন্টেন্ট পার্সিং, রাউটিং অ্যাসাইনমেন্ট, HTML পিউরিফিকেশন এবং আর্টিফ্যাক্ট ভ্যালিডেশনের মতো পর্যায়ক্রমিক পাইপলাইনের মাধ্যমে Issues-গুলোকে একটি সম্পূর্ণ স্ট্যাটিক ওয়েবসাইটে কম্পাইল করে। এর প্রধান ক্ষমতাগুলোর মধ্যে রয়েছে: ১. কন্টেন্ট ম্যানেজমেন্ট: লেবেল এবং front matter যুক্ত GitHub Issues থেকে Blog, Ideas এবং About পেজের কন্টেন্ট এক্সট্রাক্ট করতে সমর্থন করে। ২. সাইট মডেল: হোমপেজ, আর্কাইভ পেজ, ডিটেইলস পেজ, প্রজেক্ট পেজ, ট্যাগ পেজ এবং Atom feed, sitemap ও robots.txt এর মতো SEO আর্টিফ্যাক্টগুলো ইউনিফাইডভাবে তৈরি করে। ৩. থিম সিস্টেম: এতে বেশ কিছু বিল্ট-ইন থিম (যেমন geoqiao.me, Escape1, Escape2, Quiet) রয়েছে এবং লোকাল কাস্টম থিম লোড করা সমর্থন করে। ৪. নিরাপত্তা ব্যবস্থা: এতে Markdown HTML হোয়াইটলিস্ট, কঠোর URL ভ্যালিডেশন, আউটপুট ডিরেক্টরি সীমাবদ্ধতা এবং Jinja অটো-এসকেপিং অন্তর্ভুক্ত রয়েছে। ৫. পাবলিশিং প্রসেস: এটি একটি পর্যায়ক্রমিক পাবলিশিং মেকানিজম ব্যবহার করে, যেখানে নতুন আর্টিফ্যাক্টগুলো staging এনভায়রনমেন্টে যাচাই হওয়ার পর ডিরেক্টরি রিনেম করার মাধ্যমে অফিসিয়াল আউটপুট দ্বারা প্রতিস্থাপিত হয়, যা রোলব্যাক সমর্থন করে। এই টুলটির জন্য Python 3.11+ এনভায়রনমেন্ট প্রয়োজন এবং ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য uv ব্যবহারের পরামর্শ দেওয়া হয়। এটি জেনারেটর লজিক এবং সাইট কনফিগারেশনকে আলাদা রাখে, যা ব্যবহারকারীকে একটি স্বতন্ত্র রিপোজিটরিতে সাইট কনফিগারেশন এবং কন্টেন্ট রক্ষণাবেক্ষণের সুযোগ দেয়।