Latest Updates

Documenting code, one commit at a time.

Scaling with Schemas: Multi-Tenancy Migration in Laravel

The Reimpact platform is undergoing a significant architectural shift, moving from a MySQL row-level multi-tenancy model to a more robust PostgreSQL schema-per-tenant setup. This post dives into the key considerations and steps involved in this migration, leveraging Laravel and Filament.

The Motivation for Schema-Based Tenancy

Row-level multi-tenancy in MySQL, while initially simpler to

Read more

Modernizing Platform Components with Laravel, Filament, and PostgreSQL

The platform project is undergoing a series of updates to enhance its architecture and developer experience.

Streamlining Panel Providers

Component registration is now more organized. The PackagingPanelProvider has been registered, ensuring that necessary components are readily available throughout the application. This centralizes the management of UI elements, improving maintainability.

Read more

Prompting for Feedback: Balancing User Experience and Engagement

Collecting user feedback is crucial for iterative improvement in any application. However, the timing and method of prompting users for feedback can significantly impact their experience. In the Breniapp application, a new approach balances proactive engagement with user comfort.

The Feature: Just-in-Time Feedback Prompts

A Livewire component has been introduced to present users with a

Read more

Multi-Tenancy in Laravel with PostgreSQL Schemas: A Migration Story

Introduction

Row-level filtering is common for multi-tenancy, but what if you need stronger isolation? At Reimpact's platform, we're migrating towards PostgreSQL schemas to achieve true tenant separation, leveraging Laravel, Filament, and the middleware pattern.

This post details our approach to dynamically setting the PostgreSQL search_path for each tenant, ensuring data isolation and

Read more

Refining Filament Page Layout for Enhanced User Experience

Introduction

In the Breniapp/brenia project, we're continuously working to improve the user interface and overall user experience. One recent focus has been on optimizing the layout of Filament admin panel pages, particularly in scenarios where a more compact design is desired.

The Challenge: Vertical Space Optimization

Filament, a PHP-based admin panel, offers a flexible and

Read more
PHP Filament

Fixing Late Static Binding Issues in Filament Resources

When developing with Filament, you might encounter issues with PHP's late static binding, especially when working with resources. A recent update to the platform project addressed such a problem, improving the way queries are handled within resource classes.

The issue arose from directly calling Resource::getEloquentQuery(). This approach breaks PHP's late static binding, causing

Read more

Tenant Isolation Strategy: Global Rates in a Multi-Tenant Laravel Application

Introduction

In multi-tenant applications, data isolation is key. One common challenge is determining which data should be tenant-specific and which should be global. In our Laravel platform project, we faced this question with application rates. Initially, we considered rates to be tenant-scoped, but we discovered that, due to regulatory requirements, these rates are actually global and

Read more