Skip to content

ngotuananh101/ponta-cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ponta Cloud πŸŒ₯️

Laravel Version PHP Version License GitHub Stars GitHub Issues

πŸ“– About Ponta Cloud

Ponta Cloud is a centralized cloud storage management platform that allows you to connect and manage multiple cloud storage services from a single, unified interface. Built on Laravel 12 with modern architecture and high-performance optimizations.

Key Benefits:

  • 🎯 Unified Management - Control all your cloud storage accounts from one dashboard
  • πŸš€ Performance Optimized - Smart caching reduces API calls by up to 80%
  • πŸ” Enterprise Security - Encrypted credentials and comprehensive audit trails
  • πŸ“± Modern Interface - Responsive design works on any device

✨ Features

πŸ”— Multi-Cloud Support

Connect and manage multiple cloud storage providers seamlessly:

  • Google Drive - Full OAuth2 integration with Google's APIs
  • OneDrive - Microsoft Graph API integration for Office 365
  • Dropbox - Complete sync and sharing capabilities
  • FTP/SFTP - Legacy server connectivity support
  • Amazon S3 and Other S3-Compatible Services - Flexible storage options
  • WebDAV - Connect to any WebDAV-compatible service
  • Telegram - Manage files in Saved Messages

πŸš€ Core Functionality

  • File Management - Upload, download, delete, and organize files and folders
  • Real-time Preview - View supported file types directly in your browser
  • Background Processing - Asynchronous file uploads with intelligent queue system
  • Smart Caching - Intelligent caching layer reduces API calls and improves performance
  • Storage Analytics - Track usage, monitor quotas, and analyze storage patterns
  • Multi-tenant - Each user maintains isolated cloud connections

⚑ Performance & Security

  • Laravel Octane - Enhanced performance with Just-In-Time compilation
  • Redis Caching - Fast in-memory caching for sessions and data
  • Intelligent Caching - CloudCacheService with configurable TTL and automatic invalidation
  • Encrypted Storage - All credentials encrypted at rest using Laravel's encryption
  • Background Processing - Queue-based uploads with exponential backoff retry logic
  • Comprehensive Logging - Detailed audit trails and error tracking
  • Rate Limiting - Built-in protection against API abuse
  • CSRF Protection - Secure OAuth flows with state validation

πŸ› οΈ Technology Stack

Backend:

  • Framework: Laravel 12.x with modern PHP 8.4+ features
  • Database: MySQL 8.0+ / PostgreSQL 13+ with optimized indexing
  • Queue System: Redis-backed queues with supervisor management
  • Caching: Redis with intelligent cache layers and TTL management

Frontend:

  • Templates: Blade templating with modern responsive design
  • Assets: Vite-powered build system for CSS/JS optimization
  • UI Framework: Custom components with accessibility support

Infrastructure:

  • File Storage: Flysystem abstraction with multiple adapter support
  • Background Jobs: Laravel Queue with exponential backoff and retry logic
  • Monitoring: Comprehensive logging with rotation and alerting
  • Security: Encrypted credentials, CSRF protection, rate limiting

πŸ“¦ Quick Start

System Requirements

  • PHP: 8.3+ with extensions: openssl, pdo, mbstring, tokenizer, xml, ctype, json, bcmath, curl, fileinfo, gd
  • Composer: 2.0+ for dependency management
  • Node.js: 18+ and npm for asset compilation
  • Database: MySQL 8.0+ or PostgreSQL 13+
  • Redis: 6.0+ (recommended for production caching and queues)

Installation Steps

  1. Clone the Repository
git clone https://github.com/ngotuananh101/ponta-cloud.git
cd ponta-cloud
  1. Install Dependencies
# Install PHP dependencies
composer install

# Install Node.js dependencies
npm install
  1. Environment Configuration
# Copy environment template
cp .env.example .env

# Generate application key
php artisan key:generate

# Configure your .env file with database and Redis settings
  1. Database Setup
# Run database migrations with seeders
php artisan migrate:fresh --seed
  1. Build Frontend Assets
# For production
npm run build

# For development with hot reload
npm run dev
  1. Start Development Server
# Start Laravel development server
php artisan serve

# In a separate terminal, start queue worker
php artisan queue:work

πŸŽ‰ That's it! Visit http://localhost:8000 to access your Ponta Cloud installation.

βš™οΈ Configuration

Cloud Services Setup

Google Drive

GOOGLE_DRIVE_CLIENT_ID=your_client_id
GOOGLE_DRIVE_CLIENT_SECRET=your_client_secret

OneDrive

ONEDRIVE_CLIENT_ID=your_client_id
ONEDRIVE_CLIENT_SECRET=your_client_secret

Dropbox

DROPBOX_CLIENT_ID=your_client_id
DROPBOX_CLIENT_SECRET=your_client_secret

Queue Configuration

QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Cache Configuration

CACHE_DRIVER=redis
SESSION_DRIVER=redis

πŸ—οΈ Architecture

Services Architecture

CloudServices (Abstract)
β”œβ”€β”€ GoogleDriveService
β”œβ”€β”€ OneDriveService
β”œβ”€β”€ DropboxService
└── FTPService
└── SFTPService
└── S3AndCompatibleService
└── WebDAVService
└── TelegramService

