বিষয়বস্তুতে যান

অবদান রাখা

সেটআপ

সঠিক জায়গায় একটি ছোট বদল করুন এবং পুল রিকোয়েস্ট হিসেবে পাঠান।

  • আগে একটি ইস্যু খুলুন, অথবা আগে থেকে থাকা কোনোটিতে কমেন্ট করুন। কী বদলাতে চান এবং কেন, তা লিখুন।
  • উত্তরের অপেক্ষা করুন, যাতে এমন কিছু না বানান যা মার্জ হবে না।
  • সেটআপ শেষ করুন, যাতে HolyArrs বিল্ড করে চালাতে পারেন।

প্রশ্ন যাবে Discord-এ। আইডিয়া যাবে r/HolyArrs-এ। ইস্যু শুধু বাগ ও রোডম্যাপের জন্য।

প্রথম পুল রিকোয়েস্ট পাঠান

প্রথম পুল রিকোয়েস্ট পাঠান-এর লিংক
  1. আপনার বদল কোন মডিউলের, তা খুঁজুন। মডিউল পেজের নামগুলো ফোল্ডারের নামের সঙ্গে মেলে, তাই Discord-এর ভুল অ্যালার্ট ঠিক করা মানে alerts-এ বদল।

  2. app/backend/internal/<module>/ ও app/frontend/src/lib/<module>/-এ বদলটি করুন। একটি ফিক্স বা একটি ফিচারেই রাখুন।

  3. আগে ওয়েব অ্যাপ, তারপর প্রোগ্রাম বিল্ড করুন এবং ব্রাউজারে বদলটি পরখ করুন। দেখুন সেটআপ।

  4. টেস্টিং-এর চেকগুলো চালান।

    আপনি কোনো ব্যর্থতা দেখতে পাবেন না।

  5. কোনো পেজ বদলালে তার এন্ড-টু-এন্ড প্রজেক্ট চালান, যেমন npm --prefix app/frontend run e2e -- --project=movies।

  6. পুল রিকোয়েস্ট খুলুন। ইস্যুটি লিংক করুন, কী বদলেছে ও কীভাবে টেস্ট করেছেন লিখুন, এবং বদলের জন্য টেস্ট যোগ বা আপডেট করুন।

  7. প্রথম পুল রিকোয়েস্টে একটি বট আপনাকে কন্ট্রিবিউটর লাইসেন্স চুক্তিতে সই করতে বলবে। সে যে একটি বাক্য চায়, সেটি উত্তরে লিখুন।

বদল কোথায় যাবে

বদল কোথায় যাবে-এর লিংক
বদল যেখানে যাবেন
একটি নতুন রুট মডিউল
একটি নতুন মডিউল মডিউল। আগে একটি ইস্যু খুলুন
একটি আটকে রাখা ফিচার সেটআপ
একটি নতুন ভার্সন বের করা নতুন ভার্সন বের করা। শুধু মেইনটেইনারদের জন্য

ভালো পুল রিকোয়েস্ট দেখতে কেমন

ভালো পুল রিকোয়েস্ট দেখতে কেমন-এর লিংক
  • কোড যা করে তা কেন করে, কমেন্টে সেটা লিখুন। কমেন্টে রোডম্যাপের নম্বর, তারিখ, নাম বা em dash দেবেন না।
  • ইস্যুটি শব্দ নিয়ে না হলে অ্যাপের শব্দে হাত দেবেন না।
  • প্রকাশিত API পাথ, ফিল্ডের নাম, সেটিংসের কী, টেবিলের নাম ও কাজের নাম যেমন আছে তেমনই রাখুন। শুধু যোগ করুন, কখনো নাম বদলাবেন না।

লক্ষণ: একটি স্ট্রাকচার চেক ফেল করে। কারণ: বার্তায় ফাইল ও নিয়মের নাম থাকে। সমাধান: কোডটি সরান, অথবা ওপরের মডিউল থেকে সাধারণ ডেটা পাঠান। দেখুন মডিউল।

লক্ষণ: ওয়েব অ্যাপ পুরোনো দেখায়। কারণ: প্রোগ্রাম নিজের ভেতরে বসানো বিল্ডটিই সার্ভ করে। সমাধান: প্রোগ্রামের আগে আবার ওয়েব অ্যাপ বিল্ড করুন।

লক্ষণ: এন্ড-টু-এন্ড টেস্ট চালু হয় না। কারণ: টেস্টের ব্রাউজার ইনস্টল করা নেই। সমাধান: npx --prefix app/frontend playwright install chromium চালান।

বিশেষজ্ঞদের জন্য

বিশেষজ্ঞদের জন্য-এর লিংক
পুল রিকোয়েস্টকে যে নিয়ম মানতে হয়
  • একটি মডিউল অন্য মডিউলের সঙ্গে কথা বলে শুধু তার সার্ভিসের (Go) বা index.ts-এর (ওয়েব) মাধ্যমে। কখনো তার স্টোর বা ফাইলের মাধ্যমে নয়।
  • SQL থাকে শুধু মডিউলের store*.go ফাইলে, সেই মডিউলের নিজের টেবিলের ওপর।
  • ওয়েবের কোনো অংশ lib/ui-তে যায় শুধু তখন, যখন 2টি বা বেশি মডিউল সেটি ব্যবহার করে।
  • util, common, shared বা helpers নামে কোনো প্যাকেজ নয়।
  • বাইরের প্রতিটি কল core/outbound দিয়ে যায়।

টেস্ট এই নিয়মগুলো যাচাই করে, তাই ভুল ইমপোর্ট বিল্ড ফেল করায়। পুরো তালিকা ও চেকের নাম মডিউল পেজে আছে।

CI কী চালায়
কাজ যা চালায়
Web check, lint, test, build এবং এন্ড-টু-এন্ড স্যুট
Go amd64 ও arm64-এ go build, go vet এবং go test -timeout 60m ./..., নেটিভভাবে ও এমুলেশনে
Race go test -race ./...
Contract openapi.json-এর মিল, প্রতিটি রুটে স্কোপ চেক, ডাউনলোডার স্যুট
Fault and scale ক্র্যাশ, ধীর লেখা, বাইরের খারাপ সার্ভিস ও মেমরির রান
Image একটি ডেভেলপমেন্ট ইমেজ বিল্ড হয়, চালু হয় এবং নিজের ভার্সন জানায়

লম্বা রানগুলোর বিস্তারিত টেস্টিং পেজে আছে।

HolyArrs বিনামূল্যে। এটি আপনার সময় বাঁচিয়ে থাকলে GitHub-এ স্টার দিন, স্পনসর করুন অথবা এক কাপ কফি কিনে দিন।