Files

114 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

# 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