217 lines
5.2 KiB
Markdown
217 lines
5.2 KiB
Markdown
# 🧈 Butter Garden
|
|
|
|
A delightful recipe management application built with Flask, featuring a cozy, warm-toned interface and modern web technologies.
|
|
|
|
🌟 **[Try the Demo](https://garden.hex.lgbt)** 🌟
|
|
|
|
## ✨ Features
|
|
|
|
- 🔍 Browse and search recipes
|
|
- 📝 View detailed recipe ingredients and instructions
|
|
- 👥 Multi-user support with role-based permissions:
|
|
- 👑 Admin users can manage all recipes and users
|
|
- 👩🍳 Recipe managers can create and manage their own recipes
|
|
- 👀 Regular users can browse recipes
|
|
- 🎨 Beautiful, responsive design with custom styling
|
|
- 🚀 Modern interactions using HTMX
|
|
- 🌙 Dark mode support with smooth transitions
|
|
- 🎯 System theme detection and persistence
|
|
- 🌟 Warm, inviting color scheme
|
|
- 🐳 Docker support for easy deployment
|
|
|
|
## 🛠️ Technology Stack
|
|
|
|
- **Backend**: Flask + SQLAlchemy
|
|
- **Frontend**: HTMX + Custom CSS
|
|
- **Database**: SQLite
|
|
- **Authentication**: Flask-Login with Role-Based Access
|
|
- **Styling**:
|
|
- CSS Variables for theming
|
|
- Dark/Light mode with system preference detection
|
|
- Smooth theme transitions
|
|
- Modern CSS Features
|
|
- **Deployment**: Docker + Gunicorn
|
|
|
|
## 🚀 Quick Start with Docker
|
|
|
|
The easiest way to run Butter Garden is using Docker:
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/HardwarePunk/ButterGarden.git
|
|
cd ButterGarden
|
|
```
|
|
|
|
2. Set up environment variables:
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your preferred settings
|
|
```
|
|
|
|
3. Start with Docker Compose:
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
That's it! Visit `http://localhost:5000` to start using Butter Garden.
|
|
|
|
## 🐳 Docker Details
|
|
|
|
### Container Features
|
|
- Production-grade Gunicorn server
|
|
- Automatic health checks
|
|
- Persistent SQLite database volume
|
|
- Non-root user for security
|
|
- Automatic restarts on failure
|
|
|
|
### Container Management
|
|
|
|
**Start the container:**
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
**View logs:**
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|
|
|
|
**Stop the container:**
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
**Rebuild after changes:**
|
|
```bash
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
### Docker Configuration
|
|
- Port: 5000 (configurable in docker-compose.yml)
|
|
- Database location: /app/instance (mounted as volume)
|
|
- Environment variables: loaded from .env file
|
|
- Health check interval: 30 seconds
|
|
|
|
## 📝 Manual Installation (Without Docker)
|
|
|
|
If you prefer to run without Docker:
|
|
|
|
1. Create and activate a virtual environment:
|
|
```bash
|
|
python -m venv venv
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
3. Set up environment variables:
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your preferred settings
|
|
```
|
|
|
|
4. Initialize the database:
|
|
```bash
|
|
python init_db.py
|
|
```
|
|
|
|
5. Run the development server:
|
|
```bash
|
|
flask run
|
|
```
|
|
|
|
## 🔒 Environment Variables
|
|
|
|
Required variables in `.env`:
|
|
```bash
|
|
FLASK_SECRET_KEY=your-secret-key-here
|
|
ADMIN_USERNAME=your-admin-username
|
|
ADMIN_PASSWORD=your-secure-password
|
|
FLASK_ENV=production # or development
|
|
```
|
|
|
|
## 👥 User Management
|
|
|
|
Butter Garden supports three types of users:
|
|
|
|
1. **Admin Users**
|
|
- Can manage all recipes
|
|
- Can add, edit, and delete users
|
|
- Can assign user roles
|
|
- Full access to all features
|
|
|
|
2. **Recipe Managers**
|
|
- Can create new recipes
|
|
- Can edit and delete their own recipes
|
|
- Cannot manage other users
|
|
- Access to "My Recipes" dashboard
|
|
|
|
3. **Regular Users**
|
|
- Can browse and view recipes
|
|
- Cannot create or edit recipes
|
|
- No access to management features
|
|
|
|
### Default Users
|
|
|
|
The application comes with two default users after initialization:
|
|
|
|
1. **Admin User**
|
|
- Username: from ADMIN_USERNAME in .env
|
|
- Password: from ADMIN_PASSWORD in .env
|
|
- Full administrative access
|
|
|
|
2. **Recipe Manager**
|
|
- Username: recipe_manager
|
|
- Password: manager123
|
|
- Can create and manage their own recipes
|
|
|
|
To create additional users:
|
|
1. Log in as an admin user
|
|
2. Click "Manage Users" in the admin panel
|
|
3. Click "Add New User"
|
|
4. Fill in the username, password, and permissions
|
|
|
|
## 👩💻 Development
|
|
|
|
The application uses modern CSS features and HTMX for enhanced interactivity:
|
|
- CSS Variables for easy theme customization
|
|
- Responsive design, mobile friendly
|
|
- HTMX for dynamic content updates
|
|
- Custom scrollbar styling
|
|
- Sticky navigation elements
|
|
|
|
## 🎨 Customization
|
|
|
|
The app's appearance can be easily customized by modifying the CSS variables in `static/css/main.css`:
|
|
|
|
```css
|
|
:root {
|
|
--primary-color: #9B4819; /* Warm terracotta */
|
|
--secondary-color: #D68C45; /* Muted orange */
|
|
--background-color: #FDF6EC; /* Warm off-white */
|
|
/* ... other variables ... */
|
|
}
|
|
```
|
|
|
|
## 📱 Responsive Design
|
|
|
|
- Desktop: Left sidebar navigation
|
|
- Mobile: Top navigation bar
|
|
- Adaptive recipe content display
|
|
- Optimized spacing and typography
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch: `git checkout -b feature-name`
|
|
3. Commit your changes: `git commit -am 'Add some feature'`
|
|
4. Push to the branch: `git push origin feature-name`
|
|
5. Submit a pull request
|
|
|
|
## 📝 License
|
|
|
|
This project is licensed under the Unlicense License - see the LICENSE file for details.
|