Overview

This documentation explains how to install, configure and upgrade FitHub, and describes what the system does: user roles, every main feature, the gym website, the mobile app, settings and languages.

Server Requirement

Laravel requires certain minimum PHP versions and extensions. Make sure your web server supports the following:

    Minimum PHP Version:

  • PHP >= 8.1
  • Required PHP Extensions:

  • cURL PHP
  • DOM PHP
  • Fileinfo PHP
  • Filter PHP
  • Hash PHP
  • Mbstring PHP
  • OpenSSL PHP
  • PCRE PHP
  • PDO PHP
  • Session PHP
  • Tokenizer PHP
  • XML PHP

How to Create Database

Step 1: Access the Database Creation Tool

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.

Step 2: Create a New Database

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.

Step 3: Create a New User

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.

Step 5: Assign Privileges

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.

How to Upload Files

Step 1: Access the File Manager

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.

Step 2: Navigate to the Correct Folder

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.

Step 3: Select and Upload Files

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.

Step 4: Verify the Upload

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.

How to Install

Step 1: Start the Installation

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.

Step 2: Check Server Requirements

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.

Step 3: Verify App Permissions

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".

Step 4: Configure App Environment

You will be given options to configure the app's environment. For a straightforward installation, select "Using Form Wizard Setup".

Step 5: Enter App and Database Details

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".

Step 6: Finalize Installation

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.

Default User Login Details

Super Admin Login Detail

Email : superadmin@gmail.com

Password : 123456

Owner Login Detail

Email : owner@gmail.com

Password : 123456

Manager Login Detail

Email : manager@gmail.com

Password : 123456

Trainer Login Detail

Email : trainer@gmail.com

Password : 123456

Trainee Login Detail

Email : trainee@gmail.com

Password : 123456

Cron Job Setup (Required)

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.

Step 1: Create the cron job key

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
Step 2: Add it to your hosting panel

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
What the daily run does
  • Charges members who turned on automatic renewal with a saved card, and retries failed charges after 1 and 3 days
  • Marks lapsed memberships as expired
  • Sends membership renewal reminders and payment reminders
  • Sends low-stock e-mails for products that are running out

Keep the key private. If it is ever shared by mistake, click Remove and generate a new one.

System Overview

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.

How it fits together
  • Super Admin – runs the platform: plans and pricing, coupons, the landing website, payment gateways, website domains, the mobile app and global settings.
  • Owner – a gym owner or fitness studio. Manages members, classes, money, store and their own staff.
  • Staff – managers and any custom roles the owner creates, each with chosen permissions.
  • Trainers and members (trainees) – log in to their own portal to see only what belongs to them.
  • Public website – every gym gets a public website that visitors can browse without logging in.
  • Mobile app – one Android and iPhone app for every gym, connected through the built-in API (available as an add-on).
A typical day for an owner
  1. Add classes and membership plans, then publish them on the gym website.
  2. Visitors join online or become leads; convert a lead into a member in one click.
  3. Members book classes, and when a class is full they join the waitlist.
  4. Members check in at the front desk by scanning their QR entry pass.
  5. Invoices are paid online, and members with a saved card are renewed automatically.
  6. Reports show income, expenses, attendance and memberships at any time.

User Roles

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.

RoleWhat they can do
Super AdminRuns 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).
OwnerFull access to their own gym: members, trainers, classes, finance, store, reports, website, staff and settings.
ManagerDay-to-day work as allowed by the permissions the owner gives the role.
TrainerSees 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.

Members & Memberships

FeatureWhat 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.
TrainersTrainer profiles with their own login, classes and assigned members.
Membership plansCreate monthly, annual or day-pass plans with price, duration and description. Plans are shown on the gym website and in the app.
Automatic renewalA 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 passEvery member has a personal QR entry pass on the website and in the app. The member card page shows the plan and status.
Payment methodMembers add, change or remove their saved card.
ImpersonateThe Super Admin can log in as an owner to help them, then return.

Where: Members → Trainees / Trainers / Membership / Payment method / My Pass.

Classes, Booking & Attendance

FeatureWhat it does
ClassesCreate classes with a trainer, room capacity and weekly timetable.
Class bookingMembers book a seat from the website or the app (Book a Class). Staff see every booking under Class Bookings.
WaitlistWhen 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-inStaff scan the member's QR pass at the front desk. The scan checks the plan, shows Allowed or Denied and records the visit.
AttendanceMark attendance one by one, in bulk for a class, or see today's attendance. Members see their own visits history.
LockersManage lockers and assign them to members.
EventsAn 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.

