mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
148 lines
4.9 KiB
Markdown
148 lines
4.9 KiB
Markdown
# Holy Flavor Rater
|
|
|
|
A high-density, community-driven platform for "Holy Energy" enthusiasts. Browse every flavor ever released—from current bestsellers to retired legacy editions—rate them, and build your own personal tiered leaderboard to share with the world.
|
|
|
|
## 🚀 Key Features
|
|
|
|
- **Personalized Taste Profiles:** Interactive, tiered (S-D) leaderboards based on your personal ratings.
|
|
- **Dynamic Hall of Fame:** Automatic carousel featuring community-favorite flavors and highlighted reviews.
|
|
- **Advanced Search & Discovery:** Typo-friendly search with category-aware filtering and relevance sorting.
|
|
- **Interactive Banners:** 10+ procedurally generated Canvas banners (Fireflies, Hextech, Nebula, etc.) that react to your mouse.
|
|
- **Pro Themes:** Over 15 built-in themes including Catppuccin, Nord, and T0P (Twenty One Pilots) inspired aesthetics.
|
|
- **Social Interaction:** Follow other collectors, receive follow notifications, and leave messages in profile guestbooks.
|
|
- **Enterprise Verification:** Secure one-click email verification and password recovery.
|
|
- **Automated Catalog:** Real-time syncing with Shopify APIs and historical legacy flavor data.
|
|
|
|
---
|
|
|
|
## 🛠️ Setup & Installation
|
|
|
|
### Option 1: Docker (Recommended)
|
|
The easiest way to get the full stack (Backend + Frontend + DB) running behind a production-ready proxy.
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/nvrl/Holy-Flavor-Rater.git
|
|
cd Holy-Flavor-Rater
|
|
```
|
|
2. **Environment Configuration:**
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your SMTP settings and Domain
|
|
```
|
|
3. **Start Services:**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
*Note: On first startup, the backend will automatically migrate, sync the flavor catalog, and clean up any duplicates.*
|
|
|
|
### Option 2: Local Manual Setup (Development)
|
|
|
|
#### Backend
|
|
1. **Navigate and Install:**
|
|
```bash
|
|
cd backend
|
|
python -m venv venv
|
|
source venv/bin/activate # Linux/Mac
|
|
pip install -r requirements.txt
|
|
```
|
|
2. **Initialize DB:**
|
|
```bash
|
|
python manage.py migrate
|
|
python manage.py sync_flavors
|
|
python manage.py seed_legacy_flavors
|
|
```
|
|
3. **Run Server:**
|
|
```bash
|
|
python manage.py runserver
|
|
```
|
|
|
|
#### Frontend
|
|
1. **Navigate and Install:**
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
```
|
|
2. **Run Dev Server:**
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
---
|
|
|
|
## 🏗️ Architecture
|
|
|
|
The Holy Flavor Rater uses a modern **decoupled architecture**:
|
|
|
|
### Backend (Django REST Framework)
|
|
- **Models:** Custom User model, Flavors (with category constraints), Ratings (with mention parsing), and Dynamic Banners.
|
|
- **Automation:** Management commands for periodic Shopify API syncing and database deduplication.
|
|
- **Security:** Token-based authentication, CSRF protection, and email-verified account activation.
|
|
- **Monitoring:** Integrated `/health/` endpoint for Docker container status.
|
|
|
|
### Frontend (React 19 + TypeScript)
|
|
- **State Management:** React Hooks and local state for high performance.
|
|
- **UI Framework:** Material UI (MUI) with heavy customization for "Holy" branding.
|
|
- **Visualization:** Procedural generative art system using HTML5 Canvas for profile backgrounds.
|
|
- **Internationalization:** Full i18next integration (English & German).
|
|
|
|
---
|
|
|
|
## 💻 Development Workflow
|
|
|
|
### Integrity Protection
|
|
This project includes a **Pre-Push Git Hook** to ensure code quality. It automatically:
|
|
1. Attempts a full Frontend build (`tsc` + `vite build`).
|
|
2. Runs Backend system checks and validates missing migrations.
|
|
|
|
**To install the hooks:**
|
|
```bash
|
|
bash scripts/install-hooks.sh
|
|
```
|
|
|
|
### Management Commands
|
|
- `python manage.py sync_flavors`: Syncs the latest products from the official Holy Energy API.
|
|
- `python manage.py cleanup_duplicates`: Merges duplicate entries and maintains rating integrity.
|
|
- `python manage.py seed_banners`: Updates procedurally generated banner configurations from JSON.
|
|
- `python manage.py backup_db`: Creates a consistent SQLite snapshot.
|
|
|
|
---
|
|
|
|
## 💾 Backups & Restoration
|
|
|
|
### Create a Backup
|
|
To create a full snapshot of your database and user-uploaded media:
|
|
```bash
|
|
bash scripts/backup.sh
|
|
```
|
|
This will create a `.tar.gz` file in `backend/backups/`.
|
|
|
|
**Automating with Cron:**
|
|
Add this to your `crontab -e` to backup every night at 2:00 AM:
|
|
```bash
|
|
0 2 * * * /path/to/Holy-Flavor-Rater/scripts/backup.sh
|
|
```
|
|
|
|
### Restore from Backup
|
|
1. Extract the archive: `tar -xzf backup_filename.tar.gz`
|
|
2. Stop the containers: `docker-compose down`
|
|
3. Replace the current files:
|
|
```bash
|
|
cp extracted_folder/db.sqlite3 backend/db.sqlite3
|
|
cp -r extracted_folder/media/* backend/media/
|
|
```
|
|
4. Restart: `docker-compose up -d`
|
|
|
|
---
|
|
|
|
## 🌍 Production Configuration
|
|
|
|
Ensure your `.env` contains:
|
|
- `DEBUG=false`
|
|
- `SECRET_KEY`: A long random string.
|
|
- `ALLOWED_HOSTS`: Your domain (e.g., `holy.narl.io`).
|
|
- `FRONTEND_URL`: For one-click email verification links.
|
|
|
|
## 📄 License
|
|
MIT
|