# ToolForge setup ও admin guide

## MySQL নিজে বানাতে হবে?

| Hosting | তোমার করণীয় | স্বয়ংক্রিয় কাজ |
|---|---|---|
| Docker/VPS | Docker Compose এবং `.env` credentials সেট করো | প্রথমবার MySQL container database/user তৈরি করে; Laravel migration tables তৈরি করে |
| cPanel/shared hosting | MySQL Database ও User তৈরি করে user-কে database permission দাও; `.env`-এ credentials দাও | `php artisan migrate --seed --force` tables ও initial records তৈরি করে |
| Docker ছাড়া VPS | MySQL install করে database/user provision করো | Laravel migration tables তৈরি করে |

Docker-এর existing database volume থাকলে `.env`-এ নাম/password বদলালেই database reset বা password change হয় না। Production database delete করে reinstall কোরো না। এই Laravel/Horizon setup-এর জন্য PHP CLI, Redis এবং দীর্ঘসময় চালু থাকা worker দরকার; সব shared hosting তা দেয় না।

## প্রথমবার চালু করা

1. `public/`-কে web document root করো। `.env`, storage, vendor বা পুরো project root public করবে না।
2. `.env.example` থেকে `.env` বানিয়ে URL, database এবং Redis credentials বসাও। Production-এ HTTPS, APP_DEBUG=false এবং secure cookies রাখো।
3. Composer dependencies install করে `php artisan key:generate` চালাও। APP_KEY নিরাপদে backup রাখো; পরে অযথা বদলাবে না।
4. `php artisan platform:setup-check` দিয়ে configuration যাচাই করো।
5. `php artisan migrate --seed --force` চালাও। নতুন release-এও migrations চালাতে হবে।
6. `php artisan platform:create-user your-email@example.com --owner` দিয়ে owner তৈরি করো। Password terminal-এ জিজ্ঞেস করবে।
7. `/login` থেকে login করে 2FA enroll করো, recovery codes রাখো, sign out করে আবার authenticator code দিয়ে login করো।
8. Horizon worker ও scheduler চালু রাখো। Installation-এর বিস্তারিত `DEPLOYMENT.md`-এ আছে।

## Logo, favicon ও SEO

`/admin/site` থেকে logo/favicon upload, site name/tagline, default description, operator contact details এবং verification tokens দাও। ছবি PNG-তে rewrite হয়; SVG নেওয়া হয় না। Search Console-এ পাওয়া token দেবে—পুরো `<meta>` tag নয়। DNS verification চাইলে DNS provider-এ আলাদাভাবে করতে হবে।

Google Analytics field-এ `G-...`, Meta Pixel field-এ numeric ID, AdSense field-এ `ca-pub-...` বসবে। এখানে ID বসানো account ownership verification বা provider approval-এর বিকল্প নয়।

Custom metadata হলো name/content JSON। JSON-LD হলো `@context: https://schema.org`-সহ JSON object। Google rich-result eligibility বা schema-এর factual correctness স্বয়ংক্রিয়ভাবে certify করা হয় না। Local redirects-এ শুধু `/tools/...` ও `/pages/...` path দেওয়া যায়; external redirect ও redirect loop block হয়।

## CMP এবং AdSense

1. নিজের Cookiebot account/domain group তৈরি করে actual domain ও TCF/vendor configuration করো।
2. Site control-এ Cookiebot UUID ও CMP switch দাও।
3. Google AdSense account-এ site যোগ ও review process সম্পন্ন করো; publisher ID দাও।
4. `/admin/content/ads`-এ আসল ad slot IDs দাও। Tool editor-এ প্রয়োজনীয় tool-এর ad flag enable করো।
5. Legal/operator details ও editorial content review করে flags confirm করো।
6. Real browser-এ Reject, Accept, Withdraw, DNT/GPC, ad-blocker ও CMP failure পরীক্ষা করো। Consent না থাকলে optional scripts/ad request যাওয়ার কথা নয়।

Signed-in visitors ও admin/login/private-result pages-এ third-party scripts বন্ধ। Test করতে logged-out/incognito browser ব্যবহার করো। Provider account ও domain ছাড়া live ads/analytics verification শেষ করা যায় না।

## Custom code

`/admin/snippets`-এ inline HTML/CSS/JavaScript widget দেওয়া যাবে। এটি sandbox iframe-এ চলবে; parent page, admin session, cookies বা external network পাবে না। Head meta/schema এবং common tracking integrations-এর জন্য dedicated settings ব্যবহার করো। Arbitrary PHP বা unrestricted same-origin JavaScript চালানোর ব্যবস্থা দেওয়া হয়নি।

## নতুন tool

`/admin/processors` → processor select → sample preview → Create tool। Editor-এ “Load processor fields & defaults” দিলে input schema তৈরি হয়। Text Pipeline-এ approved steps সাজিয়ে নতুন workflow করা যাবে; Template Renderer-এ `{{text}}` একবার বসিয়ে reusable output তৈরি করা যাবে। নতুন algorithm/API integration আলাদা reviewed implementation চায়।

## Content প্রকাশ

১৫টি original concise guide আছে। পাঁচটি legal/about/contact draft-এ operator placeholders আছে। Site control-এ বাস্তব নাম, address, email, jurisdiction পূরণ ও review করার পর Pages থেকে publish করো। Privacy notice-এ actual hosting/backup/providers-এর বিবরণ মিলিয়ে নাও। খসড়াগুলো personalised legal advice নয়।

## এখনো যেসব তথ্য/পরিবেশ লাগবে

Actual domain/hosting; operator identity/contact; Google/Meta/AdSense IDs; Cookiebot account/domain configuration; প্রয়োজনে paid tool API keys। Live infrastructure ছাড়া production Lighthouse, real-user TTFB, concurrent load, WAF/TLS, provider requests ও restore drill যাচাই করা যায়নি। ZIP-এর test report স্থানীয় যাচাইয়ের সীমা পরিষ্কার করেছে।