Invoices, Payments & Taxes

FeatureWhat it does
InvoicesCreate invoices with line items and tax. The status (unpaid, partially paid, paid) updates itself as payments come in. Invoices can be printed.
Tax managementCreate tax rates once and use them on invoices and products.
Online paymentMembers pay with Stripe, PayPal, Flutterwave, Paystack, Razorpay or bank transfer, using the gateways set up in Settings.
Saved cardMembers pay an invoice with their saved card from the website or the mobile app.
Income and expensesRecord expenses by finance type and see income from paid invoices.
PayrollPay trainers and staff monthly with payslips (see Staff & Payroll below).

Where: Sales & Finance → Invoice; Finance → Invoice / Expense / Payroll; System Configuration → Finance Type / Tax.

Workouts, Nutrition & Health

FeatureWhat it does
Workout plansBuild 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 workoutTrainers see which members completed today's workout.
Nutrition scheduleMeal plans with meals and calories for each member.
Health updateMembers record weight and measurements; the BMI and a progress chart are shown.
Activities and categoriesYour own lists of workout activities and categories, managed under System Configuration.

Where: Training → Workouts / Nutrition Schedule; Members → Health Update; System Configuration → Category / Workout Activity.

Store, Point of Sale & Inventory

FeatureWhat it does
ProductsAdd products with category, price, discount and photos.
InventoryA stock ledger records every movement (stock in, sales, adjustments). Low-stock e-mails are sent when an item is running out.
Counter saleSell at the front desk with tax, and optionally add the sale to a member's invoice.
Member ordersMembers order from the website or the app and pay on an invoice. Staff see every order under Member Orders.
Product booking reportSee orders and sales by product.

Where: Sales & Finance → Store → Products / Inventory / Counter Sale / Member Orders; Reports → Product Booking.

CRM & Leads

FeatureWhat it does
Lead pipelineEnquiries from the website, phone or walk-ins in one pipeline (New, Contacted, Trial, Joined) with notes and follow-up dates.
Convert to memberConvert a lead into a member in one click; the details carry over.
Contact diaryAn address book of useful contacts for your team.

Where: Members → Leads; Engage → Contact Diary.

Gym Website

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.

FeatureWhat it does
Home page sectionsTurn 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.
PagesBuilt-in pages: About, Classes, Trainers, Pricing, Blog, Gallery, FAQ and Contact, plus your own custom pages.
Header and footerFor 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.
WordingChange the text of every heading and button. Default photos are shown until you add your own.
Blog and galleryPublish articles and a photo gallery.
Join formVisitors sign up online. They confirm their e-mail, log in and pay the membership invoice.
AddressesEvery 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 coloursPage title and description, and the gym's own theme colours.
Get the appA 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.

Community Features

FeatureWhat it does
Notice boardPost notices that members, trainers and staff see on their dashboard and in the app. Members with the app get a push notification.
EventsAn event calendar with registration, capacity and cancellation.
BlogArticles shown on the website and in the app (News).
LockersAssign lockers to members.
Support and notesKeep notes and support items for your team.

Where: Engage → Notice Board / Contact Diary; Training → Event / Locker.

Dashboards & Reports

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.

ReportShows
TraineeMembers with their plan, dates and status.
MembershipMemberships by plan and status.
AttendanceVisits by date and member.
IncomeMoney received by period.
ExpenseMoney spent by period and finance type.
Product BookingStore orders and sales by product.

Reports can be downloaded as CSV, which opens in Excel.

Notifications, AI & Automation

FeatureWhat it does
Email notificationsReady-made e-mail templates (renewals, payments and more). Owners can edit the wording and switch each one on or off.
SMS and WhatsAppSend messages through Twilio when it is set up in Settings.
Push notificationsPhone notifications in the mobile app (Firebase): a class seat opened, an automatic renewal failed, a new notice. Tapping one opens the right screen.
AI assistantOwners ask questions in plain language and get answers from their own gym data. A plan can include or exclude the assistant.
AI coachMembers chat with an AI coach that answers from their own plan, visits and progress.
AI providersWorks with OpenAI, Anthropic Claude, Google Gemini, Mistral, DeepSeek and Groq. Every owner enters their own provider and key.
n8n webhooksSend events to n8n to build your own automations.
Activity logLogged 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.

Staff & Payroll

