114 lines
2.9 KiB
Markdown
114 lines
2.9 KiB
Markdown
|
|
# Rentman Clone
|
||
|
|
|
||
|
|
A full-stack clone of Rentman.io, a project-centric SaaS platform for rental and event industries.
|
||
|
|
|
||
|
|
## Tech Stack
|
||
|
|
|
||
|
|
- **Backend:** FastAPI (Python 3.12+), SQLAlchemy 2.0, SQLite/PostgreSQL, Redis, Celery
|
||
|
|
- **Frontend:** React 19, TypeScript, Vite, Tailwind CSS, Radix UI, Zustand, React Query
|
||
|
|
- **Storage:** MinIO (S3-compatible)
|
||
|
|
- **Deployment:** Docker Compose, Coolify
|
||
|
|
|
||
|
|
## Getting Started
|
||
|
|
|
||
|
|
### Prerequisites
|
||
|
|
|
||
|
|
- Docker & Docker Compose
|
||
|
|
- Or Python 3.12+, Node.js 20+
|
||
|
|
|
||
|
|
### Quick Start (Docker)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cp .env.example .env
|
||
|
|
# Edit .env if needed
|
||
|
|
make dev
|
||
|
|
```
|
||
|
|
|
||
|
|
This starts:
|
||
|
|
- Backend API at http://localhost:8000 (Swagger at /docs)
|
||
|
|
- Frontend at http://localhost:5173
|
||
|
|
- Redis at port 6379
|
||
|
|
- MinIO at ports 9000 (API) and 9001 (Console)
|
||
|
|
|
||
|
|
### Local Development (without Docker)
|
||
|
|
|
||
|
|
#### Backend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
python -m venv venv
|
||
|
|
source venv/bin/activate
|
||
|
|
pip install -r requirements.txt
|
||
|
|
cp ../.env.example .env # adjust DATABASE_URL if needed
|
||
|
|
uvicorn app.main:app --reload
|
||
|
|
```
|
||
|
|
|
||
|
|
#### Frontend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd frontend
|
||
|
|
npm install
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
### Project Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
.
|
||
|
|
├── backend/ # FastAPI application
|
||
|
|
│ ├── app/
|
||
|
|
│ │ ├── main.py # App entry point
|
||
|
|
│ │ ├── core/ # Config, security
|
||
|
|
│ │ ├── db/ # Database setup
|
||
|
|
│ │ ├── models/ # SQLAlchemy models
|
||
|
|
│ │ ├── schemas/ # Pydantic schemas
|
||
|
|
│ │ ├── api/ # API routes
|
||
|
|
│ │ └── services/ # Business logic
|
||
|
|
│ ├── alembic/ # Database migrations
|
||
|
|
│ └── requirements.txt
|
||
|
|
├── frontend/ # React application
|
||
|
|
│ ├── src/
|
||
|
|
│ │ ├── components/ # Shared UI components
|
||
|
|
│ │ ├── pages/ # Page components
|
||
|
|
│ │ ├── stores/ # Zustand stores
|
||
|
|
│ │ ├── hooks/ # Custom hooks
|
||
|
|
│ │ └── lib/ # Utilities
|
||
|
|
│ └── package.json
|
||
|
|
├── docker-compose.yml
|
||
|
|
├── Makefile
|
||
|
|
└── .env.example
|
||
|
|
```
|
||
|
|
|
||
|
|
## Environment Variables
|
||
|
|
|
||
|
|
See `.env.example` for all required variables. Key ones:
|
||
|
|
|
||
|
|
| Variable | Description |
|
||
|
|
|----------|-------------|
|
||
|
|
| DATABASE_URL | Database connection string (SQLite for dev) |
|
||
|
|
| JWT_SECRET_KEY | Secret for signing JWT tokens |
|
||
|
|
| REDIS_URL | Redis connection URL |
|
||
|
|
| MINIO_ACCESS_KEY / MINIO_SECRET_KEY | MinIO credentials |
|
||
|
|
| CORS_ORIGINS | Allowed origins for CORS |
|
||
|
|
|
||
|
|
## Available Scripts
|
||
|
|
|
||
|
|
```bash
|
||
|
|
make dev # Start all services
|
||
|
|
make install-backend # Install Python dependencies
|
||
|
|
make install-frontend # Install npm dependencies
|
||
|
|
make migrate # Run database migrations
|
||
|
|
make create-migration MSG="description" # Create new migration
|
||
|
|
make clean # Clean cache files
|
||
|
|
```
|
||
|
|
|
||
|
|
## API Documentation
|
||
|
|
|
||
|
|
Once the backend is running, visit:
|
||
|
|
- Swagger UI: http://localhost:8000/docs
|
||
|
|
- ReDoc: http://localhost:8000/redoc
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
MIT
|