Zepeed is a powerful speedtest aggregator and monitor built with Laravel 12, Inertia.js, and Vue 3. It allows you to schedule and run speedtests using multiple providers like Speedtest Ookla, LibreSpeed, and Fast.com, providing a unified dashboard for monitoring your network performance.
- Multiple Providers: Support for Speedtest Ookla, LibreSpeed, and Fast.com.
- Scheduled Runs: Automated speedtests with customizable schedules.
- Maintenance Windows: Define periods where tests should be paused or restricted.
- Manual Triggers: Run speedtests on demand from the dashboard.
- Real-time Notifications: Get notified of run successes or failures via Inertia notifications.
- Modern Stack: Built with Laravel 12, Vue 3, shadcn/vue, and Tailwind CSS v4.
- Backend: Laravel 12, Fortify, Inertia.js (Laravel adapter)
- Frontend: Vue 3, shadcn/vue (reka-ui), Tailwind CSS v4
- Tooling: Vite, TypeScript, ESLint, Prettier, Pint, PHPStan, Rector
- Extras: Ziggy, Mailpit, Soketi/Reverb-ready scripts
- PHP 8.4+
- Composer
- Bun (recommended) or Node 22+
- A database (SQLite/MySQL/Postgres)
- Speedtest CLI tools (depending on the provider used)
If you prefer to run things locally:
composer run setupThis installs PHP/JS deps, creates .env, generates an app key, runs migrations, and builds assets.
composer run devRuns Vite + queue worker + scheduler + Reverb + Mailpit in one terminal.
If you are using Laravel Herd:
composer run herd:devWe welcome contributions! Please follow these steps:
- Fork and Clone: Fork the repository and clone it to your local machine.
- Setup Environment: Follow the Quick start instructions.
- Create a Branch: Create a feature branch for your changes (
git checkout -b feature/amazing-feature). - Code Standards: Ensure your code follows the project's standards by running:
composer run format # Fixes Pint, Prettier, and ESLint issues composer run analyse # Runs PHPStan static analysis composer run rector # Applies Rector refactorings
- Test: Make sure all tests pass before submitting:
composer run test - Submit PR: Push your branch and create a Pull Request with a clear description of your changes.
-
Environment File: Copy
.env.prod.exampleto.envand configure your production database, mail, and other settings.cp .env.prod.example .env
-
Install Dependencies:
composer install --no-dev --optimize-autoloader bun install
-
Build Assets:
bun run build
-
Optimize: Laravel provides several commands to cache configurations and routes for better performance:
php artisan optimize
(Note: If
AUTORUN_LARAVEL_OPTIMIZEis set totruein your.env, some deployments might handle this automatically). -
Migrations: Run your migrations in production:
php artisan migrate --force
- PHP 8.4+
- Extension requirements (BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML)
- A supported database (MariaDB, MySQL, PostgreSQL, or SQLite)
composer run format # Pint + Prettier + ESLint
composer run analyse # PHPStan
composer run test # PHPUnit
composer run rector # Rector fixesresources/js/Pagesfor Inertia pagesresources/js/Componentsfor shared componentsresources/js/Components/uifor shadcn/vue components
Server-side routes live in routes/web.php and routes/speedtest.php, rendering Inertia pages that map to Vue files under resources/js/Pages.
shadcn/vue components are generated into resources/js/Components/ui and styled with Tailwind. Configure components via components.json.
Copy .env.dev.example to .env for local development or .env.prod.example for production and adjust your database and mail settings if needed. The setup script handles this automatically for development.
MIT