initial commit

This commit is contained in:
Gitea
2025-12-21 22:13:23 +05:30
parent b21ee24306
commit eb114cf2dc
2 changed files with 61 additions and 237 deletions

296
README.md
View File

@@ -1,263 +1,87 @@
# 🚀 Laravel Filament Admin Starter Kit
# iMail - Temporary Email Service
A pre-configured **Laravel Admin Panel Starter Kit** built with [Livewire Starter Kit](https://github.com/laravel-livewire/starter-kit) and powered by [FilamentPHP](https://filamentphp.com/).
iMail is a simple, Laravel 12-based web application that provides a temporary email service. It allows users to create disposable email addresses to receive emails without revealing their personal email addresses.
Ideal for developers who want to skip boilerplate setup and jump straight into building robust admin dashboards, with essential tools and permissions already in place.
## Features
---
- Create temporary email addresses.
- Receive and read emails sent to temporary addresses.
- Easy-to-use interface for checking received emails.
- Email addresses expire after a specified time or once accessed.
## ⚡ Features at a Glance
## Requirements
* ✅ Livewire Starter Kit foundation
* ✅ Elegant UI with **FilamentPHP**
* ✅ Filament Panel configurable via `.env`
* ✅ Roles & Permissions (Spatie)
* ✅ Activity Logging
* ✅ Mail & Log Viewer
* ✅ **Database Config Manager (via Filament Plugin)**
* ✅ Code quality with **RectorPHP**
* ✅ Authentication with default seeded admin
Before you start, ensure you have the following installed:
---
- **PHP 8.1** or higher
- Composer
- Laravel 12.x
- MySQL or SQLite for the database
## 📂 Admin Panel Access
## Installation
* **Panel ID:** `dash`
* **Admin Route:** `/dash` (configurable)
* **Default Admin Credentials:**
| Email | Password |
| ------------------- | ---------- |
| `admin@example.com` | `password` |
> ⚠️ **Change these credentials before deploying to production.**
---
## ⚙️ Environment Configuration
All major features are easily configurable using environment variables:
```env
# Filament Admin Panel
FILAMENT_ROUTE=dash
FILAMENT_ENABLE_LOGIN=true
FILAMENT_ENABLE_REGISTER=false
FILAMENT_ENABLE_PROFILE=false
# Activity Logger
ACTIVITY_LOGGER_ENABLED=true
ACTIVITY_LOGGER_TABLE_NAME=activity_log
# Log Viewer
FILAMENT_LOG_VIEWER_DRIVER=raw
```
---
## 🎨 Filament Panel Configuration
The Filament admin panel's appearance and basic behaviors are defined in `config/filament-php.php`:
```php
<?php
use Filament\Support\Colors\Color;
return [
'route' => env('FILAMENT_ROUTE', 'dash'),
'colors' => [
'primary' => Color::Teal,
'danger' => Color::Red,
'gray' => Color::Zinc,
'info' => Color::Blue,
'success' => Color::Green,
'warning' => Color::Amber,
],
'enable_login' => env('FILAMENT_ENABLE_LOGIN', true),
'enable_registration' => env('FILAMENT_ENABLE_REGISTER', false),
'enable_profile' => env('FILAMENT_ENABLE_PROFILE', false),
];
```
You can easily override the route, theming colors, and feature toggles via `.env`.
---
## 🔐 Roles & Permissions
This starter kit uses [Spatie Laravel Permission](https://spatie.be/docs/laravel-permission) with the following default setup:
### 👤 Roles
* `admin` Full control, including access to logs and mails
* `user` No permissions assigned by default
### 🔑 Permissions
The `admin` role is granted the following permissions:
* `manage mails`
* `manage panels`
These are assigned in the `RoleSeeder` class:
```php
class RoleSeeder extends Seeder
{
public function run(): void
{
$role = Role::findOrCreate(name: 'admin', guardName: 'web');
Role::findOrCreate(name: 'user', guardName: 'web');
$permissionManageMails = Permission::findOrCreate(name: 'manage mails', guardName: 'web');
$role->givePermissionTo($permissionManageMails);
$permissionManageFilamentPanel = Permission::findOrCreate(name: 'manage panels', guardName: 'web');
$role->givePermissionTo($permissionManageFilamentPanel);
}
}
```
> ✅ You can expand this by adding more roles and permissions via the Filament UI or custom seeders.
---
## 🛠️ Manage Config from Admin Panel (Inerba DB Config Plugin)
This starter kit includes the [**Filament DB Config Plugin**](https://filamentphp.com/plugins/inerba-db-config) by **Inerba**, which allows you to **store application config settings in the database** and manage them from the admin panel.
### 🔧 Features
* Create configuration keys and values dynamically
* Group and categorize settings
* Easily retrieve values via `config('db-config.key')`
* No code deployment needed for config changes
### 🧩 Usage
After installing and publishing the plugin:
1. Visit `/dash/db-config` in your Filament panel
2. Add new config entries (e.g. `site.name`, `maintenance_mode`, etc.)
3. Use in code like so:
```php
$value = config('db-config.site.name');
```
> Useful for managing site-wide settings, feature toggles, or any admin-editable config.
---
## 📨 Mail Viewer
View all outgoing mail inside the Filament admin panel — ideal for local and staging environments.
---
## 🪵 Log Viewer
Filament Log Viewer is pre-configured to use the `raw` driver:
```env
FILAMENT_LOG_VIEWER_DRIVER=raw
```
View and analyze application logs from the admin panel.
For advanced configuration, see the [Log Viewer docs](https://github.com/ryangjchandler/filament-log).
---
## 🕵️ Activity Logger
Tracks user actions and stores them in the `activity_log` table (or custom name via `.env`):
```env
ACTIVITY_LOGGER_ENABLED=true
ACTIVITY_LOGGER_TABLE_NAME=activity_log
```
More configuration options available in [Spaties documentation](https://spatie.be/docs/laravel-activitylog).
---
## 🧼 Automated Refactoring with Rector
The root of the project includes a pre-configured `rector.php` file.
This allows for auto-refactoring and upgrading code to Laravel best practices.
### Run Rector:
### Step 1: Clone the Repository
```bash
vendor/bin/rector
git clone https://github.com/your-username/imail.git
cd imail
```
---
### Step 2: Install Dependencies
## 🚀 Installation
Run the following command to install the required PHP dependencies:
```bash
git clone https://github.com/idevakk/starter-kit.git your-project
cd your-project
composer install
```
### Step 3: Environment Configuration
Copy the `.env.example` file to create your `.env` file:
```bash
cp .env.example .env
```
Edit the `.env` file and configure the database and other environment settings:
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=imail
DB_USERNAME=root
DB_PASSWORD=
```
### Step 4: Generate Application Key
Generate the Laravel application key by running:
```bash
php artisan key:generate
```
Update your `.env` with database and mail configuration:
### Step 5: Migrate the Database
Run the database migrations to set up the required tables:
```bash
php artisan migrate
```
### Step 6: Serve the Application
Start the Laravel development server:
```bash
php artisan migrate --seed
npm install && npm run dev
php artisan serve
```
Visit: [http://localhost:8000/dash](http://localhost:8000/dash) (or your configured route)
Your application will be available at `http://127.0.0.1:8000`.
---
## Usage
## 📁 Key Structure
```
├── config/
│ ├── filament.php # Filament core settings
│ ├── filament-php.php # UI theming + custom toggles
│ ├── activitylog.php # Activity log config
│ └── db-config.php # (Optional) Plugin config
├── database/
│ └── seeders/FilamentAdminSeeder.php
│ └── seeders/RoleSeeder.php
├── rector.php # Rector config
```
---
## 🤝 Contributing
Contributions are welcome. Feel free to fork, submit issues, or create pull requests.
---
## 🛡 License
Open-sourced under the [MIT license](LICENSE).
---
## 🙏 Credits
* [Laravel](https://laravel.com)
* [Livewire Starter Kit](https://github.com/laravel-livewire/starter-kit)
* [FilamentPHP](https://filamentphp.com/)
* [Spatie Permissions](https://github.com/spatie/laravel-permission)
* [Spatie Activity Log](https://spatie.be/docs/laravel-activitylog)
* [Filament Log Viewer](https://github.com/ryangjchandler/filament-log)
* [Filament Mail Viewer](https://github.com/ryangjchandler/filament-mail)
* [Inerba DB Config Plugin](https://filamentphp.com/plugins/inerba-db-config)
* [RectorPHP](https://getrector.com)
---
1. Go to the homepage of your application.
2. Create a temporary email address.
3. Use the email address to receive emails.
4. View received emails in the inbox section.

2
package-lock.json generated
View File

@@ -1,5 +1,5 @@
{
"name": "isms",
"name": "imail",
"lockfileVersion": 3,
"requires": true,
"packages": {