Latest Updates

Documenting code, one commit at a time.

Refactoring Database Schemas for Module-Specific Tables

We've been working on the Reimpact/platform project, and recently tackled a significant refactoring of our database schema. Our initial design had a mix of shared and module-specific tables within each tenant schema, which led to some challenges as the platform grew.

The primary goal of this refactoring was to improve modularity and maintainability by clearly separating module-specific data.

Read more

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

Navigating the Data Migration Maze: MySQL to PostgreSQL

Migrating data between different database systems can be a complex undertaking. Recently, the team working on the platform navigated a significant data migration from MySQL to PostgreSQL. This post outlines some key considerations and challenges encountered during the process. These insights can help you avoid common pitfalls when undertaking similar migrations.

The Challenge

Read more
PHP MySQL AWS

Streamlining Local Development with Dynamic MySQL Configuration

Setting up a local development environment can often be a hurdle, especially when dealing with database credentials. Manually managing these credentials and ensuring they match the production environment can be time-consuming and error-prone. This is especially true for the Reimpact platform, where consistency between development and production environments is crucial.

The Problem: Hardcoded

Read more

Enhancing Tenant Schema Population in Laravel

Introduction

When building multi-tenant applications with Laravel, managing database schemas for each tenant can become complex. We recently improved our tenant schema population process in the platform project to handle various edge cases and ensure data integrity across companies.

The Problem

Our initial schema population process had several limitations:

  1. PostgreSQL's
Read more
PHP MySQL

Refactoring Generated Reports: Removing Redundant Data Calculations

When working on the Reimpact platform, a key aspect is ensuring data accuracy and efficiency. Recently, we addressed an issue within the generated reports functionality. The goal was to streamline data processing and eliminate redundant calculations, resulting in a more efficient system.

Identifying the Issue

The initial analysis revealed that certain data points within the generated reports

Read more

Laravel and Vite: Fixing Manifest Issues After Upgrade

Introduction

After upgrading to Vite 6 in a Laravel project, you might encounter issues with the location of the manifest.json file. The laravel-vite-plugin version 0.8 expects the manifest in build/manifest.json, but Vite 6 outputs it to .vite/manifest.json. This discrepancy can break asset loading in your application.

The Problem: Manifest File Location

When upgrading to newer

Read more

Modernizing the UI and unifying chat styling in Breniapp

The Breniapp project has been undergoing UI modernization efforts, focusing on both the overall aesthetics and specific elements like the chat interface. This post will cover the key changes and their impact.

Design System Refinements

One of the primary goals was to refine the existing design system. This included subtle but impactful changes such as:

  • Softer card shadows: Providing a
Read more

Enhancing the Portfolio Tour with AI Integration in Landing

Introduction

The landing project serves as a central hub for showcasing user portfolios and capabilities. A key aspect of this is guiding new users through the platform's features to ensure a smooth onboarding experience.

The Enhancement

Recent updates focused on enhancing the portfolio tour, specifically highlighting the platform's AI-powered post generation capabilities. This involves:

Read more
PHP JavaScript

Preserving Element Dimensions with Alpine.js Bindings

When working with dynamic styling in Alpine.js, it's crucial to understand how attribute bindings interact with existing styles. A common pitfall is unintentionally overwriting existing style attributes when only intending to modify a specific style property.

The Problem: Overwriting Styles

The issue arises when using the :style binding in Alpine.js. If the expression bound to :style

Read more