Latest Updates

Documenting code, one commit at a time.

Dynamic Pricing: Empowering Plan Management with Filament

The devlog-ist/landing project recently underwent a significant enhancement to its subscription and pricing infrastructure. Traditionally, managing different pricing tiers can become a bottleneck when hardcoded, leading to slow updates and lack of flexibility. Our goal was to create a robust, easily manageable system for defining and presenting various subscription plans.

The Challenge:

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

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

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

Improving Theme Selection in Landing Pages

The landing project provides customizable landing pages. Recently, we addressed an issue with the theme selection process that was causing cross-origin errors on tenant subdomains.

The Problem

Previously, the theme selector used the route() function to generate URLs. This resulted in the main domain URL being generated, which caused cross-origin failures when the landing page was accessed

Read more

Mitigating Session Logout Issues After User Impersonation

Introduction

Have you ever experienced a user being unexpectedly logged out immediately after being impersonated? This issue often stems from inconsistencies in session data following authentication switches. Let's explore how to address this in a PHP-based platform.

The Problem: Stale Session Password Hashes

In many web applications, especially those employing middleware for

Read more

Global Impersonation: Fixing a Routing Glitch in a Laravel Platform

Working on the Reimpact platform, we encountered a routing issue that prevented the 'stop impersonation' feature from working consistently across all panels. This post details the problem and the solution implemented to ensure global functionality.

The Problem

The impersonation.stop route was not always accessible because the RouteServiceProvider responsible for registering it wasn't

Read more

Refactoring Module Selectors for Enhanced UX in Laravel Filament

When working with Laravel Filament on the Reimpact platform, small UI refinements can have a significant impact on user experience. Recently, we addressed an issue concerning the module selector's icon sizing and positioning, particularly its integration with the platform's logo.

The Problem

The original implementation relied on Tailwind CSS classes for styling the module selector icon.

Read more