Latest Updates

Documenting code, one commit at a time.

Crafting a Scalable Newsletter System with Laravel and Filament

On the devlog-ist/landing project, we recently implemented a comprehensive weekly newsletter digest system designed to keep users engaged with fresh content. The goal was to build a robust, configurable, and secure system capable of handling subscriptions, content delivery, and user management efficiently.

The Challenge: Building a Robust Newsletter System

Developing a newsletter system

Read more

Streamlining Subscriptions: Integrating Paddle into Laravel with Filament

The devlog-ist/landing project, a foundational platform, recently underwent a significant upgrade to its billing infrastructure. Our goal was to introduce a robust and flexible subscription management system, moving beyond basic one-time payments to support recurring plans. This involved integrating Paddle as our primary payment gateway, alongside building a comprehensive administration

Read more

Centralizing User Integrations: Adding Google OAuth to Landing

Our landing project recently focused on enhancing user experience by providing more robust third-party integration options directly within their settings. The goal was to expand beyond existing integrations like LinkedIn and introduce Google OAuth, all while creating a unified management dashboard.

The Challenge

As applications grow, so does the demand for seamless connections with other

Read more

Solving Livewire Rendering Glitches with wire:key and PHP Styling in Breniapp

This post discusses how we addressed a rendering issue in the Breniapp project related to dynamically updating canvas aspect ratios. The problem stemmed from using Alpine.js to manage the aspect ratio of a canvas element within a Blade template that conditionally rendered based on Livewire state.

The Problem

Initially, Alpine.js was used to dynamically update the aspect ratio of a canvas

Read more

Code Style Consistency in Breniapp/brenia with php-cs-fixer

Introduction

Maintaining a consistent code style is crucial for any project, especially when multiple developers are contributing. This post delves into how the Breniapp/brenia project enforces code style using php-cs-fixer, focusing on Livewire dispatch calls.

The Importance of Code Style

Consistent code style improves readability, reduces cognitive load, and minimizes merge

Read more

Localizing the Breniapp: From Session to User Database

The Breniapp project aims to streamline [description]. Recently, we tackled an issue with the locale switcher that was causing inconsistencies in how user locales were being handled.

The Problem

Previously, the locale selected by a user was only being saved in the session and a cookie. This approach relied on a two-step redirect chain through a LocaleController.

Read more

Improving Job Reliability with Time-Based Retries in Landing

In the landing project, we've been focusing on improving the reliability of background jobs, especially when dealing with rate limiting and throttling exceptions. Previously, we used a fixed number of retry attempts, but this approach proved to be problematic.

The Problem

When jobs are released back to the queue due to rate limiting or throttling middleware, each release counted towards the

Read more
PHP Livewire

Serving Files Directly: Migrating from Livewire AJAX to HTTP Routes

This post details a recent optimization in the landing project, focusing on how we transitioned file downloads from a Livewire AJAX implementation to a more robust HTTP route. This change addresses issues with file corruption and improves overall reliability.

The Problem: Corrupted File Downloads

Initially, we used a Livewire method, downloadCv(), to serve dynamically generated DOCX files.

Read more

Mitigating XSS Vulnerabilities in Livewire/Alpine.js with @js()

The Problem

In the landing project, we encountered a subtle but significant security issue related to how data was being passed from PHP to JavaScript within our Blade templates. Specifically, when using Livewire and Alpine.js, values containing special characters (like apostrophes in names such as "O'Brien") could break the JavaScript context, leading to unexpected behavior or, worse,

Read more