Table of Contents

TypeScriptReactNext.js 15+: SSG, ISGTailwind CSSNode.jsExpress.jsSupabaseDrizzle ORMPostgreSQLStripeRestAPIGraphQL

GoVault - Property Management System

2025-06-12
5 min read

GoVault is a full-stack Multi-tenant SaaS property management solution developed using Next.js (frontend) and Node.js + PostgreSQL (backend) to optimize real estate workflows. The centralized dashboard supports property tracking, occupancy analytics, maintenance management, lease handling, and secure online payments. Leveraging automation and real-time data updates, GoVault improves operational efficiency by up to 40%, reduces average maintenance turnaround times by 35%, and enhances landlord-tenant transparency by 50%+, all within a scalable, cloud-based architecture.

GoVault - Property Management System

Core Functionalities

Centralized Property Dashboard – Built with Next.js and TypeScript for a performant, SEO-friendly interface.

Maintenance Tracking – Real-time updates implemented via WebSockets for instant communication between tenants and managers.

Lease Management – Secure CRUD operations backed by Node.js and Express, with PostgreSQL as the data store.

Online Payments – Integration with payment APIs (Stripe, Mpesa Daraja) for secure transactions and automated receipt generation.

Data Security – JWT-based authentication, role-based access control (RBAC), and encrypted data storage.

System Workflow

User Authentication: JWT + Role-based access control (admin, property manager, tenant).

Frontend: Next.js app fetches data from backends.

Backend: Node.js + Express API connected to PostgreSQL database.

Real-Time: WebSocket connections for live updates on maintenance requests and payment confirmations.

Hosting: Deployed on cloud infrastructure with environment-specific configurations.

Technical Goals

Implement a modular codebase to support future microservice migration.

Implement GraphQL layer for more flexible client queries.

Add automated maintenance scheduling and reminders.

Integrate AI-based analytics for predictions and insights.

Use a scalable cloud architecture to handle increasing property and tenant data volumes.

Adopt automated testing (unit & integration) for maintainability.

Expand test coverage and performance monitoring.

Deploy with CI/CD pipelines to ensure rapid and safe updates.

Challenges Faced During Development & Solutions

Multi-Tenant Database Schema Naming: I implemented a schema-per-client design in PostgreSQL, using UUIDs as schema identifiers. However, PostgreSQL does not allow hyphens in unquoted schema names, leading to errors during creation. To resolve this, I modified the migration and schema creation logic to wrap schema names containing hyphens in double quotes before executing SQL commands.

AWS S3 IAM Permission Issues: While integrating AWS S3 for file storage, I encountered permission-denied errors despite having seemingly correct credentials. The issue stemmed from insufficiently scoped IAM policies and missing bucket-specific permissions. I resolved it by explicitly granting s3:PutObject, s3:GetObject, and s3:ListBucket permissions in the IAM role, ensuring the policies matched both the bucket ARN and its object paths.