Laravel Bootstrap Starter Templates

Three free GitHub template repositories for starting a Laravel 12 project with Bootstrap 5: a plain starter kit, an SB Admin 2-style admin dashboard, and a full online store.

About these templates

Each of these is a GitHub template repository: rather than forking or cloning it, you click Use this template and GitHub creates a brand-new repository in your account with the same files and a clean commit history. All three use server-rendered Blade views and load Bootstrap from a CDN, so there's no Node, npm, or Vite build step — composer install is the only dependency install.

Starter Kit

A clean Laravel 12 app with Bootstrap 5 and a complete authentication flow — the smallest useful starting point.

  • Login, registration, password reset, and email verification
  • Authenticated dashboard behind auth + verified middleware
  • Responsive dark navbar with an offcanvas menu on small screens
  • Flash message component and styled 403/404/419/429/500/503 error pages
  • Sanctum installed and ready for API tokens
Laravel 12 PHP 8.2+ Bootstrap 5.3 Bootstrap Icons jQuery Sanctum

Admin Dashboard

An SB Admin 2-style back office: sidebar layout, dashboard charts, user management, and an audit log.

  • Sidebar + topbar admin layout in the style of SB Admin 2
  • Dashboard with stat cards and Chart.js area and doughnut charts
  • User management CRUD, gated by an is_admin flag and middleware
  • Activity log of logins, logouts, and changes, with before/after values
  • Server-side DataTables for sorting, searching, and paging large tables
  • Login with remember me and password reset (no public registration)
Laravel 12 PHP 8.2+ Bootstrap 5.3 Chart.js DataTables jQuery

Online Store

A complete e-commerce app: storefront, session cart, SumUp card payments, and an admin area to run it.

  • Nested categories, brands, and products with option-based variants (size, colour…) and per-variant SKU, price, and stock
  • Product images via Spatie Media Library with generated thumbnails
  • Session cart that snapshots prices, capped to available stock
  • Checkout with the embedded SumUp card widget, verified server-side
  • Order history for customers and an "order paid" email notification
  • Admin area for categories, brands, products, media, and order status
Laravel 12 PHP 8.2+ Bootstrap 5 SumUp Media Library Nested Set

Which one should I use?

Starter Kit Admin Dashboard Online Store
Best for Any new app you'll build out yourself Internal tools and back offices Selling physical products online
Public registration Yes, with email verification No — admins create users Yes, with email verification
Layout Top navbar Sidebar + topbar Storefront navbar + admin sidebar
Roles None is_admin flag role column
Extra setup None Optional seeder for demo users Storage link, SumUp keys, first admin

Getting started

The first steps are the same for all three templates:

  1. Open the template on GitHub and click Use this template → Create a new repository.
  2. Name the new repository and click Create repository.
  3. Clone your new repository and install it:
git clone https://github.com/YOUR-USERNAME/YOUR-REPO.git
cd YOUR-REPO

composer install
cp .env.example .env
php artisan key:generate
php artisan migrate

Each template also ships with Laravel's composer setup script, which runs the install, .env copy, key generation, and migrations in one go. Then start the app with php artisan serve, or just drop it into your Herd folder.

Admin Dashboard: demo data

There's no registration page, so seed the database to get an admin account (test@example.com) plus a batch of random users to fill the tables:

php artisan db:seed

Online Store: extra setup

Product images are stored on the public disk, so link it:

php artisan storage:link

Add your SumUp credentials to .env. A sandbox account works for testing — card 4200 0000 0000 0091 simulates a successful payment.

SUMUP_API_KEY=your-secret-key
SUMUP_MERCHANT_CODE=your-merchant-code

Finally, register an account through the site and promote it to admin to reach /admin:

php artisan tinker
>>> App\Models\User::where('email', 'you@example.com')->update(['role' => 'admin']);

The "order paid" email is queued, so run php artisan queue:work (and set real MAIL_* settings) when you want it to actually send.