প্রকল্প সম্পর্কে
এই রিপোজিটরিতে Go অ্যাপ্লিকেশনের জন্য কিছু সাধারণ ঐতিহাসিক ও উভূত প্রজেক্ট লেআউট প্যাটার্ন রয়েছে। এটি স্পষ্টতঃ Go কোরের দল কর্তৃক সংজ্ঞায়িত কোনো সরকারি মান নয়, বরং Go ইকোসিস্টেমে পর্যবেক্ষিত রীতিগুলো নথিভুক্ত করার একটি সাম্প্রদায়িক প্রচেষ্টা।
লেআউটটি কয়েকটি মূল ডিরেক্টরি সংজ্ঞায়িত করে:
- /cmd: প্রধান অ্যাপ্লিকেশন; প্রতিটি সাবডিরেক্টরি একটি এক্সেকিউটেবলের নাম মিলে যায়, যেখানে /internal এবং /pkg থেকে কোড আমদানি করা ক্ষুদ্র main ফাংশন থাকে।
- /internal: গো অপারেটিং কম্পাইলার দ্বারা বলবৎকৃত বেসরকারি অ্যাপ্লিকেশন ও লাইব্রেরি কোড (Go 1.4 থেকে) যা বাহ্যিক আমদানি প্রতিরোধ করে। যেকোনো স্তরে নেস্টেড হতে পারে।
- /pkg: বাহ্যিক ব্যবহারের জন্য লাইব্রেরি কোড। এটি নির্দেশ করে যে অন্যরা কোড আমদানি করতে পারেন, যদিও বেসরকারি প্যাকেজের জন্য /internal হলো কম্পাইলার-বলবৎ বিকল্প।
- /vendor: Go Modules (go mod vendor) এর মাধ্যমে পরিচালিত অ্যাপ্লিকেশন নির্ভরতা।
- /api: OpenAPI/Swagger স্পেস, JSON স্কিমা ফাইল, প্রোটোকল সংজ্ঞা।
- /web: স্ট্যাটিক ওয়েব অ্যাসেট, সার্ভার-সাইড টেমপ্লেট, SPAs।
- /configs: কনফিগারেশন ফাইল টেমপ্লেট বা ডিফল্ট কনফিগ।
- /init: সিস্টেম ইনিট (systemd, upstart, sysv) এবং প্রসেস ম্যানেজার কনফিগ।
- /scripts: রুট Makefile সহজ রাখতে বিল্ড, ইনস্টল, বিশ্লেষণ স্ক্রিপ্ট।
- /build: প্যাকেজিং (AMI, Docker, deb, rpm) এবং CI কনফিগ।
- /deployments: IaaS/PaaS, কন্টেইনার অর্কেস্ট্রেশন ডিপ্লয়মেন্ট কনফিগ (docker-compose, kubernetes/helm, terraform)।
- /test: অতিরিক্ত বাহ্যিক টেস্ট অ্যাপ এবং টেস্ট ডেটা।
- /docs, /tools, /examples, /third_party, /githooks, /assets, /website: প্রমাণপত্র, সরঞ্জাম, উদাহরণ, বাহ্যিক সহায়তা, git hooks, অ্যাসেট এবং ওয়েবসাইট ডেটার জন্য সহায়ক ডিরেক্টরি।
README-তে স্পষ্টতঃ /src ডিরেক্টরি ব্যবহার না করার পরামর্শ দেওয়া হয়েছে (এটি Java রীতি) এবং ছোট প্রজেক্ট বা proof of concept-এর জন্য সহজভাবে শুরু করার (একটি মাত্র main.go এবং go.mod) পরামর্শ দেওয়া হয়েছে, প্রজেক্ট বাড়ার সাথে সাথে আরও কাঠামো গ্রহণ করতে বলা হয়েছে। এটি Go Modules (Go 1.14 থেকে প্রোডাকশন-প্রস্তুত), gofmt এবং staticcheck-এর ফরম্যাটিং ও ল্যান্টিংয়ের জন্য পরামর্শ দিয়েছে। README চীনা, জাপানি, কোরিয়ান, ফরাসি, স্প্যানিশ, রাশিয়ান, হিন্দি, বাংলা সহ ১৮+ ভাষায় উপলব্ধ।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.