Project tutorial

Build a Laravel Blog

Build Marlowe Gazette with Laravel, Blade, Bulma, a hand-wired session auth guard, MySQL Eloquent, profiles, owned post CRUD, search, password recovery, and Railway deployment.

  • Difficulty Intermediate
  • Parts 12
  • Stack PHP 8, Laravel 12, Blade, Bulma, MySQL 8, Eloquent, session authentication

How this project works

Marlowe Gazette is an original teaching publication built in twelve complete snapshots. Clone once and run any numbered folder independently.

The path starts with Laravel setup and routing, adds Blade and Bulma, then introduces isolated MySQL databases, Eloquent relationships, feeds, accounts, profiles, owned stories, search, secure password recovery, and Railway.

Authentication uses Laravel's built-in web session guard through custom controllers, routes, validation, and Blade forms. No Breeze or Jetstream scaffolding is installed.

Seed accounts are [email protected] and [email protected], both with password123.

Start with part 1 Open GitHub repo

Parts in order

Work through the parts in sequence. Each lesson explains the ideas in plain language, then points you to a complete runnable snapshot on GitHub for that stage.

  1. Part 1: Getting StartedCreate and run a clean Laravel application on port 8000.
  2. Part 2: RoutingDefine named routes and understand route-model binding.
  3. Part 3: Layout and UIBuild shared Blade layouts and a responsive Bulma interface.
  4. Part 4: Data LayerModel users and posts with MySQL 8, migrations, Eloquent, and seed data.
  5. Part 5: Feed and DetailRender an Eloquent-backed story feed and slug detail pages.
  6. Part 6: RegistrationValidate registration and create securely hashed accounts.
  7. Part 7: Login and SessionsWire Laravel's web auth guard without Breeze or Jetstream.
  8. Part 8: Profiles and MediaEdit writer profiles and safely store avatar images.
  9. Part 9: Posts CRUD and OwnershipCreate, edit, and delete stories with owner authorization.
  10. Part 10: Pagination and SearchPaginate the feed and filter story text safely.
  11. Part 11: Password ResetImplement expiring one-use password reset links.
  12. Part 12: DeployDeploy Marlowe Gazette with Railway MySQL and production settings.