# Stiftung Application

A## 🏃‍♂️ Quick Start

### Development Environment

For local development, use the development Docker Compose configuration:

```bash
# Start development environment (uses hardcoded dev settings)
docker-compose -f compose.dev.yml up -d

# Run migrations
docker-compose -f compose.dev.yml exec web python manage.py migrate

# Create superuser
docker-compose -f compose.dev.yml exec web python manage.py createsuperuser

# Access applications
# - Django: http://localhost:8081
# - Paperless: http://localhost:8082
# - Database: localhost:5433
```

### Production Deployment

Production deployment uses the main `compose.yml` and is handled automatically via GitHub Actions. The production environment reads configuration from the server's `.env` file (not included in the repository for security).

## 🏗️ Architecturengo-based foundation management system with modern features and automated deployment.

## 🌟 Features

- **Destinatär Management**: Track beneficiaries and their support
- **Förderung System**: Manage grants and funding with enhanced search
- **HelpBox System**: Editable info boxes with Markdown support on all creation pages
- **PDF Exports**: Generate comprehensive reports
- **Land Management**: Track properties and lease agreements
- **Backup & Restore**: Automated backup system with UI
- **User Management**: Role-based access control
- **Audit Trail**: Track all changes

## 🆕 New Features (v2.0)

- ✅ **HelpBox System**: Interactive help on all "New" entity creation pages
- ✅ **Central HelpBox Management**: Admin interface at `/help-box/admin/`
- ✅ **Enhanced Förderung Search**: Improved search functionality
- ✅ **Template Cleanup**: Automated orphaned recurring payment handling
- ✅ **Bootstrap Layout Fixes**: Resolved grid alignment issues

## 🚀 Quick Start

### Development Setup

```bash
# Clone repository
git clone https://github.com/remmerinio/stiftung-management-system.git
cd stiftung-management-system

# Start development environment (isolated from production)
docker-compose -f compose.dev.yml up -d

# Create superuser
docker-compose -f compose.dev.yml exec web python manage.py createsuperuser

# Access application
open http://localhost:8081  # Django app
open http://localhost:8080  # Paperless-ngx (admin/admin123)
```

### Production Deployment

Production uses automated deployment via GitHub Actions. The production environment has its own `.env` file with secure credentials that is not stored in Git.

**For Production:**
- Environment variables are configured on the server
- HTTPS is enabled with Let's Encrypt certificates
- Database users are manually configured for security
- Automated deployments preserve manual configurations

See [deployment documentation](deploy-production/MIGRATION_PLAN.md) for complete setup instructions.

## 📁 Project Structure

```
stiftung-starter/
├── app/                          # Django application
│   ├── core/                     # Django project settings
│   ├── stiftung/                 # Main app
│   │   ├── models.py             # Data models (including HelpBox)
│   │   ├── views.py              # Views and API endpoints
│   │   ├── admin.py              # Django admin customization
│   │   ├── templatetags/         # Custom template tags (help_tags)
│   │   └── utils/                # Utility functions
│   ├── templates/                # HTML templates
│   │   └── stiftung/
│   │       ├── help_box.html     # HelpBox component
│   │       └── *_form.html       # Creation forms with help boxes
│   └── requirements.txt          # Python dependencies
├── deploy-production/            # Production deployment files
├── deploy-synology/              # Synology NAS deployment (legacy)
└── docs/                         # Documentation
```

## 🛠️ Development Workflow

### 1. Feature Development

```bash
# Create feature branch
git checkout -b feature/your-feature-name

# Make your changes
# ... edit files ...

# Test locally
docker-compose up -d

# Commit changes
git add .
git commit -m "feat: add your feature description"

# Push to GitHub
git push origin feature/your-feature-name
```
