waheed4399/laravel-action-service-trait

A simple Laravel package to create actions, traits and services using artisan commands

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/waheed4399/laravel-action-service-trait

v1.0.0 2025-05-29 07:22 UTC

This package is auto-updated.

Last update: 2025-10-01 00:17:09 UTC


README

Great! Here's the updated and detailed README.md for your Laravel Backup Service package, including the section on how to send the Google Drive backup link via Telegram:

Laravel Backup Service

Latest Version on Packagist License: MIT

A Laravel package that simplifies application backups using Google Drive storage, provides Artisan commands to manage them, and sends the latest backup link directly to your Telegram group.

๐Ÿš€ Features

  • Upload Laravel backups to Google Drive
  • Send backup download link to Telegram
  • Automatically store and manage backup links
  • Remove old backup files from Google Drive
  • Clean and readable service structure
  • Easy-to-use Artisan commands

๐Ÿ“ฆ Installation

Install the package using Composer:

composer require ahmedweb/laravel-backup-service

๐Ÿ› ๏ธ Configuration

1. Environment Variables

Add the following to your .env file:

FILESYSTEM_CLOUD=google

GOOGLE_DRIVE_CLIENT_ID=your-google-client-id
GOOGLE_DRIVE_CLIENT_SECRET=your-google-client-secret
GOOGLE_DRIVE_REFRESH_TOKEN=your-google-refresh-token
GOOGLE_DRIVE_FOLDER_ID=your-google-folder-id
# Optional
GOOGLE_DRIVE_FOLDER=

TELEGRAM_BOT_TOKEN=your-telegram-bot-token
TELEGRAM_CHAT_ID=your-group-chat-id

2. Filesystem Configuration

In config/filesystems.php, add the Google Drive disk:

'google_drive' => [
    'driver' => 'google',
    'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
    'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
    'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
    'folder' => env('GOOGLE_DRIVE_FOLDER'),
    'folderId' => env('GOOGLE_DRIVE_FOLDER_ID'),
],

๐Ÿ’ฌ Telegram Setup

To enable Telegram backup link notifications:

Step-by-step:

  1. Create a bot

    • Go to BotFather on Telegram
    • Use /newbot to create a bot
    • Save the bot token
  2. Create a Telegram group

    • Add the bot to the group
    • Mention the bot once in the group to activate it
  3. Get your group chat ID

    • Use a Telegram API tool like @userinfobot or your own bot's message logs
    • Or temporarily send a message from your bot and check the logs for chat.id
  4. Add to .env:

    TELEGRAM_BOT_TOKEN=123456:ABC-YourBotToken
    TELEGRAM_CHAT_ID=-1001234567890

Once configured, your bot will be able to post backup links directly to your group.

๐Ÿงช Artisan Commands

Command Description
php artisan backup:store-latest-link Stores the latest backup file link and sends it via Telegram
php artisan backup:delete-old Deletes all older backup files from Google Drive
php artisan backup:clean-drive Cleans backups on Google Drive based on retention

You can schedule these in app/Console/Kernel.php:

$schedule->command('backup:store-latest-link')->daily();
$schedule->command('backup:delete-old')->weekly();

๐Ÿ“ File Structure

laravel-backup-service/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ Commands/
โ”‚   โ”‚   โ”œโ”€โ”€ StoreLatestBackupLink.php
โ”‚   โ”‚   โ”œโ”€โ”€ DeleteOldBackupFiles.php
โ”‚   โ”‚   โ””โ”€โ”€ CleanGoogleDriveBackups.php
โ”‚   โ”œโ”€โ”€ Services/
โ”‚   โ”‚   โ””โ”€โ”€ GoogleDriveBackupService.php
โ”‚   โ”œโ”€โ”€ Providers/
โ”‚   โ”‚   โ””โ”€โ”€ BackupServiceProvider.php
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ filesystems.php (merged if needed)

๐Ÿ“œ Requirements

Package Version
PHP ^8.2
Laravel ^11.31
spatie/laravel-backup ^9.3
google/apiclient ^2.15
irazasyed/telegram-bot-sdk ^3.15
masbug/flysystem-google-drive-ext ^2.4
yaza/laravel-google-drive-storage ^4.1

๐Ÿค Contributing

Feel free to fork this package, suggest changes, or submit PRs. Any improvements are welcome!

๐Ÿ“œ License

Licensed under the MIT license.

๐Ÿง‘โ€๐Ÿ’ป Author

Ahmed Web ๐Ÿ“ง ahmedwry588@gmail.com ๐ŸŒ GitHub Profile

Would you like this README.md saved to your project directory or formatted for publishing on GitHub/Packagist?