A modern property management system built with Next.js, TypeScript, and SQLite.
- π’ Property Management: Track multiple properties, units, and details
- π₯ Tenant Management: Manage tenant information and contacts
- π Lease Tracking: Handle lease agreements, terms, and renewals
- π° Payment Processing: Monitor rent payments and financial records
- π§ Maintenance Requests: Track and manage maintenance work orders
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Database: SQLite with Drizzle ORM
- Styling: Tailwind CSS v4
- Runtime: React 19
npm install
The database schema is already configured. Push it to SQLite:
npm run db:push
Start the development server:
npm run dev
Open http://localhost:3000 in your browser.
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run db:push- Push schema changes to databasenpm run db:generate- Generate migration filesnpm run db:migrate- Apply migrationsnpm run db:studio- Open Drizzle Studio
- properties: Property information (address, type, units)
- tenants: Tenant contact information
- leases: Lease agreements linking properties to tenants
- payments: Rent payment records
- maintenance_requests: Maintenance and repair requests
GET /api/properties- List all propertiesPOST /api/properties- Create a new property
src/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
βββ db/ # Database
βββ schema.ts # Table definitions
βββ index.ts # Database connection
- Monetary values are stored in cents (integers) to avoid floating-point precision issues
- All timestamps use SQLite's CURRENT_TIMESTAMP
- The SQLite database file (
sqlite.db) is gitignored - Use Drizzle Studio to visually inspect and edit the database
ISC