mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# Holy Energy Archive & Community Hub
|
|
|
|
A premium, responsive full-stack platform for "Holy Energy" fans to rate flavors, explore a categorized archive, and share personalized rating profiles.
|
|
|
|
## Features
|
|
|
|
- **Dynamic Hall of Fame:** An auto-rotating carousel featuring the top-rated flavors and community reviews.
|
|
- **Flavor Gallery:** A space-efficient, grid-based view of all rated and missing flavors.
|
|
- **Personalized Taste Profiles:** Share your ratings with the community using tiered (S-D) leaderboards.
|
|
- **Responsive Design:** Optimized for all devices, from ultra-wide monitors to vertical smartphones.
|
|
- **Secure Authentication:** SMTP-verified email signup, password resets, and session management.
|
|
- **Catalog Automation:** Automatic flavor syncing from official Shopify sources with local image caching.
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
- [Docker](https://docs.docker.com/get-docker/)
|
|
- [Docker Compose](https://docs.docker.com/compose/install/)
|
|
- [SMTP Server](https://support.google.com/mail/answer/185833?hl=en) (e.g., Gmail App Password) for email verification.
|
|
|
|
---
|
|
|
|
## Quick Setup
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/your-repo/holy.git
|
|
cd holy
|
|
```
|
|
|
|
2. **Configure your environment:**
|
|
Copy the example environment file and fill in your specific details (especially SMTP and your domain name):
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
3. **Start the containers:**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
4. **Wait for initial setup:**
|
|
The first time you start the backend, it will automatically:
|
|
- Run database migrations.
|
|
- Collect static files.
|
|
- **Sync flavors** from the Holy Energy Shopify API (this might take a minute).
|
|
|
|
5. **Access the application:**
|
|
- **Frontend:** [http://localhost:5173](http://localhost:5173) (or your configured domain)
|
|
- **API Docs:** [http://localhost:8000/api/schema/swagger-ui/](http://localhost:8000/api/schema/swagger-ui/)
|
|
- **Admin Panel:** [http://localhost:8000/admin/](http://localhost:8000/admin/) (or your configured `ADMIN_URL`)
|
|
|
|
---
|
|
|
|
## Production Hosting
|
|
|
|
### Security Best Practices
|
|
|
|
When hosting this application publicly, ensure you update your `.env` with:
|
|
|
|
- `DEBUG=false`: Essential for disabling internal Django stack traces.
|
|
- `SECRET_KEY`: Use a long, random string.
|
|
- `ADMIN_URL`: Change this to something unique (e.g., `super-secret-gate/`) to hide your admin panel from scanners.
|
|
- `ALLOWED_HOSTS`, `CSRF_TRUSTED_ORIGINS`, `CORS_ALLOWED_ORIGINS`: Set these to your actual production domain (e.g., `https://holy.narl.io`).
|
|
|
|
### Performance
|
|
|
|
- The application uses **WhiteNoise** for efficient static file serving.
|
|
- **Gunicorn** is configured as the production WSGI server.
|
|
- **Compression Middleware** (Gzip/Brotli) is active for API responses.
|
|
- **Lazy Loading** is enabled for all flavor and carousel images.
|
|
|
|
---
|
|
|
|
## Project Structure
|
|
|
|
- `backend/`: Django REST Framework API.
|
|
- `frontend/`: React 19 application with Material UI and Catppuccin themes.
|
|
- `media/`: Locally cached product images and user avatars.
|
|
- `legacy/`: Static JSON data for historical flavors.
|
|
|
|
## License
|
|
|
|
MIT
|