Skip to content

lubusIN/laravel-gymie

Repository files navigation

Gymie

Laravel based web application for gym & club management. Currently being used by many fitness centers. For more information, visit - https://www.gymie.in

Gymie

Requirements

  • PHP >= 8.2
  • Laravel Framework ^12.0
  • Filament Admin Panel 5.x
  • Livewire ^3.0
  • nnjeim/world ^1.1
  • barryvdh/laravel-dompdf ^3.1
  • Laravel Herd (optional for local development)

Installation

To set up Gymie, follow these steps:

1. Clone the Repository

Clone the repository to your local system:

git clone git@github.com:lubusIN/laravel-gymie.git

2. Go to folder

cd laravel-gymie

3. Install dependencies

composer install

4. Prepare the environment

Run the following script to prepare your environment:

composer run prepare-env

This will:

  • Copy .env.example to .env (if missing)
  • Clear config cache
  • Generate application key
  • Create a symbolic link to the storage folder

5. Configure the .env file

  • Set your database credentials.
  • Update other relevant configuration values.
  • Set your application URL:
    APP_URL=https://laravel-gymie.test

6. Database Setup

You can set up the database in one of two ways, depending on your requirements:

Option 1: Blank Setup (Recommended for Production)

Run the following command:

composer run setup

Note

This command will prompt you to create an admin user via the terminal.

This will:

  • Set up the environment (.env, app key, storage link)
  • Run a fresh migration to create database tables
  • Seed the world data (countries, states, cities)
  • Create a default Filament admin user

Option 2: Demo Setup

If you want to explore the system with all demo data preloaded, use:

composer run setup-demo

This command will:

  • Reset the database
  • Seed all available demo data
  • Prepare the environment automatically

Caution

This process will erase all existing data. Use it only in a local or demo environment.

Login credentials:

Email: test@example.com
Password: test

Troubleshooting

Memory Errors

Ensure PHP has enough memory allocated. Edit your php.ini:

memory_limit = 512M

Seeder Performance

Seeders (like WorldSeeder) can add significant data and slow down performance. For production, avoid full seeding and run only necessary seeders:

php artisan db:seed --class=WorldSeeder

Development

1. Start the development server:

php artisan serve

Or with Laravel Herd:

herd

2. Start the queue worker

To process background jobs:

php artisan queue:work

3. Start the Laravel scheduler

php artisan schedule:work

Note

The scheduler must be running continuously to trigger time-based tasks (e.g., status updates).

If those tasks dispatch queued jobs (like import/export or notifications), then the queue worker must also be running to process them.

API (JSON, v1)

Gymie ships with a versioned JSON API under routes/api.php for integrations.

Authentication (Sanctum Bearer Tokens)

  • Login: POST /api/v1/auth/login
  • Current user: GET /api/v1/me
  • Logout: POST /api/v1/auth/logout

Example:

curl -sX POST "$APP_URL/api/v1/auth/login" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"password"}'

Use the returned token:

curl -s "$APP_URL/api/v1/me" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>"

Notes:

  • The API is bearer-token only. Being logged into Filament in the browser does not authenticate API requests.
  • /api/v1/me always includes roles and permissions. Other user endpoints include permissions only when requested:
    • GET /api/v1/users?include=permissions or GET /api/v1/users?include_permissions=1

Index Query Parameters (Rich Filtering)

All index endpoints support allowlisted query params:

  • Search: ?q=...
  • Pagination: ?page=...&per_page=...
  • Sort (multi-sort): ?sort=-created_at,name
  • Soft deletes (where supported): ?trashed=with|only
  • Includes (allowlisted): ?include=service,subscription.member
  • Filters (allowlisted): ?filter[field]=value
    • Range syntax for date/datetime: ?filter[date]=2026-03-01..2026-03-31

Allowlists (searchable/sortable/includes/filters) are defined per resource in:

  • app/Services/Api/Schemas/*Schema.php via ::queryRules()

Meet Your Artisans

LUBUS is a web design agency based in Mumbai.

License

Gymie is an open-sourced saas licensed under the MIT license

About

πŸ‘¨β€πŸ’» Gym & Club Management System https://gymie.in

Topics

Resources

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages