Jan Remmer Siebels 92b689f5e7 Fix User DoesNotExist error in backup_cancel by using created_by_id
🐛 Root Cause Found & Fixed:
- Error occurred when accessing backup_job.created_by where the referenced user was deleted
- Django was trying to fetch a User object that no longer exists
- Changed to use backup_job.created_by_id instead of backup_job.created_by
- This avoids the foreign key lookup that was causing the 'User matching query does not exist' error

 Backup cancellation now works even when:
- Original creator user has been deleted from the database
- Foreign key relationship is broken but ID is still stored

The backup job can now be cancelled without triggering user lookup errors.
2025-09-29 22:14:06 +02:00

Stiftung Application

A## 🏃‍♂️ Quick Start

Development Environment

For local development, use the development Docker Compose configuration:

# 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

# 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 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

# 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
Description
Stiftung Management System - migrated from GitHub
Readme 43 MiB
Languages
HTML 53.4%
Python 44.6%
Shell 1.6%
JavaScript 0.4%