প্রকল্প সম্পর্কে
প্যাগোডা হলো Go-তে লেখা একটি ফুল-স্ট্যাক ওয়েব ডেভেলপমেন্ট স্টার্টার কিট এবং অ্যাডমিন প্যানেল। এটি কোনো ফ্রেমওয়ার্ক নয়, বরং একটি টেমপ্লেট রিপোজিটরি: আপনি `go get` ব্যবহার না করে এটি ক্লোন করেন, তারপর নিজের অ্যাপ্লিকেশনের সাথে কোডটি মানিয়ে নেন। এর ঘোষিত লক্ষ্য হলো একটি সম্পূর্ণ ওয়েব ফ্রেমওয়ার্ক থেকে প্রত্যাশিত অনেক কার্যকারিতা প্রদান করা, তবে সব কোড আপনার নিয়ন্ত্রণে রেখে, কোনো কঠোর ইন্টারফেস এবং কোনো লক-ইন ছাড়াই।
ভিত্তি ও স্ট্যাক
- ব্যাকএন্ড: Echo (HTTP ফ্রেমওয়ার্ক), Ent (কোড জেনারেশনসহ ORM), Gomponents (Go-তে লেখা HTML কম্পোনেন্ট)।
- ফ্রন্টএন্ড: AJAX/আংশিক আপডেটের জন্য HTMX সহ সার্ভার-সাইড রেন্ডার করা HTML, ক্লায়েন্ট-সাইড আচরণের জন্য Alpine.js, এবং স্টাইলিংয়ের জন্য Tailwind CSS-এর উপরে DaisyUI। প্রকল্পটি JavaScript বা CSS না লিখে, এমনকি সরাসরি HTML না লিখেও আধুনিক UI তৈরির উপর জোর দেয়।
- স্টোরেজ: SQLite হলো ডিফল্ট ডেটাবেস, যা স্থায়ী ব্যাকগ্রাউন্ড টাস্ক কিউয়ের জন্যও ব্যবহৃত হয়; ক্যাশিং ইন-মেমরি। README উল্লেখ করে যে Postgres এবং Redis আগে ডিফল্ট ছিল এবং সেই সেটআপের জন্য একটি অরক্ষণাবেক্ষিত ব্রাঞ্চের দিকে ইঙ্গিত করে।
অন্তর্ভুক্ত কার্যকারিতা
- authentication, cache, configuration, database, files, mail, ORM, tasks, validator এবং web সেবার জন্য ডিপেন্ডেন্সি ইনজেকশনসহ সার্ভিস কন্টেইনার; এটি এক কলে ইনিশিয়ালাইজ ও সুশৃঙ্খলভাবে শাট ডাউন করা যায় এবং রুট হ্যান্ডলারদের কাছে পাঠানো হয়।
- viper ব্যবহার করে এনভায়রনমেন্ট-ভেরিয়েবল ওভাররাইডসহ YAML-এর মাধ্যমে কনফিগারেশন, সাথে এনভায়রনমেন্ট সুইচিং (বিশেষত একটি টেস্ট এনভায়রনমেন্ট)।
- Ent-এর মাধ্যমে ডেটাবেস অটো-মাইগ্রেশন, এবং একটি আলাদা টেস্ট ডেটাবেস (ডিফল্টভাবে ইন-মেমরি SQLite)।
- User এবং PasswordToken-এর জন্য ORM এনটিটি টাইপ, নতুন এনটিটি টাইপ তৈরি ও জেনারেট করার জন্য Makefile হেল্পারসহ। Ent সরিয়ে ফেললে ডাইনামিক অ্যাডমিন প্যানেলও সরিয়ে যায়।
- Gorilla sessions-এর মাধ্যমে সেশন, কুকিতে সংরক্ষিত ও এনক্রিপ্টেড; README লাইভ এনভায়রনমেন্টের জন্য ডিফল্ট এনক্রিপশন কী পরিবর্তন করার সতর্কতা দেয়।
- Authentication: লগইন/লগআউট, পাসওয়ার্ড রিসেট টোকেন (bcrypt দিয়ে হ্যাশ করা, কনফিগারযোগ্য মেয়াদ), রেজিস্ট্রেশন, ইউজারদের উপর একটি অ্যাডমিন ফ্ল্যাগ, authentication প্রয়োজন, authentication নেই, বা অ্যাডমিন অ্যাক্সেসের জন্য মিডলওয়্যার, এবং ইমেইল ভেরিফিকেশন।
- কোড জেনারেশন, অ্যাক্সেস কন্ট্রোল এবং একটি রোডম্যাপসহ অ্যাডমিন প্যানেল; স্ক্রিনশটে এনটিটি লিস্ট/এডিট ভিউ এবং টাস্ক কিউ মনিটরিং দেখানো হয়েছে।
- কাস্টম মিডলওয়্যার, হ্যান্ডলার, এরর হ্যান্ডলিং, রিডাইরেক্ট এবং টেস্টিং হেল্পার (HTTP সার্ভার, request/response হেল্পার, Goquery) সহ রাউটিং।
- UI স্তর: Gomponents-ভিত্তিক কম্পোনেন্ট, লেআউট, পেজ, সাবমিশন প্রসেসিংসহ ফর্ম, ইনলাইন ভ্যালিডেশন এবং CSRF সুরক্ষা, মডেল, আইকন, নোড ক্যাশিং এবং ফ্ল্যাশ মেসেজিং।
- অতিরিক্ত সেবা: pager, cache (ডেটা ও ট্যাগ সেট/গেট/ফ্লাশ), কিউ, ডিসপ্যাচার ও মনিটরিংসহ tasks, cron, ফাইল আপলোড এবং cache-busting ও cache-control হেডারসহ static/public ফাইল, ইমেইল, HTTPS এবং লগিং।
শুরু করা
Go ইনস্টল করুন, রিপোজিটরি ক্লোন করুন, ঐচ্ছিক টুলের জন্য `make install` চালান (Ent generator, লাইভ রিলোডিংয়ের জন্য Air, Tailwind CLI), `make admin email=...` দিয়ে একটি অ্যাডমিন অ্যাকাউন্ট তৈরি করুন (কনসোল একটি জেনারেট করা পাসওয়ার্ড প্রিন্ট করে), তারপর `make run` চালান; অ্যাপটি ডিফল্টভাবে localhost:8000-এ পাওয়া যায় এবং ডেটা `dbs` ডিরেক্টরিতে থাকে। `make watch` স্বয়ংক্রিয় CSS রিকম্পাইলেশনসহ লাইভ রিলোডিং সক্রিয় করে।
লাইসেন্সিং ও অবস্থা
প্রকল্পটি MIT লাইসেন্সপ্রাপ্ত, Awesome Go-তে উল্লেখিত, এবং এতে CI টেস্ট ও Go Report Card ব্যাজ রয়েছে। README বিস্তারিত এবং মূলত কোডবেসের একটি নির্দেশিত ভ্রমণ, যা এমন ডেভেলপারদের জন্য উপযুক্ত যারা যেকোনো কম্পোনেন্ট বদলানোর ক্ষমতা রেখেই একটি ব্যাটারি-অন্তর্ভুক্ত সূচনা বিন্দু চান।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.