feat(v1): add basic backend and frontend
This commit is contained in:
58
README.md
Normal file
58
README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Spatial Image Enhancer Pro
|
||||
|
||||
Production-grade public SPA for spatial-domain image enhancement using Django REST Framework, OpenCV, NumPy, React, Tailwind CSS, Celery, Redis, PostgreSQL, Docker Compose, and Caddy.
|
||||
|
||||
## Local Development
|
||||
|
||||
Backend:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
python -m venv .venv
|
||||
.venv\Scripts\activate
|
||||
copy .env.sample .env
|
||||
pip install -r requirements.txt
|
||||
python manage.py migrate
|
||||
python manage.py runserver
|
||||
```
|
||||
|
||||
Frontend:
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
copy .env.sample .env
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Open `http://localhost:5173`. The frontend `.env` uses `VITE_API_BASE=http://localhost:8000`, and the backend `.env` allows that origin via CORS/CSRF settings.
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
copy .env.example .env
|
||||
copy backend\.env.sample backend\.env
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
Caddy serves the SPA and proxies `/api/*` and `/media/*`. Set `CADDY_DOMAIN`, `DJANGO_ALLOWED_HOSTS`, `DJANGO_CSRF_TRUSTED_ORIGINS`, `CORS_ALLOWED_ORIGINS`, and a strong `DJANGO_SECRET_KEY` before production deployment.
|
||||
|
||||
For production, use `.env.sample` as the root Compose template and `backend/.env.production.sample` as the backend-only template.
|
||||
|
||||
## Backend Structure
|
||||
|
||||
The Django app follows the HackSoftware Django Styleguide pattern:
|
||||
|
||||
- API views validate request input and return responses.
|
||||
- `processing/services.py` contains business workflows and writes.
|
||||
- `processing/selectors.py` contains database fetch helpers.
|
||||
- Settings are environment-driven through `backend/.env`.
|
||||
|
||||
## API
|
||||
|
||||
- `POST /api/images/`
|
||||
- `POST /api/process/`
|
||||
- `POST /api/batch/`
|
||||
- `GET /api/jobs/{job_id}/`
|
||||
|
||||
Images are stored as ephemeral sessions and removed by the cleanup task after the configured TTL.
|
||||
Reference in New Issue
Block a user