Skip to main content

Setting Up the Laravel Project

Introduction Now that we have a solid plan and wireframe for our Laravel dashboard, it’s time to start...

Alex

CEO

March 13, 2025
5 min read
Courses

Introduction

Now that we have a solid plan and wireframe for our Laravel dashboard, it’s time to start building the foundation. This chapter covers setting up a Laravel project, configuring the environment, implementing authentication, and following best practices to ensure a secure and scalable setup.


Installing Laravel and Setting Up Project Structure

Before diving into the Laravel framework, we must first install it and understand its directory structure. Following a well-organized structure will make our dashboard maintainable and scalable.

1. Laravel Installation

To install Laravel, we use Composer, a dependency manager for PHP. Open the terminal and run:

composer create-project laravel/laravel laravel-dashboard

This command creates a new Laravel project in a folder called laravel-dashboard with all the necessary dependencies.

Once installed, navigate into the project directory and start a local development server:

cd laravel-dashboard
php artisan serve

This will launch the Laravel development server, and visiting http://127.0.0.1:8000/ should display the default Laravel welcome page.

2. Project Structure Overview

Laravel follows the MVC (Model-View-Controller) architecture. Key directories and files include:

  • app/Models/ – Houses Eloquent models that represent database tables.
  • app/Http/Controllers/ – Stores controller classes that handle request logic.
  • resources/views/ – Contains Blade templates for the frontend.
  • routes/web.php & routes/api.php – Define application routes for web and API endpoints.
  • config/ – Houses configuration files, including database and authentication settings.
  • .env – Environment configuration file for sensitive details (database credentials, API keys, etc.).

3. Development Environment Tools

For an efficient development setup, we recommend using:

  • Laravel Sail (Docker-based development environment for consistency across team members).
  • Valet or Homestead (for a more customized local environment).
  • Node.js & NPM (required for front-end asset compilation, especially when using Tailwind CSS or Vue.js).

Configuring Environment Variables and Security Best Practices

1. .env Setup

Laravel’s configuration relies on environment variables stored in the .env file. Key configurations to update:

APP_NAME=LaravelDashboard
APP_ENV=local
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dashboard_db
DB_USERNAME=root
DB_PASSWORD=secret

Ensure APP_KEY is generated by running:

php artisan key:generate

This key secures encrypted data in your application.

2. Secure Handling of Secrets

  • Never commit .env to version control. Laravel provides an .env.example file instead.
  • Use environment-specific variables (e.g., set production credentials only on the server).
  • API keys (for Stripe, OpenAI, Twilio, etc.) should be stored in .env and retrieved via config().

3. Debug Mode and Error Handling

  • Keep APP_DEBUG=true in development for debugging.
  • Set APP_DEBUG=false in production to avoid exposing sensitive error messages.
  • Use Laravel’s built-in error handling and logging (storage/logs/laravel.log) for troubleshooting.

4. Laravel Configuration Best Practices

  • Laravel protects against CSRF attacks by default.
  • Passwords are hashed using bcrypt.
  • Mail configuration should be set early (e.g., SMTP for email notifications).
  • Caching configurations (php artisan config:cache) helps optimize performance.

Choosing an Authentication Scaffold: Jetstream, Breeze, or Custom Auth

Authentication is crucial for a dashboard application. Laravel provides three main ways to implement it:

Breeze is a lightweight authentication starter kit using Blade and Tailwind (or Inertia with Vue/React).

To install Breeze:

composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev
php artisan migrate

Breeze provides pre-built authentication routes, controllers, and views, making it an easy starting point.

2. Laravel Jetstream (For Advanced Authentication)

Jetstream extends Breeze and offers more features, such as:

  • Two-factor authentication
  • API token management (via Laravel Sanctum)
  • Profile management
  • Team-based authentication (multi-tenancy)

To install Jetstream with Livewire:

composer require laravel/jetstream
php artisan jetstream:install livewire
npm install && npm run dev
php artisan migrate

Jetstream is ideal if your dashboard requires advanced authentication and API integrations.

3. Custom Auth (For Full Control)

For complete flexibility, Laravel Fortify (used by Jetstream) allows custom authentication without pre-built views. This approach is useful if the UI needs heavy customization.


Setting Up Authentication for the Project

For this course, we will use Laravel Breeze as our authentication scaffold for simplicity. After installation:

  • A login and registration system is already in place.
  • The routes/web.php file will include authentication routes.
  • A middleware system (auth) ensures that only logged-in users access the dashboard.

To protect routes, we modify routes/web.php:

Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
});

This ensures unauthorized users are redirected to login.

Best Practices for Authentication

✅ Enforce strong password policies. ✅ Enable email verification for account security. ✅ Protect routes with middleware (auth and verified). ✅ Secure session handling and prevent session hijacking.


Summary

At the end of this chapter, we have:

  • Installed Laravel and set up the project structure.
  • Configured the development environment and best security practices.
  • Chosen Laravel Breeze as our authentication system.
  • Implemented basic authentication for our dashboard.

With this foundation in place, we can now start building the core functionality of our dashboard.


By successfully completing this chapter, you are now ready to develop the functional components of your Laravel dashboard in the next section.

Ready to Turn This into Action?

We build the systems, integrations, and automation that replace manual work and disconnected tools. If something here resonated, we should talk.

Get in Touch See Our Work