# Personfolio Node.js + MySQL: cPanel ইনস্টল এটি আলাদা Node.js backend-এর সম্পূর্ণ সংস্করণ। PHP, PDO বা PHP installer প্রয়োজন নেই। React frontend আগে থেকেই build করা আছে। বর্তমান domain-এ Node.js চালানোর সুবিধা hosting provider-কে দিতে হবে। Node.js service নিজেই বন্ধ থাকলে এই package 503 দূর করতে পারবে না। ## আগে যা করবেন - পুরোনো PHP site, storage/uploads এবং MySQL database backup নিন। - **নতুন খালি database ব্যবহার করুন।** পুরোনো PHP database-এর ওপর ইনস্টল করবেন না। পুরোনো records JSON export থাকলে পরে Import JSON দিয়ে আনতে পারবেন। Files আলাদা করে upload করতে হবে। - Application root-টি public_html ও domain-এর public document root-এর বাইরে রাখুন, যেমন home directory-তে `personfolio-node`। এতে config, logs এবং source files সরাসরি web থেকে পাওয়া যাবে না। - আগের PHP site একই domain-এ থাকলে backup নিয়ে পুরোনো PHP files ও PHP routing rules আলাদা করে রাখুন। Node app এবং PHP installer একই document root-এ মেশাবেন না। CloudLinux/cPanel-কে Passenger rules তৈরি করতে দিন। ## Terminal ছাড়াই setup 1. cPanel → File Manager → Home খুলে `personfolio-node` folder তৈরি করুন। ZIP সেই folder-এ Extract করুন। `app.js`, `package.json`, `database.sql`, `dist` যেন ওই folder-এর সরাসরি ভেতরে থাকে। 2. cPanel → **Setup Node.js App → Create Application** খুলুন। 3. নিচের মান ব্যবহার করুন: - Node.js version: **22.12 বা নতুন 22.x / 24.x**, যদি hosting-এ থাকে - Application mode: **Production** - Application root: **personfolio-node** (public_html-এর বাইরে তৈরি folder) - Application URL: **personaldata.dailyonlinezone.com**, path **/** - Application startup file: **app.js** 4. ZIP-এর `.env` ফাইলটি `app.js`-এর পাশে রাখুন। এই ফাইলে domain, production mode ও একটি random SETUP_KEY প্রস্তুত আছে। File Manager → Settings → Show Hidden Files চালু করলে ফাইলটি দেখা যাবে। চাইলে নিচের মান cPanel Environment variables-এও দিতে পারেন; সেখানে আগে সেট করা মান `.env`-এর মানের চেয়ে অগ্রাধিকার পাবে: - `APP_URL` = `https://personaldata.dailyonlinezone.com` - `NODE_ENV` = `production` - `SETUP_KEY` = আপনার নিজের তৈরি অন্তত 32 অক্ষরের গোপন random key। উদাহরণ placeholder ব্যবহার করবেন না। এটি installer-এ লাগবে; chat-এ পাঠাবেন না। 5. Save/Create করুন। **Run NPM Install** চাপুন। শেষ হলে **Restart** করুন। `node_modules` ZIP-এ নেই; cPanel এই ধাপে প্রয়োজনীয় package install করবে। Terminal লাগবে না। 6. `https://personaldata.dailyonlinezone.com/install` খুলুন। Node সংস্করণে `/install` ব্যবহার করুন। 7. `.env` ফাইলের `SETUP_KEY=`-এর পরের মান কপি করে Setup key ঘরে দিন। MySQL host (সাধারণত localhost), port 3306, নতুন খালি database-এর পুরো নাম, প্রকৃত database username/password দিন। Admin email এবং অন্তত 12 অক্ষরের login password দিন। Database user-কে cPanel থেকে ওই database-এর ALL PRIVILEGES দিতে হবে। 8. Install সফল হলে login করুন। Setup lock হবে। ইনস্টলের পর `.env` এবং cPanel environment থেকে SETUP_KEY সরিয়ে Restart করতে পারেন; config থাকলে installer বন্ধই থাকবে। Database যদি `dailyonl_personal-data` হয়, নামটি হাইফেনসহ লিখুন। তবে এতে আগের table থাকলে নতুন আলাদা database বানান। Setup মাঝপথে থামলে একই database credentials এবং একই admin account দিয়ে retry করা যায়, যদি এই Node installer-ই সেই attempt শুরু করে থাকে। ## ব্যবহার - Add person, ইংরেজি/বাংলা/আরবি নাম, birthday ও birth details, map coordinates, related people, identities, education, travel, notes, dropdown management, social links, profile photo upload/link আছে। - Print / Save PDF এবং Resume / CV থেকে A4 print dialog ব্যবহার করুন। PDF বানাতে Save as PDF নির্বাচন করুন। - Share profile থেকে নির্বাচিত তথ্যের link চালু বা বন্ধ করা যায়। Expiry প্রয়োগ হয় server-এ। - Theme এবং mobile responsive UI আছে। Android Chrome-এ Install app; iPhone Safari-তে Share → Add to Home Screen। এটি online PWA, APK/IPA নয়। - Reminder list, browser notification ও calendar export আছে। Automatic scheduled email/WhatsApp sending এই package-এ নেই। ## Log checker Login করে **Log checker** অথবা `/log-checker` খুলুন। Database/table ও storage checks, log download এবং test entry আছে। - Application log: `storage/logs/application.log` - আগের log: `storage/logs/application.log.1` - প্রায় 1 MB-এ rotate; viewer সর্বশেষ 200 KB দেখায়; সময় UTC। - Password ও personal records log-এ রাখা হয় না; error type/code থাকে। - App start-ই না হলে cPanel-এর Node.js/Passenger log দেখুন। এটি PHP log নয়। - `MODULE_NOT_FOUND` হলে Run NPM Install করে Restart করুন। - APP_URL missing হলে environment variable যোগ করে Restart করুন। - `/install`-এও 503 হলে Setup Node.js App-এর status ও Passenger log দরকার। ## Backup / source `storage/config.json`-এ database credentials থাকে। MySQL database, config ও storage/uploads backup করুন। পুরোনো data মুছবেন না। `app.js`, `core.js`, `public-view.js`: Node backend। `frontend` ও Vite files: UI source। `dist`: ready frontend। Local development-এ `npm install`, `npm test`, `npm run build` ব্যবহার করা যায়। cPanel deployment-এ frontend rebuild লাগে না। ## পরীক্ষার সীমা Node HTTP এবং data/security tests আছে: installer availability, origin checks, wrong setup key, private file access, password verification, malformed fields, sharing privacy/expiry ও file signatures। এই পরিবেশে live MySQL server নেই; real database installation/CRUD এবং আপনার Passenger hosting-এ end-to-end পরীক্ষা করা যায়নি। Deploy-এর পরে একটি test person তৈরি, edit, ছবি upload, relation, share hide, resume save ও log download পরীক্ষা করুন।