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.

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