Posted on

A real-time message board built with Laravel and Vue. Check it out! You can use a guest account or make one quickly, without verification.

Visit the site or check out the repo on GitHub.

Tech Stack

Feature Tool
Backend Laravel
Broadcasting Pusher & Laravel Echo
Frontend Vue.js
Style SCSS
Images Inkscape


Lessons Learned

Make Things Easy. I'm glad that I was able to write my own authentication scheme, and I did so because I wanted something lightweight. This project is just a demonstration, so I don't want users to have to provide their email or use two-factor authentication just to check it out. But ultimately, it would've taken less time to use a built-in authentication library like Laravel Breeze and simply disable unnecessary features, rather than starting from scratch.


API-First Approach. Initially, the project didn't use Vue.js, and didn't have the asynchronous frontend. Creating a new post would refresh the page, and you'd need to refresh the page to see others' new posts. That doesn't make for a smooth experience, so I switched to using Laravel purely as an authentication system and API. Even if I had decided that a non-asynchronous approach was the right way, it would still have been good practice to separate controller action and display in a testable way.

Mobile Photos Are Weird. It turns out that many mobile photos have EXIF data describing their orientation. In order to display them properly, that data needs to be taken into account. This article describes the problem, as well as the solution I used with Intervention, an image manipulation package for PHP.

Lots and Lots of Small Things. Too many to list here, so I'll just stick to the ones that were the coolest... or saved me the most hair.