TALL Stack Laravel Bootcamp

Project Overview: This is a full-stack app made with the Tall Stack. It follows the Laravel Bootcamp to produce a simple app where users can create posts. It uses Laravel Queues to send recipients an email when a post is created.

Demo of the app
Demo of the app
List of posts
List of posts
Show post
Show post
Image 0 of 0

Objectives

  1. Learn the Tall Stack.
  2. Create a full-stack app with Laravel
  3. Get familiar with Laravel Eloquant ORM.
  4. Use Livewire, “what Blade should be by default” (Taylor Otwell, Creator of Laravel)

Features

  1. Authentication
  • Thanks to Laravel Breeze, authentication is built-in, featuring password authentication, with a profile page for account management.
  1. Posts page
  • The main part of the app is allowing users to view and create posts. The posts page lists all posts created in descending order of creation. Using Livewire pagination, it shows 10 posts per page and displays a paginator at the bottom. Leveraging Alpine.js, a scroll to the top button is available.
  • User can modify their post by clicking on the edit button, and delete posts by clicking on the delete button. These actions are protected by Laravel Policies, allowing only authors to perform these actions.
  1. Email notifications
  • When a post is created, a PostCreated event is created and emitted.

  • When a PostCreated event is received, a queue job notification is created

  • Queue workers in the app listen to this notification and an email is sent to the email address of all the users of the app but the author. It uses an SMTP server with Mailpit for local testing.

  • Using queues, the email is sent asynchronously and is not blocking the rest of the app. It also allows to recover from failures in the queue workers.

Architecture

The app is built with Laravel, Livewire, Tailwindcss, and Alpine.js (TALL Stack). It uses Laravel Queues to send email notifications in the background. It uses SQLite as the database paired with the powerful Eloquen ORM to interact, query, migrate, and seed the database using Factories.

Technology Stack