Minimum PHP Version:
Required PHP Extensions:
First, navigate to the Databases section of your hosting panel. Click on MySQL® Databases to begin the process. This tool allows you to create and manage your databases and database users.
On the next screen, you will be able to create a new database. You will see a field to enter the name of your new database. The hosting provider automatically adds a prefix to the database name for security. After entering the name, click Create Database.
After creating the database, you'll need to create a user for it. Scroll down on the same page to the Add New User section. Enter a Username and a strong Password in the provided fields. Use the Password Generator tool to create a secure password. Click Create User to save the new user.
The final step is to grant the new user permissions to manage the database. On the Manage User Privileges page, check the box for ALL PRIVILEGES. This gives the user full control over the database, allowing them to create, modify, and delete tables and data. Click Make Changes to finalize the process. Your database and user are now set up and ready to use.
Log in to your cPanel account. In the main menu, look for the Files section and click on File Manager. This will open the file manager interface in a new tab.
In the File Manager, navigate to the folder where you want to upload your files. For a primary domain, this is typically the public_html folder. This folder is the "web root" and contains all the files that are accessible to the public on your website.
Once you are in the correct directory, click the Upload button in the toolbar at the top of the page. This will open a new window where you can drag and drop your files or click Select File to browse for files on your computer.
After the upload is complete, you should see a 100% progress message. The uploaded file should now appear in the folder you selected in the File Manager.
Open a web browser and navigate to your website's installation URL, which is typically yourdomain.com/install. This action will initiate the installation process and lead you to the App Installation Process page.
The next step is to ensure your server meets all the necessary requirements for the application. Click the "Click to Check Your Server Requirements" button to proceed.
After confirming the server extensions, the installer will check the necessary directory permissions. Ensure all permissions are correct (often shown with a green checkmark next to them) and then click "Click to Configure Your App Environment".
You will be given options to configure the app's environment. For a straightforward installation, select "Using Form Wizard Setup".
This is a critical step where you link the application to your database. Fill in the required fields with the information you gathered when setting up your database. This includes the Database Host, Database Name, Database User Name, and Database Password. You will also need to enter an Application Name and Application Url. Once all the details are entered, click "Click to Install".
The installer will now run the installation process, which includes preparing the database and running migrations. Once you see the "Application has been successfully installed" message, you have successfully completed the process. Click "Click here to exit" to finish.
Email : superadmin@gmail.com
Password : 123456
Email : owner@gmail.com
Password : 123456
Email : manager@gmail.com
Password : 123456
Email : trainer@gmail.com
Password : 123456
Email : trainee@gmail.com
Password : 123456
Many features run automatically once a day: membership renewals, renewal and payment reminders and more. For these to work, the server must open the system's cron job link every day. Set this up right after installation.
Log in as Super Admin, open Settings → Cronjob Settings and click Generate. The page then shows a ready-made command such as:
wget -q -O /dev/null https://yourdomain.com/cronjob?key=YOUR_KEY
In cPanel, open Cron Jobs, choose Once Per Day (or once per hour for faster reminders), paste the command and save. If you have command-line access you can use the Laravel scheduler instead:
* * * * * cd /path/to/main_file && php artisan schedule:run >> /dev/null 2>&1
Keep the key private. If it is ever shared by mistake, click Remove and generate a new one.
FitHub is a gym and fitness management system sold as a SaaS (software as a service). You (the Super Admin) run the platform. Gym owners and fitness studios sign up, choose a plan and manage their own business inside it. Each gym's data is kept completely separate from other gyms.
Every user has a role. A role decides which menus a user sees and what they are allowed to do. Owners can edit the permissions of each role, or create new roles, under Staff Management → Roles.
| Role | What they can do |
|---|---|
| Super Admin | Runs the SaaS platform: customers (owners), packages, coupons, transactions, the landing website (CMS), website domains, the mobile app store links and system settings. Can log in as any owner to help them (impersonate). |
| Owner | Full access to their own gym: members, trainers, classes, finance, store, reports, website, staff and settings. |
| Manager | Day-to-day work as allowed by the permissions the owner gives the role. |
| Trainer | Sees their classes, workouts and the members assigned to them, and marks attendance. |
| Trainee (Member) | Sees their own plan and invoices (and pays them online), books classes, follows workouts and nutrition, updates daily health, uses the entry pass and the store. |
Login details for each demo role are listed in the Default User Login Details section.
| Feature | What it does |
|---|---|
| Members (trainees) | Profiles with photo, contact details, plan, start and end dates and status. A login is created so the member can use their portal and the mobile app. |
| Trainers | Trainer profiles with their own login, classes and assigned members. |
| Membership plans | Create monthly, annual or day-pass plans with price, duration and description. Plans are shown on the gym website and in the app. |
| Automatic renewal | A member can save a card and switch on automatic renewal. The renewal invoice is created first and the charge can never be taken twice. A failed charge is retried after 1 and then 3 days; after the third failure automatic renewal is switched off and the member is told by e-mail and push notification. |
| Member card and entry pass | Every member has a personal QR entry pass on the website and in the app. The member card page shows the plan and status. |
| Payment method | Members add, change or remove their saved card. |
| Impersonate | The Super Admin can log in as an owner to help them, then return. |
Where: Members → Trainees / Trainers / Membership / Payment method / My Pass.
| Feature | What it does |
|---|---|
| Classes | Create classes with a trainer, room capacity and weekly timetable. |
| Class booking | Members book a seat from the website or the app (Book a Class). Staff see every booking under Class Bookings. |
| Waitlist | When a class is full the member joins a waitlist. When someone cancels, the first person on the waitlist gets the seat automatically and is told by e-mail and push notification. |
| QR check-in | Staff scan the member's QR pass at the front desk. The scan checks the plan, shows Allowed or Denied and records the visit. |
| Attendance | Mark attendance one by one, in bulk for a class, or see today's attendance. Members see their own visits history. |
| Lockers | Manage lockers and assign them to members. |
| Events | An event calendar with capacity. Members register and cancel from their portal or the app. |
Where: Training → Classes / Book a Class / Class Bookings / Attendances / Locker / Event; Members → Check-in.
| Feature | What it does |
|---|---|
| Invoices | Create invoices with line items and tax. The status (unpaid, partially paid, paid) updates itself as payments come in. Invoices can be printed. |
| Tax management | Create tax rates once and use them on invoices and products. |
| Online payment | Members pay with Stripe, PayPal, Flutterwave, Paystack, Razorpay or bank transfer, using the gateways set up in Settings. |
| Saved card | Members pay an invoice with their saved card from the website or the mobile app. |
| Income and expenses | Record expenses by finance type and see income from paid invoices. |
| Payroll | Pay trainers and staff monthly with payslips (see Staff & Payroll below). |
Where: Sales & Finance → Invoice; Finance → Invoice / Expense / Payroll; System Configuration → Finance Type / Tax.
| Feature | What it does |
|---|---|
| Workout plans | Build workouts from your own list of activities with sets and reps and assign them to members. Members tick off each exercise and the log is kept. |
| Today's workout | Trainers see which members completed today's workout. |
| Nutrition schedule | Meal plans with meals and calories for each member. |
| Health update | Members record weight and measurements; the BMI and a progress chart are shown. |
| Activities and categories | Your own lists of workout activities and categories, managed under System Configuration. |
Where: Training → Workouts / Nutrition Schedule; Members → Health Update; System Configuration → Category / Workout Activity.
| Feature | What it does |
|---|---|
| Products | Add products with category, price, discount and photos. |
| Inventory | A stock ledger records every movement (stock in, sales, adjustments). Low-stock e-mails are sent when an item is running out. |
| Counter sale | Sell at the front desk with tax, and optionally add the sale to a member's invoice. |
| Member orders | Members order from the website or the app and pay on an invoice. Staff see every order under Member Orders. |
| Product booking report | See orders and sales by product. |
Where: Sales & Finance → Store → Products / Inventory / Counter Sale / Member Orders; Reports → Product Booking.
| Feature | What it does |
|---|---|
| Lead pipeline | Enquiries from the website, phone or walk-ins in one pipeline (New, Contacted, Trial, Joined) with notes and follow-up dates. |
| Convert to member | Convert a lead into a member in one click; the details carry over. |
| Contact diary | An address book of useful contacts for your team. |
Where: Members → Leads; Engage → Contact Diary.
Every gym gets a public website at its own address (platform link, sub-domain or its own domain). Visitors can browse classes, trainers and plans and join without logging in. The owner builds it under Engage → Website.
| Feature | What it does |
|---|---|
| Home page sections | Turn sections on or off and set their order: classes, why train with us, counters, trainers, membership plans, video, testimonials, latest blog posts and join banner. |
| Pages | Built-in pages: About, Classes, Trainers, Pricing, Blog, Gallery, FAQ and Contact, plus your own custom pages. |
| Header and footer | For every built-in page choose whether it shows in the header, the footer, both or neither. Custom pages have the same choice. The "Get the app" page is footer-only by default. |
| Wording | Change the text of every heading and button. Default photos are shown until you add your own. |
| Blog and gallery | Publish articles and a photo gallery. |
| Join form | Visitors sign up online. They confirm their e-mail, log in and pay the membership invoice. |
| Addresses | Every gym has a platform link. Owners can add a sub-domain, and their own domain after verifying it with a DNS record. Your server must point the domain to the system and provide SSL. |
| SEO and colours | Page title and description, and the gym's own theme colours. |
| Get the app | A page with the gym code, the store links and a button that opens the app on a phone. |
Where: Engage → Website → Settings / Layout / Wording / Pages / Blog / Gallery / App / Domain. The Super Admin sets the base domain under Website domains.
| Feature | What it does |
|---|---|
| Notice board | Post notices that members, trainers and staff see on their dashboard and in the app. Members with the app get a push notification. |
| Events | An event calendar with registration, capacity and cancellation. |
| Blog | Articles shown on the website and in the app (News). |
| Lockers | Assign lockers to members. |
| Support and notes | Keep notes and support items for your team. |
Where: Engage → Notice Board / Contact Diary; Training → Event / Locker.
Each role has its own dashboard. The owner's dashboard shows active members, this month's revenue, check-ins today, memberships expiring soon, a revenue chart and the plan mix. The Super Admin's dashboard shows gyms, subscription income and registered app devices.
| Report | Shows |
|---|---|
| Trainee | Members with their plan, dates and status. |
| Membership | Memberships by plan and status. |
| Attendance | Visits by date and member. |
| Income | Money received by period. |
| Expense | Money spent by period and finance type. |
| Product Booking | Store orders and sales by product. |
Reports can be downloaded as CSV, which opens in Excel.
| Feature | What it does |
|---|---|
| Email notifications | Ready-made e-mail templates (renewals, payments and more). Owners can edit the wording and switch each one on or off. |
| SMS and WhatsApp | Send messages through Twilio when it is set up in Settings. |
| Push notifications | Phone notifications in the mobile app (Firebase): a class seat opened, an automatic renewal failed, a new notice. Tapping one opens the right screen. |
| AI assistant | Owners ask questions in plain language and get answers from their own gym data. A plan can include or exclude the assistant. |
| AI coach | Members chat with an AI coach that answers from their own plan, visits and progress. |
| AI providers | Works with OpenAI, Anthropic Claude, Google Gemini, Mistral, DeepSeek and Groq. Every owner enters their own provider and key. |
| n8n webhooks | Send events to n8n to build your own automations. |
| Activity log | Logged History shows who logged in, when and from where. The Audit Log records important actions. |
Where: System Configuration → Email Notification; Settings → Twilio / AI; Engage → N8N; AI Assistant; Staff Management → Logged History / Audit Log.
| Feature | What it does |
|---|---|
| Users | Add staff accounts and give each a role. |
| Roles and permissions | Create roles and choose exactly what each role can see and do. |
| Payroll | Run payroll for trainers and staff each month and keep a payslip for each person. |
| Security | Audit log, 2-factor authentication and Google reCAPTCHA protect the system. |
Where: Staff Management → Users / Roles / Audit Log; Sales & Finance → Finance → Payroll.
The member mobile app is available as an add-on. It is one Flutter project for Android and iPhone that serves every gym: the member enters (or scans) the gym code and the app takes that gym's name, logo, colours, welcome message and sections. The add-on includes the source code of two separate projects, one for each store: mobile_app/android_app and mobile_app/iphone_app. You build it with your own app name, logo and colours and publish it once under your own Google Play and App Store accounts.
| Who | What they can do |
|---|---|
| Members | Entry pass (QR) and visits, classes with booking, waitlist and add to calendar, invoices with pay by saved card, automatic renewal and plans, workouts with tick-off, nutrition, health, store orders, events with registration, notices, news and the AI coach. |
| Branding | Each owner sets the app name, logo, colours, welcome message and which sections show under Engage → Website → App. |
| Push notifications | Optional phone notifications through your own Firebase project. |
| Same accounts | Members log in with the same e-mail and password they use on the website. |
| Forced update | The Super Admin sets the oldest app version allowed to connect under Mobile app. |
| Project | Build and publish |
|---|---|
| mobile_app/android_app | Android app for Google Play. Build on Windows, macOS or Linux with the Flutter SDK. Step-by-step guide: mobile_app/android_app/documentation/android.html. |
| mobile_app/iphone_app | iPhone app for the App Store. Needs a Mac with Xcode and an Apple developer account. Step-by-step guide: mobile_app/iphone_app/documentation/ios.html. |
flutter pub get.flutter build appbundle --dart-define=API_BASE_URL=https://your-domain.com/api/v1 --dart-define=APP_VERSION=1.0.0 (Android) or flutter build ipa with the same options (iPhone).| Feature | What it does |
|---|---|
| Customers | All gym owners on the platform. Create an owner, assign a package, and log in as them to help (impersonate). |
| Packages | Create plans with a price, billing interval and limits on users, trainers and trainees. Turn features on per plan, such as logged history and coupons. |
| Coupons | Discount codes with usage history. |
| Transactions | All subscription payments. Approve bank transfer payments here. |
| CMS | Edit the platform's landing page, custom pages, FAQ, footer and login page. |
| Switches | Turn the landing page, the register page and pricing on or off. Owner e-mail verification can be turned on or off. |
| Website domains | Set the base domain used for gym sub-domains and see which owners use their own domain. |
| Mobile app | Store links, the oldest allowed app version, the Firebase key for push and the number of registered phones. |
Where: Customers; Pricing → Packages / Transactions; Coupons; CMS; Website domains; Mobile app; Settings.
| Settings tab | Used for |
|---|---|
| User Profile / Password | The user's own name, photo and password. |
| General | Date and time format, timezone and the landing page, register page, pricing and e-mail verification switches. |
| Company | Gym name, logo, address, phone, e-mail and currency. |
| SMTP details for sending e-mails, with a test e-mail button. | |
| Payment | Payment gateway keys: Stripe, PayPal, Flutterwave, Paystack, Razorpay and bank transfer. Super Admin keys take subscription payments; owner keys take member payments. |
| Site SEO | Title, description and share image for the landing website. |
| Google reCAPTCHA | Protects login and registration forms from bots. |
| 2 Factors Authentication | Extra login security with an authenticator app. |
| Twilio | SMS and WhatsApp messages. |
| AI | Choose the AI provider, model and key. |
| Cronjob Settings | The key and command for the daily cron job (see Cron Job Setup). |
Which tabs a user sees depends on their role. Super Admin sees the platform settings; owners see the settings for their own gym. Theme colours, light / dark mode, fonts and RTL are set from the settings button at the top of the page.
The system comes in 12 languages: English, Arabic, Danish, Dutch, French, German, Italian, Japanese, Polish, Portuguese, Russian and Spanish. Arabic is shown right-to-left.
Translations are stored in main_file/resources/lang, one JSON file per language (for example french.json). Edit the right-hand text to change a translation. To add a new language, copy english.json and the english folder to the new language name and translate them. Back up your changes before upgrading (see Software Upgrade Process).
If you have any queries, please create a support ticket, and our support team will respond as soon as possible.