- Docker (v20.10+)
- Docker Compose (v2.0+)
# Clone the repository
git clone <your-repo-url>
cd RentalApp
# Copy environment file
cp .env.example .env
# Edit .env with your configuration
nano .env # or use your preferred editorOn Linux/Mac:
chmod +x deploy.sh
./deploy.sh developmentOn Windows:
deploy.bat development- Frontend: http://localhost:3000
- API: http://localhost:3001
- MinIO Console: http://localhost:9001 (user: minioadmin, pass: minioadmin123)
- PostgreSQL 16 - Production database with PostGIS
- MinIO - S3-compatible object storage for property images
- Express.js API - RESTful backend with Prisma ORM
- Next.js 15 Frontend - Modern React-based UI
- pgAdmin - Database management (optional)
β
Property listing and search with Mapbox integration
β
User authentication with AWS Cognito
β
Image upload and storage with MinIO
β
Application management for tenants
β
Manager dashboard for property owners
β
Responsive design with Tailwind CSS
β
Docker containerization for easy deployment
β
Health checks and monitoring
cd server
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your database URL and credentials
# Run migrations
npx prisma migrate deploy
# Generate Prisma client
npx prisma generate
# Seed database (optional)
npm run seed
# Start development server
npm run devcd client
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with API URL and Mapbox token
# Start development server
npm run dev- Node.js 20+
- PostgreSQL 14+ with PostGIS extension
- MinIO or AWS S3 account
- AWS Cognito user pool
- Mapbox API token
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild images
docker-compose build --no-cache
# Run migrations
docker-compose exec server npx prisma migrate deploy
# Seed database
docker-compose exec server npm run seed
# Access PostgreSQL
docker-compose exec postgres psql -U rentalapp -d rentalapp_dbFor detailed Docker documentation, see DOCKER_DEPLOYMENT.md
NODE_ENV=production
PORT=3001
DATABASE_URL=postgresql://user:pass@localhost:5432/db
JWT_SECRET=your-secret-key
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin123
AWS_S3_BUCKET_NAME=rentalapp-properties
AWS_ENDPOINT=http://minio:9000
CORS_ORIGIN=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=http://localhost:3001
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=your_token
NEXT_PUBLIC_AWS_COGNITO_USER_POOL_ID=your_pool_id
NEXT_PUBLIC_AWS_COGNITO_USER_POOL_CLIENT_ID=your_client_idSee .env.example files for complete configuration options.
RentalApp/
βββ client/ # Next.js frontend
β βββ src/
β β βββ app/ # App router pages
β β βββ components/ # React components
β β βββ state/ # Redux store
β β βββ types/ # TypeScript types
β βββ Dockerfile
βββ server/ # Express backend
β βββ src/
β β βββ controllers/
β β βββ routes/
β β βββ middleware/
β βββ prisma/
β β βββ schema.prisma
β βββ Dockerfile
βββ docker-compose.yml