![]() Jordan Mosselson |
![]() Matthew Hubbard |
![]() Max Day |
![]() Jaiyesh Pillay |
![]() Tashil Koseelan |
Full-stack property management application built with React, Deno, and MongoDB. Enables property managers, tenants, caretakers, and administrators to collaborate in managing rental properties, leases, payments, and maintenance.
- Quick Start
- User Roles
- Pages & Routes
- API Endpoints
- Core Features
- Authentication & Authorization
- Data Models
- Deployment
- Deno runtime
- MongoDB instance
- Node.js 18+ (for build tools)
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your MongoDB URI and other settings
# Development
deno run -A dev-server.ts
# Server runs on http://localhost:3000npm run build
deno run -A api-server.ts8 Pages: Dashboard, Users, Add User, Pending Users, Security, Operations, Reports, Access Logs
- Full system control and user management
- Access to all system data
12 Pages: Dashboard, Properties, Applications, Leases, Create Lease, Lease Details, Renewals, Payments, Maintenance, Documents, Reports, Access Logs
- Property and lease management
- Payment approvals and tenant oversight
- Access: Only their properties and tenants
13 Pages: Dashboard, Payments, Add/Manage/Edit Payment Methods, Maintenance Requests, Profile, Edit Profile, Documents, Activity, Access Logs
- Rent payment and lease viewing
- Maintenance request submission
- Document access
- Access: Only their own lease, payments, requests
8 Pages: Dashboard, Tasks, Schedule, History, Maintenance, Profile, Reports, Access Logs
- Maintenance task management
- Work schedule viewing
- Task completion tracking
- Access: Assigned properties and tasks only
Landing, Login, Register, Forgot Password, Browse Properties, Property Details, Rental Application, Pending Approval
- Property browsing and rental applications
/admin Dashboard
/admin/users User management
/admin/add-user Create user
/admin/pending-users Approve registrations
/admin/security Security settings
/admin/operations System operations
/admin/reports System reports
/admin/access-logs Audit logs
/admin/api-test API testing
/manager Dashboard
/manager/properties Property management
/manager/applications Rental applications
/manager/leases Lease management
/manager/leases/new Create lease
/manager/leases/:id Lease details
/manager/renewals Lease renewals
/manager/payments Payment approvals
/manager/maintenance Maintenance oversight
/manager/documents Document storage
/manager/reports Analytics
/manager/access-logs Activity log
/tenant Dashboard
/tenant/payments Payment history
/tenant/add-payment-method Add payment method
/tenant/manage-payment-methods Manage payment methods
/tenant/edit-payment-method/:id Edit payment method
/tenant/requests Maintenance requests
/tenant/profile Profile view
/tenant/profile/edit Profile edit
/tenant/documents Documents
/tenant/activity Activity log
/tenant/access-logs Login history
/tenant/messages Communication
/caretaker Dashboard
/caretaker/tasks Task management
/caretaker/schedule Work schedule
/caretaker/history Completed tasks
/caretaker/maintenance Maintenance details
/caretaker/profile Profile
/caretaker/reports Performance reports
/caretaker/access-logs Activity log
/ Landing page
/login Login
/forgot-password Password recovery
/register Registration
/pending-approval Application status
/browse-properties Property search
/property/:id Property details
/apply/:id Rental application
POST /api/auth/login
POST /api/auth/register
POST /api/auth/logout
POST /api/auth/register-pending
POST /api/auth/forgot-password
POST /api/auth/reset-password
GET /api/properties
POST /api/properties
GET /api/properties/:id
PUT /api/properties/:id
DELETE /api/properties/:id
GET /api/units
POST /api/units
GET /api/units/:id
PUT /api/units/:id
GET /api/leases
POST /api/leases
GET /api/leases/:id
PUT /api/leases/:id
DELETE /api/leases/:id
GET /api/renewals
POST /api/renewals
GET /api/renewals/:id
PATCH /api/renewals/:id
GET /api/payments
POST /api/payments
GET /api/payments/:id
POST /api/payments/:id/approve
POST /api/payments/:id/reject
GET /api/invoices
POST /api/invoices
GET /api/invoices/:id
GET /api/invoices/:id/pdf
GET /api/invoices/:id/markdown
GET /api/maintenance
POST /api/maintenance
GET /api/maintenance/:id
PUT /api/maintenance/:id
DELETE /api/maintenance/:id
GET /api/tasks
POST /api/tasks
GET /api/tasks/:id
PUT /api/tasks/:id
DELETE /api/tasks/:id
GET /api/documents
POST /api/documents
GET /api/documents/:id
DELETE /api/documents/:id
GET /api/notifications
POST /api/notifications
POST /api/push-subscribe
GET /api/manager/applications
POST /api/manager/applications/:id/approve
POST /api/manager/applications/:id/reject
GET /admin/system-stats
GET /admin/user-stats
GET /admin/security-stats
GET /admin/financial-stats
GET /api/admin/users
GET /api/chat-messages
POST /api/chat-messages
POST /api/chat-escalations
GET /api/announcements
POST /api/announcements
POST /api/announcements/:id/send
DELETE /api/announcements/:id
GET /api/reports
POST /api/reports
WS /ws WebSocket connection
- Tenant payment submission with proof upload
- Manager payment approval/rejection workflow
- Payment method management
- Invoice generation (PDF, Markdown)
- Payment status tracking and notifications
- Create and manage lease agreements
- Automated renewal reminders
- Lease document storage
- Renewal applications and processing
- Tenant-submitted maintenance requests
- Manager assignment to caretakers
- Priority levels and scheduling
- Real-time status updates
- Completion confirmation
- WebSocket-based updates
- Push notifications
- Activity-based triggers
- Notification history
- Upload and store property documents
- Lease document storage
- Document categorization
- Expiration tracking
- BricLLM AI chatbot integration
- Manager escalation
- Chat history
- Admin, Manager, Tenant, Caretaker roles
- Registration and approval workflow
- Role-based access control
- Activity logging and audit trails
- System-wide reports (Admin)
- Property and financial reports (Manager)
- Payment history reports (Tenant)
- Performance reports (Caretaker)
- Export to PDF/Excel
- Language context for UI localization
- Mobile-first approach
- Top/bottom navigation components
- Touch-friendly interface
Protected routes:
<AdminRoute>- Admin only<ManagerRoute>- Manager only<TenantRoute>- Tenant only<CaretakerRoute>- Caretaker only
Data filtering by role context:
// Manager only sees their properties
const properties = await api.getProperties({ managerId: user.id });
// Tenant only sees their lease/payments
const payments = await api.getPayments({ tenantId: user.id });
// Caretaker only sees assigned tasks
const tasks = await api.getTasks({ caretakerId: user.id });Audit logging on all sensitive operations via /admin/access-logs
_id, fullName, email, phone, userType (admin|manager|caretaker|tenant)
password (hashed), profile {avatar, joinDate, lastLogin, isActive}
createdAt, updatedAt
_id, managerId, name, address, city, state, zipCode
totalUnits, yearBuilt, propertyType, description, amenities, photos
createdAt, updatedAt
_id, propertyId, unitNumber, squareFeet, bedrooms, bathrooms
furnished, petPolicy, rentAmount, currentTenantId
status (vacant|occupied|maintenance), createdAt, updatedAt
_id, managerId, tenantId, unitId, propertyId
startDate, endDate, rentAmount, depositAmount, terms
documentUrl, status (active|expired|terminated)
createdAt, updatedAt
_id, tenantId, managerId, leaseId, amount, dueDate
paidDate, paymentMethod, proofUrl
status (pending|submitted|approved|rejected), rejectionReason
createdAt, updatedAt
_id, tenantId, managerId, propertyId, unitId
title, description, priority (low|medium|high|emergency)
status (open|assigned|in-progress|completed|closed)
assignedCaretakerId, attachments, completedDate, notes
createdAt, updatedAt
_id, maintenanceId, caretakerId, propertyId
title, description, dueDate, priority (low|medium|high)
status (pending|in-progress|completed)
completedDate, notes, createdAt, updatedAt
_id, ownerId, ownerType (manager|tenant|property)
documentType (lease|invoice|receipt|other)
fileName, fileUrl, fileSize, uploadedDate
expirationDate, createdAt, updatedAt
_id, userId, title, message
type (info|warning|error|success), read
action {url, label}, createdAt
_id, userId, action, resourceType, resourceId
changes, timestamp
MONGO_URI=mongodb+srv://user:password@cluster.mongodb.net/briconomy
MONGO_DB_NAME=briconomy
PORT=3000
NODE_ENV=production
JWT_SECRET=your-secret-key-here
BRICLLM_API_KEY=your-api-key
VITE_API_URL=https://api.briconomy.com
npm run build
deno run -A api-server.tsFROM denoland/deno:latest
WORKDIR /app
COPY . .
RUN deno cache --reload api-server.ts
EXPOSE 3000
CMD ["deno", "run", "-A", "--unstable", "api-server.ts"]docker build -t briconomy:latest .
docker run -p 3000:3000 --env-file .env briconomy:latestusers, properties, units, leases, renewals, payments, invoices, maintenance, tasks, documents, notifications, announcements, chatMessages, auditLogs, applications, securitySettings, reports
Last Updated: October 28, 2025




