Skip to main content

Overview

laravel-console-starter is a starter kit that accelerates the development of Laravel applications centered around custom artisan commands. Rather than building standalone CLI tools, you build powerful console applications that leverage the full Laravel framework ecosystem — dependency injection, notifications, scheduling, and testing. The core workflow is to run commands on a schedule via GitHub Actions and deliver results through notifications like email or Slack.

Requirements

  • PHP ^8.3
  • Laravel Framework ^13.0
  • Laravel Installer ^5.24

Installation

laravel new --using=revolution/laravel-console-starter --no-interaction my-app
Directory structure after installation:
my-app/
├── app/Console/Commands/   # Place your custom artisan commands here
├── .github/workflows/
│   └── cron.yml            # Pre-configured GitHub Actions schedule example
├── config/                 # Application configuration
└── routes/console.php      # Command registration

Key Features

Console-focused

Removes web-specific overhead so you can focus on artisan command development.

GitHub Actions scheduling

No server cron jobs needed. A .github/workflows/cron.yml example is included from the start.

Laravel ecosystem

Use notifications, HTTP client, testing, the DI container, and all other Laravel features out of the box.

Quick Start

Create a command

php artisan make:command Hello --command=hello
This generates app/Console/Commands/Hello.php. Implement your logic in the handle() method, then run it:
php artisan hello

Schedule execution with GitHub Actions

Edit .github/workflows/cron.yml to set your command and schedule:
on:
  schedule:
    - cron: '0 0 * * *'  # Daily at midnight UTC

jobs:
  cron:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: shivammathur/setup-php@v2
        with:
          php-version: 8.5
      - run: composer install --no-dev -q
      - run: cp .env.example .env
      - run: php artisan key:generate
      - run: php artisan your:command

Send notifications

Create a notification class and send it using the Notification facade:
php artisan make:notification TaskCompleted
Notification::route('mail', '[email protected]')
    ->notify(new TaskCompleted('Processing completed successfully'));
If you need to configure notification channels (mail, Slack, etc.), publish the config files with php artisan config:publish mail and php artisan config:publish services.

Application Ideas

Here are ideas for applications you can build with this starter kit.
  • Website uptime monitoring with Slack alerts
  • Server resource usage reports via email
  • SSL certificate expiration checks and notifications
  • API response time monitoring and alerts
  • Competitor price change tracking with Discord notifications
  • Send Google AdSense revenue via email
  • Notify AWS costs to Discord
  • Daily cryptocurrency portfolio updates to Discord
  • Stock price alerts to Slack channels
  • Invoice payment deadline reminders
  • Monthly expense report generation and delivery
  • Old log file cleanup and storage space reports
  • Data synchronization between different APIs with result reports
  • CSV data import and processing result notifications
  • Periodic data exports and uploads to cloud storage
  • Website broken link checks and reports
  • SEO keyword ranking monitoring and change notifications
  • Blog post performance metrics weekly reports
  • RSS feed content aggregation and notifications
  • GitHub repository dependency security alerts
  • Codebase static analysis reports
  • Post-deployment application health checks
  • API documentation change detection and notifications
  • AI agent tools using laravel-copilot-sdk
  • Local MCP server using the laravel/mcp package
  • Domain expiration monitoring and alerts
  • Google Trends keyword monitoring and notifications
  • Personal spending category insights and reports

Documentation

Tutorial

From installation to command creation, GitHub Actions scheduling, sending notifications, and practical app examples.
Last modified on May 5, 2026