Fixora · Quickstart
Fixora Quickstart, as shipped in the download
The QUICKSTART.txt in the download — the same steps your delivery email carries.
FIXORA — QUICKSTART
===================
CMMS / Preventive-Maintenance & Work-Order Manager — self-hosted PHP + MySQL/SQLite.
REQUIREMENTS
------------
- PHP 8.0+ with extensions: pdo, pdo_sqlite (or pdo_mysql), fileinfo
- MySQL 5.7+ OR SQLite 3 (SQLite requires no extra setup)
- A web server (Apache with mod_rewrite, or Nginx with try_files)
SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the CONTENTS of the `app/` folder to your web root (e.g. public_html/)
or a subdirectory (e.g. public_html/fixora/).
2. Make sure this directory is writable by PHP:
data/ (database + asset photos live here)
Via cPanel File Manager: right-click -> Permissions -> 755 or 775.
3. Visit https://yourdomain.com/install/ in your browser.
4. Fill in the installer:
- Database: choose MySQL (host/name/user/pass) or SQLite (no setup)
- Company name + currency symbol
- Labor rate per hour (prices work-order labor minutes in reports)
- Due-soon window (PM due within this many days is flagged — default 7)
- Timezone ("today" for PM due math is computed in this zone)
- Admin name, email, and password
5. The installer writes config.php and sends you to the login page.
6. Sign in, then add locations + assets — or click "Load demo data" on the
dashboard to explore a realistic facilities operation first.
VPS / SELF-HOSTED (APACHE)
--------------------------
<VirtualHost *:80>
DocumentRoot /var/www/fixora/app
<Directory /var/www/fixora/app>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Run the web installer as above, or use the CLI seeder:
php bin/demo.php # loads demo data (login: admin@fixora.app / admin123)
NGINX
-----
root /var/www/fixora/app;
location / { try_files $uri /index.php?$args; }
location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
location ~ /(config\.php|data/|src/|bin/|tests/|controllers/) { deny all; }
DOCKER (QUICK TEST)
-------------------
docker run --rm -p 8080:8080 -v "$(pwd)/app:/var/www/html" -w /var/www/html \
php:8.3-cli php -S 0.0.0.0:8080 router.php
Then visit http://localhost:8080/install/
RUN THE TESTS
-------------
php app/tests/run.php
# or:
docker run --rm -v "$PWD/app:/app" -w /app php:8.3-cli php tests/run.php
DAILY USE
---------
* Dashboard — assets operational/down, open work orders, overdue PM,
this month's downtime and maintenance cost.
* Assets — every machine with its history, open WOs, PM schedules,
downtime log, photo, and lifetime cost.
* Work orders — open -> in-progress -> done/cancelled, enforced. Done
requires a resolution note; cancelled cannot be reopened.
* PM schedules — next due = last done + interval, computed live (no cron).
"Log completion" creates a completed preventive WO and
advances the schedule in one click.
* Cost report — month-over-month and per-asset downtime + cost. Labor is
minutes x your Settings hourly rate; money is integer cents.
* Print tags — Assets -> Print tags: a print-CSS sheet of QR asset tags.
Scanning opens the asset page after sign-in.
PM DUE MATH (deterministic, no cron):
next due = last done + interval days
overdue = next due before today (business timezone)
due soon = due within the due-soon window (Settings, default 7 days)
POST-INSTALL SECURITY CHECKLIST
--------------------------------
[ ] config.php is protected (the .htaccess does this automatically)
[ ] data/ is not web-accessible (.htaccess blocks it automatically)
[ ] Use HTTPS in production
[ ] Keep PHP updated
Full docs in README.md.
← Back to Fixora · Manual · API · Test run