Supporting Services:
β”œβ”€β”€ CloudCacheService (Caching layer)
β”œβ”€β”€ CloudValidationService (Validation logic)
└── CloudServices (Base functionality)

Key Components

  • Models: Cloud and User entities with optimized relationships
  • Jobs: UploadFileToRemoteJob with intelligent retry mechanisms
  • Middleware: ValidateCloudAccess for secure resource authorization
  • Services: Modular cloud provider integrations and caching layers
  • Notifications: Real-time upload status and failure alerts
  • Enums: Type-safe storage provider definitions

πŸ”§ Usage Guide

Adding Cloud Storage Connections

  1. Login to your Ponta Cloud account
  2. Navigate to "Add Cloud" from the dashboard
  3. Select Provider (Google Drive, OneDrive, Dropbox, or FTP)
  4. Complete Authentication - follow OAuth flow or enter FTP credentials
  5. Start Managing your files across all connected storage providers

File Operations

  • πŸ“€ Upload: Drag & drop files or use the upload button - supports large files with background processing
  • πŸ“₯ Download: Click any file to download directly or preview supported formats
  • πŸ‘€ Preview: View documents, images, and videos directly in your browser
  • πŸ“ Organize: Create folders, move files, and maintain organized directory structures
  • πŸ—‚οΈ Navigate: Browse through folder hierarchies with breadcrumb navigation
  • πŸ” Search: Find files across all connected cloud storage providers

πŸ§ͺ Testing

# Run all tests
php artisan test

# Run specific test suite
php artisan test --testsuite=Feature
php artisan test --testsuite=Unit

# Run with coverage
php artisan test --coverage

πŸš€ Deployment

Production Checklist

  • Set APP_ENV=production
  • Configure proper database
  • Set up Redis for cache/sessions/queue
  • Configure queue workers
  • Set up file storage (S3, etc.)
  • Configure proper logging
  • Set up SSL certificates
  • Configure rate limiting

Queue Workers

# Start queue workers
php artisan queue:work --sleep=3 --tries=3 --max-time=3600

# Or use Supervisor for production

πŸ“Š Monitoring & Analytics

Application Monitoring

  • Health Checks: /health endpoint provides real-time system status
  • Queue Monitoring: Track background job processing and failure rates
  • Performance Metrics: Monitor API response times and cache hit ratios
  • Storage Analytics: Detailed usage statistics across all connected providers

Logging & Debugging

  • Application Logs: Comprehensive logging in storage/logs/laravel.log
  • Queue Logs: Monitor job processing via php artisan queue:monitor
  • Cache Metrics: Track cache performance and invalidation patterns
  • Error Tracking: Detailed error reporting with stack traces and context

🀝 Contributing

Development Workflow

  1. Fork the repository to your GitHub account
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Write comprehensive tests for your changes
  4. Follow PSR-12 coding standards and Laravel best practices
  5. Commit with meaningful messages (git commit -m 'Add amazing feature')
  6. Push to your branch (git push origin feature/amazing-feature)
  7. Open a Pull Request with detailed description

Code Quality Standards

  • βœ… PSR-12 Compliance - Follow PHP coding standards
  • βœ… Test Coverage - Write unit and feature tests for new functionality
  • βœ… Documentation - Document all public methods and complex logic
  • βœ… Type Safety - Use PHP type hints and Laravel's validation
  • βœ… Security - Follow OWASP guidelines and Laravel security best practices

πŸ› Issue Reporting

Found a bug? Help us improve Ponta Cloud by reporting issues with detailed information:

Required Information:

  • πŸ“‹ Steps to reproduce the issue
  • βœ… Expected behavior vs actual behavior
  • πŸ–₯️ Environment details (OS, PHP version, browser)
  • πŸ“Έ Screenshots or error logs (if applicable)
  • πŸ” Additional context that might help

Issue Templates:

πŸ“„ License

This project is open-sourced software licensed under the MIT License. Feel free to use, modify, and distribute according to the license terms.

πŸ™ Acknowledgments

Ponta Cloud is built with incredible open-source technologies and resources:

  • πŸš€ Laravel Framework - The elegant PHP framework that powers our backend
  • 🎨 Metronic - Premium admin theme for beautiful UI components
  • πŸ”§ FontAwesome - Comprehensive icon library
  • ☁️ Cloud Providers - Google, Microsoft, Dropbox for their excellent APIs
  • πŸ‘₯ Community - Contributors and users who help improve Ponta Cloud

🌟 Support the Project

If Ponta Cloud has been helpful to you, consider supporting the project:

  • ⭐ Star the repository on GitHub
  • 🍴 Fork and contribute improvements
  • πŸ› Report bugs and suggest features
  • πŸ“’ Share with others who might find it useful
  • β˜• Buy me a coffee to fuel development

Made with ❀️ by @ngotuananh101
Empowering users to manage their cloud storage efficiently

⭐ Star on GitHub β€’ πŸ› Report Bug β€’ πŸ’¬ Discussions

Releases

No releases published

Packages

No packages published