chore: add READMEs for clarity
This commit is contained in:
86
backend/README.md
Normal file
86
backend/README.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# minxa.lol – Backend
|
||||
|
||||
This is the **FastAPI-based** backend service for [minxa.lol](https://minxa.lol), a modern and lightweight URL shortener.
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Tech Stack
|
||||
|
||||
* **FastAPI** – Async web framework
|
||||
* **SQLAlchemy (async)** – Database ORM
|
||||
* **PostgreSQL** – Primary data store
|
||||
* **Hashids** – Encodes IDs into short strings
|
||||
* **Alembic** – Database migrations
|
||||
* **Uvicorn** – ASGI server
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Environment Setup
|
||||
|
||||
### 1. Create a virtual environment
|
||||
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
```
|
||||
|
||||
### 2. Install dependencies
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. Create `.env` file
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Edit the `.env` file to include your local database connection:
|
||||
|
||||
```env
|
||||
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/minxadatabase
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Running the Backend
|
||||
|
||||
### Development Server
|
||||
|
||||
```bash
|
||||
uvicorn backend.main:app --reload --app-dir ..
|
||||
```
|
||||
|
||||
### Production Server (via Docker Compose)
|
||||
|
||||
From the root of the project:
|
||||
|
||||
```bash
|
||||
python generate_configs.py
|
||||
|
||||
docker compose -f docker-compose.generated.yml up --build -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Directory Overview
|
||||
|
||||
```
|
||||
backend/
|
||||
├── db/ # DB engine & session
|
||||
├── models/ # SQLAlchemy models
|
||||
├── routes/ # FastAPI routers
|
||||
├── schemas/ # Pydantic request/response schemas
|
||||
├── services/ # Business logic
|
||||
├── utils/ # Hashid encoder and other helpers
|
||||
├── main.py # FastAPI entrypoint
|
||||
├── config.py # Environment configuration
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing (Coming Soon)
|
||||
|
||||
Unit and integration tests will be added using **pytest**.
|
||||
Reference in New Issue
Block a user