ProHomes - Modern real estate platform unifying property buying, renting & short-term letting in Nigeria. Features legal verification, mortgage planning, automated payments, portfolio tracking & Airbnb-style bookings. Built with Next.js, TypeScript, Prisma & Tailwind. Solving real estate trust gaps with transparency & secure transactions.
# ProHome
A modern full-stack real estate platform for buying, renting, and short-term letting properties in Nigeria.
## Tech Stack
- **Next.js 14+** (App Router, React Server Components)
- **TypeScript** (strict mode)
- **Prisma ORM** with PostgreSQL
- **NextAuth.js** (email/password + Google OAuth)
- **Tailwind CSS** + **Shadcn/ui**-style components
- **React Hook Form** + **Zod** for forms
- **Framer Motion** for animations
- **Stripe** (ready for payments)
## Project Structure
```
src/
├── app/
│ ├── (auth) # Login, register
│ ├── (marketing) # Home, properties, rent, short-stay, about, contact
│ ├── (dashboard) # User dashboard and listings
│ └── api # Auth, register, etc.
├── components/
│ ├── ui # Button, Input (Shadcn-style)
│ ├── shared # Header, Footer, Sidebar
│ ├── providers # SessionProvider
│ └── features # Feature-specific components
├── lib # auth, prisma, utils
├── hooks
├── types
└── utils
```
## Getting Started
### 1. Clone and install
```bash
git clone
cd prohome
npm install
```
### 2. Environment variables (required for sign-in/sign-up)
**.env is not in Git.** Your friend must create it from the example:
```bash
cp .env.example .env
```
Then edit `.env` and set at least:
| Variable | Required | Example / how to get it |
|----------|----------|--------------------------|
| `DATABASE_URL` | **Yes** | `postgresql://USER:PASSWORD@localhost:5432/PROHOME` (use your Postgres user, password, and DB name) |
| `NEXTAUTH_URL` | **Yes** | `
localhost` (must match the URL you open in the browser) |
| `NEXTAUTH_SECRET` | **Yes** | Run: `openssl rand -base64 32` and paste the output |
Without these three, **sign-in and sign-up will not work** (redirects fail, session not set, or "Can't reach database").
Optional:
- Google OAuth: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`
- Stripe: `STRIPE_SECRET_KEY`, `STRIPE_PUBLISHABLE_KEY`, `STRIPE_WEBH …