M0: scaffold SPA + API monorepo
Backend (Django 6.1 + DRF): - Token auth with a custom User model (register/login/logout/me) - Library models (MediaItem, MediaLocation) and REST endpoints - File list/detail with search, rating filter, sorting, pagination - Multipart upload with optional rating/tags/notes - Range-aware media serving (video seeking) and ffmpeg thumbnails - scan_files management command for the watched folder Frontend (React 19 + Vite + TypeScript): - Catppuccin Mocha design tokens from the design docs - App shell, token persistence, protected routes - Library grid with filters, file detail with custom data editor - Upload page with per-file progress via XHR - Dev proxy to the Django API
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# J621
|
||||
|
||||
Self-hosted media library and e621 archive manager, rebuilt as a **React SPA + Django REST API**.
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
backend/ Django 6 + DRF API (SQLite in dev, MariaDB in production)
|
||||
frontend/ Vite + React + TypeScript SPA
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
source venv/bin/activate
|
||||
python manage.py migrate
|
||||
python manage.py scan_files # index the watched folder
|
||||
python manage.py runserver
|
||||
```
|
||||
|
||||
Copy `.env.example` to `.env` and set `WATCHED_FOLDER` before scanning.
|
||||
|
||||
### Frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev # http://localhost:5173, proxies /api to :8000
|
||||
```
|
||||
|
||||
### Production
|
||||
|
||||
Not wired up yet — planned: Nginx serving the SPA build, `/media` and `/library` media
|
||||
directly, and proxying `/api` to Waitress/Django. See `frontend/` design docs for the UI
|
||||
specification.
|
||||
Reference in New Issue
Block a user