Initial commit: Notes Manager App (notes.braetter-int.de)

- Python/Flask Backend
- SQLAlchemy Models (notes, tasks, templates, users)
- Gunicorn + Nginx Deploy-Konfiguration
- Static Assets (CSS/JS)
- Jinja2 Templates
This commit is contained in:
2026-04-15 09:28:33 +02:00
commit 5c7ce5d0ca
24 changed files with 1666 additions and 0 deletions

77
app/__init__.py Executable file
View File

@@ -0,0 +1,77 @@
from flask import Flask
from .models import db, login_manager, User, DocumentationTemplate, DocumentationEntry, TaskItem
from .routes import main_bp
from pathlib import Path
from datetime import date
def create_app():
app = Flask(__name__, instance_relative_config=True)
Path(app.instance_path).mkdir(parents=True, exist_ok=True)
app.config['SECRET_KEY'] = 'change-me-in-production'
app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{Path(app.instance_path) / 'notesmanager.db'}"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
login_manager.init_app(app)
login_manager.login_view = 'main.login'
app.register_blueprint(main_bp)
with app.app_context():
db.create_all()
seed_data()
return app
def seed_data():
if DocumentationTemplate.query.count() == 0:
templates = [
DocumentationTemplate(
name='Tagesabschluss',
description='Standardvorlage für den täglichen Abschluss.',
content=(
'## Tagesziel\n- \n\n'
'## Erledigte Arbeiten\n- \n\n'
'## Offene Punkte\n- \n\n'
'## Besonderheiten / Störungen\n- \n\n'
'## Übergabe\n- '
)
),
DocumentationTemplate(
name='Wartung / Änderung',
description='Vorlage für technische Änderungen oder Wartungen.',
content=(
'## Betroffenes System\n- \n\n'
'## Anlass\n- \n\n'
'## Durchgeführte Schritte\n1. \n2. \n\n'
'## Ergebnis\n- \n\n'
'## Rollback / Risiko\n- '
)
)
]
db.session.add_all(templates)
if TaskItem.query.count() == 0:
demo_tasks = [
TaskItem(title='Backup-Prüfung dokumentieren', description='Kontrolle des letzten Backup-Laufs eintragen.', due_date=date.today(), status='offen', priority='hoch'),
TaskItem(title='Tagesbericht erstellen', description='Wichtige Arbeiten des Tages zusammenfassen.', due_date=date.today(), status='in_bearbeitung', priority='mittel')
]
db.session.add_all(demo_tasks)
if DocumentationEntry.query.count() == 0:
db.session.add(DocumentationEntry(
title='Beispiel: Morgenroutine',
work_date=date.today(),
category='Betrieb',
system_name='Allgemein',
priority='mittel',
status='erledigt',
content='Server geprüft, Tickets gesichtet und Tagesprioritäten festgelegt.',
tags='betrieb,morgenroutine',
created_by='Administrator'
))
db.session.commit()