File Structure
Understanding the complete directory structure and file organization of CoinTrail.
CoinTrail follows the standard Laravel 11 directory structure with additional folders for cryptocurrency-specific features.
Root Directory Structure
The main CoinTrail directory contains the following folders and files:
cointrail/
├── app/ # Application core code
├── bootstrap/ # Framework bootstrap files
├── config/ # Configuration files
├── database/ # Migrations, seeders, factories
├── public/ # Publicly accessible files
├── resources/ # Views, assets, language files
├── routes/ # Route definitions
├── storage/ # Logs, cache, uploaded files
├── tests/ # Test files
├── vendor/ # Composer dependencies
├── .env # Environment configuration
├── .env.example # Environment template
├── artisan # Laravel CLI
├── composer.json # PHP dependencies
├── package.json # Node dependencies
└── README.md # Project documentation
App Directory
The app/ directory contains the core application code:
app/
├── Console/
│ └── Kernel.php # Scheduled tasks configuration
├── Exceptions/
│ └── Handler.php # Exception handling
├── Filament/ # Filament Admin Panel
│ ├── Pages/ # Custom admin pages
│ ├── Resources/ # Admin CRUD resources
│ └── Widgets/ # Dashboard widgets
├── Http/
│ ├── Controllers/
│ │ ├── Api/ # API controllers
│ │ │ ├── V1/ # Pro tier API (v1)
│ │ │ ├── CoinGeckoApiController.php
│ │ │ ├── CoinMarketCapApiController.php
│ │ │ ├── LivePricesController.php
│ │ │ └── PaymentWebhookController.php
│ │ └── Web/ # Web controllers
│ │ ├── BlockfolioController.php
│ │ ├── CryptoCurrenciesController.php
│ │ ├── CryptoDashboardController.php
│ │ ├── PortfolioController.php
│ │ ├── PriceAlertController.php
│ │ ├── SubscriptionController.php
│ │ └── UserController.php
│ ├── Middleware/ # Request middleware
│ │ ├── AdminMiddleware.php
│ │ ├── ApiAuthMiddleware.php
│ │ └── SubscriptionMiddleware.php
│ └── Kernel.php # HTTP kernel
├── Models/ # Eloquent models (60+ models)
│ ├── User.php
│ ├── CryptoMarkets.php
│ ├── Portfolio.php
│ ├── PortfolioHolding.php
│ ├── PriceAlert.php
│ ├── SubscriptionPlan.php
│ └── ...
├── Providers/ # Service providers
│ ├── AppServiceProvider.php
│ ├── FilamentServiceProvider.php
│ └── RouteServiceProvider.php
└── Services/ # Business logic services
├── PortfolioService.php
├── PortfolioAnalyticsService.php
├── SubscriptionService.php
├── TwoFactorAuthService.php
└── WebhookService.php
Key Directories Explained
| Directory | Purpose |
|---|---|
app/Filament/ |
Filament admin panel resources, pages, and widgets. Contains 32+ CRUD resources for managing all aspects of the platform. |
app/Http/Controllers/Api/ |
API controllers for cryptocurrency data, live prices, and the Pro tier API (v1). |
app/Http/Controllers/Web/ |
Web controllers for frontend pages, user features, portfolios, and subscriptions. |
app/Models/ |
60+ Eloquent models including User, CryptoMarkets, Portfolio, PriceAlert, SubscriptionPlan, and more. |
app/Services/ |
Business logic services for portfolios, subscriptions, 2FA, and webhooks. |
Config Directory
Configuration files for all aspects of the application:
config/
├── app.php # Application settings
├── auth.php # Authentication configuration
├── broadcasting.php # Broadcasting settings
├── cache.php # Cache driver settings
├── captcha.php # reCAPTCHA configuration
├── database.php # Database connections
├── filament.php # Filament admin settings
├── filesystems.php # File storage disks
├── laravellocalization.php # Multi-language settings
├── logging.php # Log channels
├── mail.php # Email configuration
├── queue.php # Queue settings
├── services.php # Third-party services (Stripe, OAuth, CoinGecko)
├── session.php # Session configuration
└── sitemap.php # Sitemap generation settings
Most configuration values are read from the .env file. Only modify config files directly if you need to change the default structure.
Database Directory
Contains database migrations, seeders, and factories:
database/
├── factories/ # Model factories for testing
├── migrations/ # Database schema migrations (80+ files)
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2024_01_01_000001_create_crypto_markets_table.php
│ ├── 2024_01_01_000002_create_portfolios_table.php
│ ├── 2024_01_01_000003_create_subscription_plans_table.php
│ └── ...
└── seeders/ # Database seeders
├── DatabaseSeeder.php
└── SubscriptionPlanSeeder.php
Public Directory
Publicly accessible files served by the web server:
public/
├── build/ # Compiled frontend assets
│ └── manifest.json # Vite manifest
├── css/ # Compiled stylesheets
├── images/ # Static images
│ └── coins_icons/ # Cryptocurrency icons
├── js/ # JavaScript files
│ ├── app.js # Main application JS
│ ├── live-price-updater.js
│ └── blockfolio.js
├── sitemap/ # Generated sitemaps
├── storage/ # Symlink to storage/app/public
├── vendor/ # Third-party libraries
├── .htaccess # Apache rewrite rules
├── index.php # Application entry point
└── robots.txt # Search engine directives
Resources Directory
Views, frontend assets, and language files:
resources/
├── css/
│ └── app.css # Main stylesheet (Tailwind)
├── js/
│ └── app.js # Frontend JavaScript
├── lang/ # Translation files
│ ├── en/
│ ├── es/
│ ├── fr/
│ └── ... (20+ languages)
└── views/
├── emails/ # Email templates
│ ├── registration_email.blade.php
│ ├── password_reset_email.blade.php
│ ├── price_alert_notification.blade.php
│ └── security_alert.blade.php
├── errors/ # Error pages
│ ├── 404.blade.php
│ ├── 500.blade.php
│ └── maintenance.blade.php
├── filament/ # Filament admin customizations
├── modern/ # Modern theme (default)
│ ├── layouts/
│ └── pages/ # 60+ page templates
├── widgets/ # Embeddable widgets
│ ├── converter.blade.php
│ ├── market-overview.blade.php
│ └── price-ticker.blade.php
└── vendor/ # Third-party view overrides
Routes Directory
All application route definitions:
routes/
├── api.php # API routes (public + Pro tier v1)
├── channels.php # Broadcasting channels
├── console.php # Artisan commands
├── install.php # Installer routes
└── web.php # Web routes (main application)
Route Files Explained
| File | Description | Middleware |
|---|---|---|
web.php |
Main web routes including dashboard, cryptocurrencies, portfolios, user authentication, subscriptions, and admin routes. | web, localization |
api.php |
Public API endpoints for live prices, market data, and Pro tier API (v1) endpoints. | api, throttle |
install.php |
Web installer routes for initial setup. Disabled after installation. | web, installer |
Storage Directory
Application storage for logs, cache, and user uploads:
storage/
├── app/
│ └── public/ # User uploads (symlinked to public/storage)
│ ├── avatars/ # User profile pictures
│ ├── logos/ # Site logos
│ └── uploads/ # General uploads
├── framework/
│ ├── cache/ # Application cache
│ ├── sessions/ # Session files
│ └── views/ # Compiled Blade views
└── logs/
└── laravel.log # Application logs
The storage/ and bootstrap/cache/ directories must be writable by the web server. Run chmod -R 755 storage bootstrap/cache.
Important Configuration Files
Environment File (.env)
The .env file contains all environment-specific configuration:
# Application
APP_NAME=CoinTrail
APP_ENV=production
APP_KEY=base64:...
APP_DEBUG=false
APP_URL=https://yourdomain.com
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cointrail_db
DB_USERNAME=your_username
DB_PASSWORD=your_password
# API Keys
COINGECKO_API_KEY=your_coingecko_key
STRIPE_KEY=pk_live_...
STRIPE_SECRET=sk_live_...
# Social Login
FB_CLIENT_ID=your_facebook_app_id
FB_SECRET_ID=your_facebook_secret
TW_CLIENT_ID=your_twitter_client_id
TW_SECRET_ID=your_twitter_secret
# reCAPTCHA
RECAPTCHA_PUBLIC_KEY=your_site_key
RECAPTCHA_PRIVATE_KEY=your_secret_key
# Mail
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
Filament Admin Resources
The admin panel uses Filament 3.x with the following resources:
app/Filament/Resources/
├── AffiliatesResource.php # Affiliate management
├── BlockchainChainResource.php # Blockchain networks
├── CategoryResource.php # Content categories
├── ContactUsResource.php # Contact submissions
├── CryptoExchangesResource.php # Exchange data
├── CryptoMarketsResource.php # Cryptocurrency data
├── CryptoNewsResource.php # News articles
├── CryptoDictionaryTermsResource.php
├── DashboardSliderResource.php # Homepage sliders
├── EventsResource.php # Crypto events
├── ManualGatewayResource.php # Manual payments
├── MenuResource.php # Navigation menus
├── NewsletterResource.php # Newsletter subscribers
├── PageResource.php # Static pages
├── PaymentGatewaySettingResource.php
├── PaymentTransactionResource.php # Transaction history
├── PostResource.php # Blog posts
├── SettingResource.php # Site settings
├── SubscriptionPlanResource.php # Subscription tiers
├── TagResource.php # Content tags
├── UserResource.php # User management
├── UserSubscriptionResource.php # User subscriptions
└── WalletResource.php # Wallet guides
Files You May Need to Modify
| Purpose | File Location |
|---|---|
| Environment configuration | .env |
| Site logo and branding | public/images/ |
| Email templates | resources/views/emails/ |
| Frontend templates | resources/views/modern/ |
| Translations | resources/lang/{locale}/ |
| Scheduled tasks | app/Console/Kernel.php |
| API rate limits | routes/api.php |
Always backup files before making changes. Core files in app/ and config/ should only be modified if you understand Laravel.