SIDHI SCHOOL HUB | cPanel setup

Host requirement
Ask the provider to enable a Node.js 24+ web application with node:sqlite, HTTPS and persistent writable storage. Use one app process and a dedicated subdomain served at its root path. The browser assets are already built. No npm packages or compilation are required to run this distribution.

1. Create your school subdomain and enable HTTPS. Point its DNS to this host.
2. In File Manager create a private application directory such as /home/YOUR_CPANEL_USER/sidhi-app outside public_html and outside the subdomain document root. Upload and extract the ZIP there. app.js and package.json must be directly inside the application directory. Keep the database, .env, and server source outside publicly served folders.
3. In Setup Node.js App or Application Manager register the application at the subdomain root. Select Node.js 24 or newer where available. Choose Production, application root sidhi-app and startup file app.js. Some hosts configure the Node version and Passenger routing for you.
4. Add these environment variables to the app configuration. Alternatively copy .env.example to .env inside the private application directory and edit it. Replace all sample paths and values:
   APP_ORIGIN   Exact HTTPS address used in the browser, without a trailing slash, e.g. https://classes.sidhischool.com
   ADMIN_PASSWORD   A unique private administrator password, at least 16 characters.
   DATA_DIR   An absolute writable directory outside the app and public website, e.g. /home/YOUR_CPANEL_USER/sidhi-data
   Leave the port under the hosting provider's control.
5. Start or restart the application. Visit your configured HTTPS address. Sign in with username admin and your ADMIN_PASSWORD.
6. To move records, download a school backup from Workspace details in your existing Sidhi app. Restore it from Workspace details in this installation. Restoring replaces this installation's school records. This ZIP starts empty. Member logins and the email ledger are separate from a school JSON backup.
7. Confirm each student's assigned teacher. Open Member accounts, select a teacher or student record, and enter their email and initial password. Give each member the HTTPS address and their own credentials privately. Teacher and student accounts use email/password on this installation. A teacher can schedule classes and mark attendance for their assigned students. A student can view their own timetable, attendance and payments.
8. Optional email: configure RESEND_API_KEY and EMAIL_FROM (verified sender); optionally EMAIL_REPLY_TO. Restart and use Notifications to enable email. Automatic reminders require the app process to keep running during idle periods. Confirm that setting with your provider.

Check before sharing
Use two test accounts you control. Confirm that the teacher can schedule a lesson and mark Completed + Present and that the student can see it. Check that another student's records are absent. Disable test accounts when finished.

Updates and backups
Keep your live DATA_DIR and private settings when replacing application files. Back up the data directory with the app stopped, including SQLite sidecar files if present. For a startup problem check your application error log, Node version, environment values and directory permissions. For an origin mismatch compare APP_ORIGIN to the exact HTTPS address in the browser.