FeatureWhat it does
UsersAdd staff accounts and give each a role.
Roles and permissionsCreate roles and choose exactly what each role can see and do.
PayrollRun payroll for trainers and staff each month and keep a payslip for each person.
SecurityAudit log, 2-factor authentication and Google reCAPTCHA protect the system.

Where: Staff Management → Users / Roles / Audit Log; Sales & Finance → Finance → Payroll.

Mobile App (Add-on)

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.

WhoWhat they can do
MembersEntry 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.
BrandingEach owner sets the app name, logo, colours, welcome message and which sections show under Engage → Website → App.
Push notificationsOptional phone notifications through your own Firebase project.
Same accountsMembers log in with the same e-mail and password they use on the website.
Forced updateThe Super Admin sets the oldest app version allowed to connect under Mobile app.
Build and publish
ProjectBuild and publish
mobile_app/android_appAndroid 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_appiPhone 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.
  1. Open the project for your store and run flutter pub get.
  2. Build with your own address, for example 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).
  3. Sign the release with your own key and upload it to Google Play or the App Store.
  4. As Super Admin open Mobile app, paste the two store links and the latest and oldest allowed versions. Gym websites then show a Get the app page with the gym code.
Push notifications (optional)
  1. Create a Firebase project and add the Android app (com.fithub.fithub_member) and the iPhone app.
  2. Android: put google-services.json in mobile_app/android_app/android/app/. iPhone: add GoogleService-Info.plist to the Runner target of mobile_app/iphone_app in Xcode, turn on the Push Notifications and Background Modes → Remote notifications capabilities and upload your APNs key in Firebase.
  3. As Super Admin open Mobile app → Push notifications and paste the Firebase service-account key (JSON). It is stored privately and never shown again.
  4. Rebuild the app. Without the Firebase files the app still works, just without notifications.

SaaS Administration (Super Admin)

FeatureWhat it does
CustomersAll gym owners on the platform. Create an owner, assign a package, and log in as them to help (impersonate).
PackagesCreate plans with a price, billing interval and limits on users, trainers and trainees. Turn features on per plan, such as logged history and coupons.
CouponsDiscount codes with usage history.
TransactionsAll subscription payments. Approve bank transfer payments here.
CMSEdit the platform's landing page, custom pages, FAQ, footer and login page.
SwitchesTurn the landing page, the register page and pricing on or off. Owner e-mail verification can be turned on or off.
Website domainsSet the base domain used for gym sub-domains and see which owners use their own domain.
Mobile appStore 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 & Integrations

Settings tabUsed for
User Profile / PasswordThe user's own name, photo and password.
GeneralDate and time format, timezone and the landing page, register page, pricing and e-mail verification switches.
CompanyGym name, logo, address, phone, e-mail and currency.
EmailSMTP details for sending e-mails, with a test e-mail button.
PaymentPayment gateway keys: Stripe, PayPal, Flutterwave, Paystack, Razorpay and bank transfer. Super Admin keys take subscription payments; owner keys take member payments.
Site SEOTitle, description and share image for the landing website.
Google reCAPTCHAProtects login and registration forms from bots.
2 Factors AuthenticationExtra login security with an authenticator app.
TwilioSMS and WhatsApp messages.
AIChoose the AI provider, model and key.
Cronjob SettingsThe 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.

Languages

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.

  • Each user chooses their language from the language menu at the top of the page.
  • Text the owner writes for the website can be entered once per language.
Changing or adding translations

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).

Software Upgrade Process

Before proceeding with the update, ensure that you have completed a full backup of your software.
Important Notes:
1. Language Files Modifications:
  • If you have modified any language files, your changes will be overwritten. The new version will come with updated language files, and your previous customizations in resources/lang will be lost.
  • It's highly recommended that you back up your edited language files for future reference.
2. File Modifications:
  • Any changes made to the software's core files will be lost after the update. Ensure that you have backed up any customizations or modifications.
3. Disclaimer:
  • We are not responsible for any data loss that occurs during a manual update. Please ensure that you follow the backup instructions carefully.
Backup Instructions:
1. Files to Back Up:
  • .env file
  • .htaccess file
  • storage directory
2. Update Process:
  • Upload and replace all the files & folders on your server with the contents of the main_file folder from the new version.
  • Restore your .env, .htaccess, storage files and folder back onto your server.
  • Log in to the software and follow the steps in the update wizard to complete the process.

Support

If you have any queries, please create a support ticket, and our support team will respond as soon as possible.

Create Ticket Now