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

Implementing Dynamic GitHub Sync Limits Based on Subscription Tiers

Our landing project, which facilitates generating posts by syncing with user GitHub activity, recently required a more refined approach to feature access. To enhance our subscription model and ensure fair usage, we introduced dynamic GitHub sync limits based on a user's subscription plan.

The Scenario

Previously, all users might have had a uniform or basic GitHub sync limit.

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
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

Improving Feedback Form Accuracy in Landing Pages

Introduction

In web development, capturing accurate context is crucial for debugging and improving user experience. This post addresses an issue encountered in the devlog-ist/landing project where the feedback form was capturing an incorrect URL due to server-side rendering limitations with Livewire.

The Problem: Server-Side URL Capture

When using Livewire, attempting to capture the

Read more