A full-stack rental property management application built with modern web technologies and AWS cloud services. This application allows property managers to list properties and tenants to search and apply for rentals.
Check out the live app: https://main.d1vydoe7zr96su.amplifyapp.com/search
This is a comprehensive rental property management system that includes:
- π Property Management: Create, view, and manage rental properties
- π₯ User Management: Separate dashboards for managers and tenants
- π Advanced Search: Filter properties by price, location, amenities, and more
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- πΌοΈ Image Upload: Direct file uploads to AWS S3 with signed URLs
- π Location Services: Geocoding and coordinate-based search
- π Application System: Tenant applications and lease management
- π³ Payment Processing: Payment tracking and management
- π Authentication: Secure user authentication with AWS Cognito
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- React Hook Form - Form management with validation
- Redux Toolkit Query - State management and API calls
- FilePond - File upload component with image preview
- Node.js & Express - RESTful API server
- TypeScript - Type-safe backend development
- Prisma ORM - Database modeling and queries
- PostgreSQL - Primary database with PostGIS for location data
- JWT Authentication - Secure API endpoints
- AWS S3 - File storage for property images
- AWS RDS - PostgreSQL database hosting
- AWS EC2 - Backend server hosting
- AWS Amplify - Frontend deployment and hosting
- AWS Cognito - User authentication and authorization
- Node.js (v18 or higher)
- npm or yarn
- PostgreSQL database
- AWS account with configured services
Create a .env file in the backend directory:
PORT=5000
DATABASE_URL="postgresql://username:password@your-rds-endpoint:5432/database_name?schema=public"
# AWS Configuration
AWS_S3_BUCKET_NAME="your-s3-bucket-name"
AWS_REGION="us-east-1"
AWS_ACCESS_KEY_ID="your-access-key-id"
AWS_SECRET_ACCESS_KEY="your-secret-access-key"
# JWT Configuration
JWT_SECRET="your-jwt-secret"Create a .env.local file in the client directory:
NEXT_PUBLIC_API_BASE_URL="http://localhost:5000"
NEXT_PUBLIC_AWS_REGION="us-east-1"
NEXT_PUBLIC_AWS_COGNITO_USER_POOL_ID="your-cognito-user-pool-id"
NEXT_PUBLIC_AWS_COGNITO_CLIENT_ID="your-cognito-client-id"git clone <repository-url>
cd rentalAppcd backend
npm install
# Database setup
npx prisma generate
npx prisma migrate dev
npx prisma db seed
# Start the development server
npm run devcd client
npm install
# Start the development server
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
# On your EC2 instance
pm2 start ecosystem.config.js
pm2 save
pm2 startup- Connect your GitHub repository to AWS Amplify
- Configure build settings
- Deploy automatically on git push
rentalApp/
βββ backend/ # Express.js API server
β βββ src/
β β βββ controllers/ # Route handlers
β β βββ middleware/ # Authentication & validation
β β βββ routes/ # API routes
β β βββ index.ts # Server entry point
β βββ prisma/ # Database schema & migrations
β βββ package.json
βββ client/ # Next.js frontend
β βββ app/ # App Router pages
β βββ components/ # Reusable UI components
β βββ lib/ # Utilities & configurations
β βββ state/ # Redux store & API
β βββ types/ # TypeScript type definitions
β βββ package.json
βββ README.md
- Signed URLs: Secure direct uploads from frontend to S3
- Image Processing: Automatic image optimization and preview
- CORS Configuration: Proper cross-origin setup for browser uploads
- PostGIS Integration: Geographic queries for location-based search
- Prisma ORM: Type-safe database operations
- Relational Data: Properties, locations, users, leases, and applications
- AWS Cognito: User pool management
- JWT Tokens: Secure API authentication
- Role-based Access: Manager and tenant permissions
- Advanced Filters: Price range, bedrooms, bathrooms, amenities
- Location Search: Coordinate-based proximity search
- Real-time Updates: Dynamic filtering with Redux state management
GET /properties # Get all properties with filters
GET /properties/:id # Get specific property
POST /properties # Create new property (managers only)
POST /properties/upload-urls # Generate S3 signed URLs
GET /tenants # Get tenant profiles
POST /tenants # Create tenant profile
GET /managers # Get manager profiles
POST /managers # Create manager profile
GET /applications # Get applications
POST /applications # Submit application
GET /leases # Get lease agreements
POST /leases # Create lease agreement
- JWT Authentication: Secure API access
- Role-based Authorization: Manager/tenant specific endpoints
- Input Validation: Zod schema validation
- CORS Protection: Configured for production domains
- Environment Variables: Sensitive data protection
The application is fully responsive and optimized for:
- Desktop computers
- Tablets
- Mobile devices
- Progressive Web App capabilities
- Real-time notifications
- Chat system between managers and tenants
- Advanced analytics dashboard
- Mobile app development
- Integration with payment processors
- Automated lease document generation
Built with β€οΈ using modern web technologies and AWS cloud services.