Technology Stack.
The technologies, frameworks, and architecture decisions behind Reward Loyalty.
Reward Loyalty is a Laravel application. If you've worked with Laravel before, the codebase will feel familiar: Eloquent models, Blade templates, Form Requests, resource controllers, and database migrations.
Stack Overview
| Layer | Technology |
|---|---|
| Language | PHP 8.4+ |
| Framework | Laravel 13 |
| Frontend | Tailwind CSS v4, Alpine.js v3 |
| Build Tools | Vite, NPM |
| Database | MySQL 5.7+, MariaDB 10.3+, or SQLite 3.26+ |
| Authentication | Passwordless OTP (email-based) |
| API | REST + OpenAPI 3.0 (Swagger) |
| PWA | Service Worker, Web App Manifest |
Backend
The application runs on PHP 8.4 with Laravel 13. Business logic lives in Eloquent models, service classes, and controllers. Features are organized in Modules/ using a module pattern, each with its own routes, controllers, views, and models.
- Eloquent ORM handles all database interactions and scopes queries to the current tenant
- Form Request validation sanitizes input across all forms
- Middleware manages authentication, locale detection, and tenant isolation
- Artisan commands run scheduled tasks and maintenance
- Queues process background jobs like email campaigns and bulk operations
Frontend
Tailwind CSS v4 handles styling. Alpine.js v3 handles interactive behavior. Pages are server-rendered Blade templates, with Alpine.js managing client-side interactions like modals, dropdowns, and form validation.
Vite compiles assets and provides hot module replacement during development.
The member-facing interface is a Progressive Web App (PWA). It can be installed to a device's home screen, works offline after the first visit, and caches QR codes on its own.
Database
Reward Loyalty supports three database engines:
- MySQL 5.7+, recommended for production
- MariaDB 10.3+, a compatible alternative
- SQLite 3.26+, suitable for development and small deployments
All date columns use DATETIME (not TIMESTAMP) for timezone independence and compatibility beyond the Year 2038 boundary.
Multi-Tenant Architecture
The application is multi-tenant by design. Every database query scopes to the authenticated partner's context. The model layer enforces data isolation, so partners cannot access each other's members, transactions, or configurations.
A single installation can serve unlimited businesses. See The Shared Wallet Concept for how this architecture enables business networks.
API Layer
Two API surfaces are available:
- REST API, token-authenticated endpoints for POS integrations and external systems. Swagger documents them at
/api/documentation. - Agent API, a machine-to-machine protocol for AI agents and automation tools. OpenAPI 3.0 spec with tool discovery for OpenAI, Anthropic, and MCP formats. See Agent API Documentation.
Source Code
Every license includes the complete, unobfuscated source code. No encrypted files, no compiled binaries. You can read, modify, and extend any part of the application.
For guidance on extending the platform with AI coding tools, see Build Your Own Features.
For server requirements and PHP extensions, see Requirements.