A full-stack real estate investment platform built with React and Express.js.
- Frontend: React 18, Redux Toolkit, Vite
- Backend: Express.js, PostgreSQL, Nodemailer
- Deployment: Heroku
- Node.js v18+
- PostgreSQL 15+
- Gmail account with App Password (for password recovery emails)
git clone https://github.com/zemar/zenbit_task.git
cd zenbit_task# Frontend
npm install
# Backend
cd backend
npm installcp backend/.env.example backend/.envEdit backend/.env with your values:
PORT=3000
CORS_ORIGIN=http://localhost:5173
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=zenbit
GMAIL_USER=your_email@gmail.com
GMAIL_PASS=your_app_password
psql -U postgres -c "CREATE DATABASE zenbit;"Tables are created automatically on server startup.
# Terminal 1 — Backend
cd backend
npm start
# Terminal 2 — Frontend
npm run dev- Frontend: http://localhost:5173
- Backend: http://localhost:3000
- User registration and login
- Password recovery via email
- Responsive design (mobile, tablet, desktop)
- Real estate deal listings
- Deal application form (pre-fills user data when logged in)
- Session persistence across page refreshes
zenbit_task/
├── public/assets/ # Images (hero, deal cards, login background)
├── src/
│ ├── components/ # Login, SignUp, ForgotPassword, ApplyModal
│ ├── features/ # Redux slices (authSlice, dealsSlice)
│ ├── App.jsx # Main app with routing and layout
│ ├── app.css # All styles
│ ├── store.js # Redux store
│ └── main.jsx # Entry point
├── backend/
│ ├── src/index.js # Express server, routes, DB setup
│ ├── .env.example # Environment variables template
│ └── package.json
├── Procfile # Heroku process file
├── vite.config.js # Vite config with dev proxy
└── package.json
| Method | Endpoint | Description |
|---|---|---|
| POST | /users |
Register a new user |
| POST | /login |
Login with email/password |
| POST | /forgot-password |
Send password to email |
| POST | /applications |
Submit a deal application |
| GET | /applications |
List all applications |
| GET | /applications/:id |
Get one application |