System requirements
What you need to run Food Magic — server software, PHP extensions, database, and the services it depends on.
Food Magic is two applications that run together: a Laravel API on the server and a React dashboard in the browser. Both need to be installed.
The version numbers below come from the project's own setup files. If a developer's machine has a newer version installed than the minimum listed here, we show both.
Server requirements
| Component | Required | Notes |
|---|---|---|
| PHP | 8.2 or newer | Verified on 8.3 |
| Laravel | 12.x | Installed by Composer |
| Database | MySQL 8 or MariaDB 10.4+ | Verified on MariaDB 10.4.32 |
| Web server | Apache or Nginx | Any server that can host Laravel |
| Composer | 2.x | To install PHP dependencies |
| Node.js | 20 or newer | Only to build the dashboard |
You only need Node.js once, to build the dashboard. After that, the finished dashboard is just a set of files — you don't need Node.js running on your live server.
PHP extensions
The standard Laravel extension set is required:
ctype · curl · fileinfo · gd · json · mbstring · openssl ·
pdo_mysql · tokenizer · xml · zip
You don't need the bcmath extension. Food Magic includes its own built-in replacement for it, so the system still works correctly on hosts that don't have bcmath installed. Money is always stored as an exact number, never as an approximate one, so calculations stay accurate either way.
What the backend depends on
| Package | Purpose |
|---|---|
laravel/sanctum |
Signs staff in and hands out secure login tokens |
spatie/laravel-permission |
Powers roles and permissions |
nwidart/laravel-modules |
Keeps the system split into its 21 modules |
spatie/laravel-query-builder |
Lets list screens be filtered, sorted and paged |
spatie/laravel-backup |
Runs scheduled backups |
google/apiclient + masbug/flysystem-google-drive-ext |
Sends backups to Google Drive |
darkaonline/l5-swagger |
Generates the API documentation |
What the dashboard is built with
| Package | Version |
|---|---|
| React | 19.2 |
| React Router | 6.22 |
| TypeScript | 5.2 |
| Vite | 5.1 |
| Tailwind CSS | 4.2 |
| Zustand | 4.5 (sign-in state) |
| Axios | 1.6 (API calls) |
Services the system uses
Three of these are set up right in the dashboard — no config file editing needed. See the Settings reference.
Stores everything the system needs — including sign-in sessions, temporary cached data, and the list of background tasks waiting to run. So you don't need any extra software like Redis or Memcached just to get going.
Background tasks are tracked in the database. A background process (called a worker) has to keep running for scheduled and delayed tasks to actually happen.
Configured in the dashboard. SMTP, SendGrid, Zoho Mail, Amazon SES or Mailgun.
Configured in the dashboard. MSG91, Twilio, Gupshup, AWS SNS or Plivo.
Configured in the dashboard. Stripe, Razorpay, PayU or Cashfree.
Optional. Needed only if the public website should turn customer addresses into map locations.
Backups need a small extra tool called mysqldump. Make sure it's
installed on your server. If MySQL isn't in your server's default program
path, set DB_DUMP_BINARY_PATH to the folder where mysqldump lives, so
backups know where to find it.
Database size
Food Magic's database is large — it's built from 244 separate setup steps across 21 modules, plus another 11 basic steps needed for things like sign-in sessions, the background task queue, and login tokens.
Plan for this on your first install. Setting up a brand-new database takes noticeably longer than it would for a small, simple app, and restoring a backup takes longer too, for the same reason.
What is not required
- Redis / Memcached — the database handles caching, sessions and the task queue on its own
- Elasticsearch — searching happens right in the database
- A separate Node.js server — once built, the dashboard is just a set of files
- The
bcmathextension — covered by a built-in replacement
Where to configure the email, SMS and payment providers listed above.