Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md #55

Merged
merged 2 commits into from
Dec 12, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 61 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,67 +6,88 @@
[![Total Installs](https://img.shields.io/packagist/dt/codewithdennis/larament.svg?style=flat-square)](https://packagist.org/packages/codewithdennis/larament)
[![Latest Version on Packagist](https://img.shields.io/packagist/v/codewithdennis/larament.svg?style=flat-square)](https://packagist.org/packages/codewithdennis/larament)

![larament](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/larament.png)
![Larament](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/larament.png)

Kickstart your project and save time with Larament! This time-saving starter kit includes a Laravel project with FilamentPHP already installed and set up, along with extra features.
**Larament** is a time-saving starter kit to quickly launch Laravel projects. It includes **FilamentPHP** pre-installed and configured, along with additional tools and features to streamline your development workflow.

> [!NOTE]
> This starter kit includes **Laravel 11** and **FilamentPHP 3** with some packages that improve the development experience. This will not contain any bloated features or unnecessary packages. If you want to add more features, you can do so by installing the necessary packages.
---

## Configuration
## Table of Contents

- [Features](#features)
- [Security and Testing](#security-and-testing)
- [Quality of Life](#quality-of-life)
- [Design](#design)
- [Default User](#default-user)
- [Included Packages](#included-packages)
- [Installation](#installation)
- [CLI Installation](#cli-installation)

---

## Features

### Security and Testing
![pest-php](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/pest-php.png)
- A handfull of [PESTPHP](https://pestphp.com/docs/installation) test cases are included for testing.
- [Should be strict](https://laravel-news.com/shouldbestrict)
- Prevents lazy loading (N+1) queries.
- It prevents silently discarding attributes.
- It prevents accessing missing attributes.
- [Prevent destructive commands from running in production](https://laravel-news.com/prevent-destructive-commands-from-running-in-laravel-11)
- Archtest is included for architectural testing.
- PHPStan is included for static analysis.
- Laravel debugbar is included for debugging.
![PESTPHP](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/pest-php.png)

- **PESTPHP**: Preconfigured with test cases for streamlined testing. ([Learn more](https://pestphp.com/docs/installation))
- **Strict mode enabled** via [Should Be Strict](https://laravel-news.com/shouldbestrict):
- Prevents lazy loading (N+1 queries).
- Guards against discarding or accessing missing attributes.
- **Production safeguards**: Prevents destructive commands in production. ([Learn more](https://laravel-news.com/prevent-destructive-commands-from-running-in-laravel-11))
- **Architectural testing** with Archtest.
- **Static analysis** using PHPStan.
- **Debugging** with Laravel Debugbar.

### Quality of Life
![global-search-keybinding](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/global-search-keybinding.jpg)
- A custom login page autofills email and password with seeded data, streamlining local testing.
- A custom password generator action is available on the user profile and user resource pages.
- Global user search includes email addresses in results for better user discovery.
- All component labels are automatically translatable.
- A `composer review` command that runs PINT, PHPStan, and PEST.
- Helper file is included for custom helper functions.
- A custom `php artisan make:filament-action` command is available for creating actions.
![Global Search Keybinding](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/global-search-keybinding.jpg)

- Custom login page autofills email and password with seeded data for quicker testing.
- Built-in password generator action on the user profile and user resource pages.
- Enhanced global search includes email addresses for better discoverability.
- Auto-translatable component labels.
- `composer review`: A single command to run Pint, PHPStan, and PEST.
- Helper functions available through a dedicated helper file.
- Custom `php artisan make:filament-action` command for generating Filament actions.

### Design
![user-global-search](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/user-global-search.jpg)
- The Filament Panel's primary color is set to blue.
- Single Page Application (SPA) mode is enabled by default.
- Global search keybinding is preset to `CTRL + K` or `CMD + K`.
- A ready-to-use FilamentPHP [custom theme](https://filamentphp.com/docs/3.x/panels/themes#creating-a-custom-theme) that also includes a sidebar separator.
- A custom profile that includes the password generator action.
![User Global Search](https://raw.githubusercontent.com/CodeWithDennis/larament/main/resources/images/user-global-search.jpg)

- Filament Panel's primary color is preset to blue.
- Single Page Application (SPA) mode enabled by default.
- Global search keybinding set to `CTRL + K` or `CMD + K`.
- A ready-to-use FilamentPHP custom theme, including a sidebar separator.
- Enhanced profile page with a built-in password generator.

---

## Default User
The default user is seeded with the following credentials which is autofilled on the login page.

A default user is seeded with the following credentials, pre-filled on the login page for quick access:

```dotenv
DEFAULT_USER_NAME="John Doe"
DEFAULT_USER_EMAIL="[email protected]"
DEFAULT_USER_PASSWORD="password"
```

## Packages
## Included Packages

The following packages are pre-installed:

- [timokoerber/laravel-one-time-operations](https://github.com/TimoKoerber/laravel-one-time-operations)
- [barryvdh/laravel-debugbar](https://github.com/barryvdh/laravel-debugbar)
- [phpstan/phpstan](https://phpstan.org/user-guide/getting-started)
- [pestphp/pest](https://pestphp.com/docs/installation)
- [pestphp/pest-plugin-faker](https://pestphp.com/docs/plugins#faker)
- [pestphp/pest-plugin-faker](https://pestphp.com/docs/plugins#faker)
- [pestphp/pest-plugin-laravel](https://pestphp.com/docs/plugins#laravel)
- [pestphp/pest-plugin-livewire](https://pestphp.com/docs/plugins#livewire)

## Installation

**[Use this template](https://github.com/new?template_name=larament&template_owner=CodeWithDennis)** to create a new repository and clone it to your local machine, then navigate to the project directory to run the necessary commands.

### Using the Template
- Create a repository using the Larament template.
- Clone your repository to your local machine.
Navigate to the project directory and run the following commands:
```bash
composer install
npm install && npm run build
Expand All @@ -76,21 +97,21 @@ php artisan migrate
php artisan db:seed
```

### CLI Installation

You can also use the following command to create a new project with Larament.
## CLI Installation
Alternatively, you can use the following command to create a new project with Larament:

```bash
composer create-project --prefer-dist CodeWithDennis/larament example-app
```

If you don't want to remember the composer installation syntax for future projects, you can create an alias for your terminal:
### Create a Terminal Alias
For easier usage in future projects, create an alias in your terminal:

```bash
alias larament="composer create-project --prefer-dist CodeWithDennis/larament"
```

This allows you to simply use `larament my-cool-app` in your terminal.
Now, you can create a new project with a simple command:

```bash
larament my-cool-app
Expand Down
Loading