Asset Management Tool
A multi-tenant SaaS application for organizations to track, manage, and audit physical assets with QR codes, CSV import/export, custom field schemas, and complete audit trails.

Project Gallery




About the Project
AMT SaaS (Asset Management Tool) is a multi-tenant SaaS application designed to help organizations track, manage, and audit their physical assets—from laptops and monitors to office equipment and machinery. The application enables companies to maintain a centralized inventory, track asset assignments to employees, define custom asset categories with flexible field schemas, generate QR codes for quick lookup, and import/export data via CSV.
Problem Statement
Organizations of all sizes struggle with asset management. Many companies track assets in Excel files that become outdated and impossible to audit. Without proper assignment tracking, assets get lost and no one knows who had them last. Generic tools don't accommodate different asset types, and there's no audit trail when something goes wrong.
My Solution
I built a flexible, multi-tenant asset management system with row-level tenant isolation, a dynamic field schema system where each category defines its own custom fields, a complete audit trail that survives user deletion, bulk operations for CSV import/export, and QR code integration for quick asset lookup. The storage layer uses a provider pattern supporting both local filesystem and Vercel Blob.
Challenges & Learnings
Next.js 16 App Router Patterns
Established clear patterns: Server Components for data fetching, Client Components only for interactivity, Server Actions for mutations. RSC dramatically simplifies data fetching and reduces client bundle size.
Multi-Tenancy Without Leaks
Every database query includes tenantId filter with authorization check before every operation. Defense in depth at middleware, page, and query level.
Dynamic Custom Fields
Store field schema as JSON in AssetCategory, field values as JSON in Asset, with dynamic form components that render based on schema and validate on import.
Audit Trail That Survives
Store userId as plain string (no FK) and performedBy name in JSON details field, so history remains readable even after user deletion.
Technology Stack
Next.js 16
Full-stack React framework with App Router, Server Components, and Server Actions for simpler data fetching and reduced client bundle size.
React 19
Latest React with Server Components paradigm for rendering data-fetching components on the server.
TypeScript
Type-safe development from database to UI, ensuring reliability across the full stack.
PostgreSQL
Relational database with JSON column support for flexible custom field schemas while maintaining query performance.
Prisma
Type-safe ORM with excellent migrations and Prisma Studio for database management.
Clerk
Managed authentication service with webhook support for user syncing.
TailwindCSS 4
Utility-first CSS framework with shadcn/ui components for rapid, accessible UI development.