📁 project_root/
├── 📁 src/
│ ├── 📁 core/
│ │ ├── 📄 __init__.py
│ │ ├── 📄 database.py
│ │ ├── 📄 config.py
│ │ └── 📄 utils.py
├── 📁 tests/
│ ├── 📄 setup.py
│ ├── 📄 deploy.sh
│ └── 📄 backup.py
├── 📄 requirements.txt
├── 📄 Dockerfile
└── 📄 main.py
class ProjectManager:
def __init__(self):
self.project_structure = {
'src': {
'core': ['database.py', 'config.py', 'utils.py'],
'api': ['routes.py', 'models.py', 'middleware.py'],
'services': ['auth_service.py', 'user_service.py', 'notification_service.py'],
'utils': ['validators.py', 'decorators.py', 'helpers.py']
},
'tests': {
'unit': ['test_database.py', 'test_auth.py', 'test_utils.py'],
'integration': ['test_api.py', 'test_services.py']
},
'docs': ['README.md', 'API.md', 'DEPLOYMENT.md'],
'scripts': ['setup.py', 'deploy.sh', 'backup.py']
}
def create_project_structure(self):
"""Create the complete project directory structure"""
for folder, contents in self.project_structure.items():
if isinstance(contents, dict):
for subfolder, files in contents.items():
self._create_folder(f"{folder}/{subfolder}")
for file in files:
self._create_file(f"{folder}/{subfolder}/{file}")
else:
self._create_folder(folder)
for file in contents:
self._create_file(f"{folder}/{file}")
def _create_folder(self, path):
"""Create a folder at the specified path"""
os.makedirs(path, exist_ok=True)
print(f"📁 Created folder: {path}")
def _create_file(self, path):
"""Create a file at the specified path"""
with open(path, 'w') as f:
f.write(f"# {path}\n")
print(f"📄 Created file: {path}")
class DatabaseManager:
def __init__(self, connection_string):
self.connection_string = connection_string
self.connection = None
self.cursor = None
def connect(self):
"""Establish database connection"""
try:
self.connection = psycopg2.connect(self.connection_string)
self.cursor = self.connection.cursor()
print("✅ Database connected successfully")
except Exception as e:
print(f"❌ Database connection failed: {e}")
def create_tables(self):
"""Create all necessary database tables"""
tables = {
'users': '''
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''',
'sessions': '''
CREATE TABLE sessions (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
token VARCHAR(255) UNIQUE NOT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''',
'logs': '''
CREATE TABLE logs (
id SERIAL PRIMARY KEY,
level VARCHAR(10) NOT NULL,
message TEXT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
'''
}
for table_name, query in tables.items():
try:
self.cursor.execute(query)
print(f"✅ Created table: {table_name}")
except Exception as e:
print(f"❌ Failed to create table {table_name}: {e}")
self.connection.commit()
class APIService:
def __init__(self, app):
self.app = app
self.routes = []
self.middleware = []
def register_route(self, method, path, handler):
"""Register a new API route"""
route = {
'method': method.upper(),
'path': path,
'handler': handler
}
self.routes.append(route)
print(f"🔗 Registered {method.upper()} route: {path}")
def add_middleware(self, middleware_func):
"""Add middleware to the API"""
self.middleware.append(middleware_func)
print(f"🔧 Added middleware: {middleware_func.__name__}")
def handle_request(self, request):
"""Handle incoming API request"""
# Apply middleware
for middleware in self.middleware:
request = middleware(request)
# Find matching route
for route in self.routes:
if self._match_route(route, request):
return route['handler'](request)
return {'error': 'Route not found'}, 404
def _match_route(self, route, request):
"""Check if request matches route"""
return (route['method'] == request.method and
route['path'] == request.path)
class AuthenticationService:
def __init__(self, db_manager):
self.db_manager = db_manager
self.secret_key = os.environ.get('SECRET_KEY', 'default-secret-key')
def register_user(self, username, email, password):
"""Register a new user"""
try:
# Hash password
password_hash = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
# Insert user into database
query = '''
INSERT INTO users (username, email, password_hash)
VALUES (%s, %s, %s)
RETURNING id
'''
self.db_manager.cursor.execute(query, (username, email, password_hash))
user_id = self.db_manager.cursor.fetchone()[0]
self.db_manager.connection.commit()
print(f"✅ User registered: {username}")
return user_id
except Exception as e:
print(f"❌ User registration failed: {e}")
return None
def authenticate_user(self, username, password):
"""Authenticate user login"""
try:
query = "SELECT id, password_hash FROM users WHERE username = %s"
self.db_manager.cursor.execute(query, (username,))
result = self.db_manager.cursor.fetchone()
if result and bcrypt.checkpw(password.encode('utf-8'), result[1]):
user_id = result[0]
token = self._generate_token(user_id)
self._store_session(user_id, token)
print(f"✅ User authenticated: {username}")
return token
else:
print(f"❌ Authentication failed: {username}")
return None
except Exception as e:
print(f"❌ Authentication error: {e}")
return None
def _generate_token(self, user_id):
"""Generate JWT token for user"""
payload = {
'user_id': user_id,
'exp': datetime.utcnow() + timedelta(hours=24)
}
return jwt.encode(payload, self.secret_key, algorithm='HS256')
def _store_session(self, user_id, token):
"""Store user session in database"""
query = '''
INSERT INTO sessions (user_id, token, expires_at)
VALUES (%s, %s, %s)
'''
expires_at = datetime.utcnow() + timedelta(hours=24)
self.db_manager.cursor.execute(query, (user_id, token, expires_at))
self.db_manager.connection.commit()
class NotificationService:
def __init__(self, config):
self.config = config
self.email_client = None
self.sms_client = None
self._setup_clients()
def _setup_clients(self):
"""Setup notification clients"""
try:
# Setup email client
self.email_client = smtplib.SMTP(
self.config['email']['host'],
self.config['email']['port']
)
self.email_client.starttls()
self.email_client.login(
self.config['email']['username'],
self.config['email']['password']
)
print("✅ Email client configured")
except Exception as e:
print(f"❌ Email client setup failed: {e}")
def send_email(self, to_email, subject, body):
"""Send email notification"""
try:
message = MIMEText(body)
message['Subject'] = subject
message['From'] = self.config['email']['username']
message['To'] = to_email
self.email_client.send_message(message)
print(f"✅ Email sent to: {to_email}")
return True
except Exception as e:
print(f"❌ Email sending failed: {e}")
return False
def send_sms(self, phone_number, message):
"""Send SMS notification"""
try:
# SMS sending logic here
print(f"✅ SMS sent to: {phone_number}")
return True
except Exception as e:
print(f"❌ SMS sending failed: {e}")
return False
class Logger:
def __init__(self, db_manager):
self.db_manager = db_manager
self.log_levels = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
def log(self, level, message, user_id=None):
"""Log message to database"""
if level not in self.log_levels:
level = 'INFO'
try:
query = '''
INSERT INTO logs (level, message, user_id)
VALUES (%s, %s, %s)
'''
self.db_manager.cursor.execute(query, (level, message, user_id))
self.db_manager.connection.commit()
print(f"📝 Logged [{level}]: {message}")
except Exception as e:
print(f"❌ Logging failed: {e}")
def get_logs(self, level=None, limit=100):
"""Retrieve logs from database"""
try:
if level:
query = "SELECT * FROM logs WHERE level = %s ORDER BY timestamp DESC LIMIT %s"
self.db_manager.cursor.execute(query, (level, limit))
else:
query = "SELECT * FROM logs ORDER BY timestamp DESC LIMIT %s"
self.db_manager.cursor.execute(query, (limit,))
return self.db_manager.cursor.fetchall()
except Exception as e:
print(f"❌ Failed to retrieve logs: {e}")
return []
„KI kann gute Programmierer nicht ersetzen, sondern nur diejenigen, die sich nicht mit KI weiterentwickeln."
Bewerbung um ein Praktikum – Fachinformatiker Anwendungsentwicklung
Praktikumszeitraum • 27.10.2025 – 20.02.2026
Sehr geehrte Damen und Herren,
Sie suchen einen Praktikanten, der mehr kann, als Routine-Tickets abzuarbeiten.
Ich liefere Lösungen dort, wo andere nur sagen: „Es läuft doch."
Nachfolgend die Fakten – klar, direkt und ohne leere Floskeln.
📄
Ich benötige ein Praktikum vom 27.10.2025 bis 20.02.2026 im Rahmen meiner Umschulung
zum Fachinformatiker für Anwendungsentwicklung bei Cimdata Leipzig. Anstatt schöner
Floskeln erhalten Sie von mir Fakten: was ich kann, was ich lernen möchte und welchen
konkreten Nutzen das für Ihr Unternehmen bringt.
📄
Statt einen typischen Praktikanten, der nur Kaffee kocht, bekommen Sie einen
33-jährigen Quereinsteiger
mit Technik-Background, der strukturiertes Wissen aus der Umschulung mitbringt:
Mathematik
→
Elektronik
→
Netzwerke
→
Betriebssysteme
→
Programmierung
→
Algorithmen
→
KI
→
Datenbanken
→
Web-Security
Das bedeutet: Ich probiere nicht nur blind herum, sondern kann erklären, warum ich welchen Ansatz wähle.
⚡
Kritisches Denken: Wenn andere aufgeben, sehe ich noch drei andere Wege.
Kritisches Denken ist bei mir nicht nur ein Buzzword - ich hinterfrage wirklich jedes Detail,
bis ich die Lösung finde. Ich erkenne, wenn KI-Antworten unlogisch sind. Das zeigt:
Ich denke mit, nicht nach. Ich löse Probleme - nicht elegant, aber effektiv.
⚙️
Smartphone-Servicecenter: ROM-Flashen, APK-Entpacken und Dekompilieren, Root-Rechte-Verwaltung,
App-Modifikationen, ADB-Automatisierung, Systemdateien-Integration.
🤖
Verständnis für Kontextfenster, Reasoning-Tiefe, Modellwahl (GPT, Claude, Open-Weight-LLMs),
API-Orchestrierung, MCP-Server. Aufgabensteuerung via Cursor.
🌐
HTML, CSS, JavaScript; eigene Sites veröffentlicht.
🚀
Entwicklung einer Automatisierungslösung für den persönlichen Gebrauch mit n8n auf einem virtuellen privaten Server.
💡
Vollständiges Eintauchen, gesunder Skeptizismus, viele richtige Fragen. Unkonventionelles
Denken plus kalkuliertes Risiko – das sichert belastbare Ergebnisse. Der Militärdienst
hat mir beigebracht: Im Team funktioniert alles besser, aber jeder muss seinen Teil liefern.
❌
- Einen Script Kiddie, der nur Code copy-paste ohne zu verstehen
- Standard-Lebenslauf-Phrasen und leere Versprechungen
- Einen Praktikanten ohne Lebenserfahrung
- Einen Durchlaufposten - ich bin auf langfristige Zusammenarbeit ausgerichtet
🎯
- Praktische Aufgaben mit Lernpotenzial - Möglichkeit, Wissen an realen Projekten anzuwenden
- Direktes Feedback und offene Kommunikation - partnerschaftliche Beziehung, wo jeder profitiert
- Langfristige Perspektive - nach dem Praktikum möchte ich im Unternehmen bleiben
🤝
Ich bin überzeugt: Partnerschaft funktioniert nur beidseitig. Mit eigenen Meinungen
und Sichtweisen, mit gleicher Verantwortung in der Kommunikation. Profit muss es für
beide geben. Sie brauchen einen zuverlässigen Praktikanten, der später ein loyaler
Mitarbeiter wird. Ich brauche einen Platz, wo ich zeigen kann, was in mir steckt.
Win-Win.
📈
Pro-Gehalt ist (noch) nicht nötig, Ergebnisqualität hingegen auf Profi-Niveau.
Nutzen Sie mein Potenzial – ich wachse mit Ihren Projekten.
✅
Nehmen Sie mich als Praktikant. Ich bitte nicht um Nachsicht - ich biete eine
für beide Seiten profitable Zusammenarbeit. Sie bekommen einen motivierten Praktikanten, der:
- Reale Aufgaben vom ersten Tag an lösen kann
- Keine Angst hat zu experimentieren und unkonventionelle Lösungen zu finden
- Moderne Entwicklungstools versteht
- Auf langfristige Zusammenarbeit ausgerichtet ist
🔄
Im Gegenzug bekomme ich die Möglichkeit, meine Fähigkeiten in realen Projekten
anzuwenden und genau in Ihrem Unternehmen zum Spezialisten zu wachsen.
P.S. Ich habe Humor, bin fröhlich. Aber wenn es um Arbeit geht -
bin ich ernst und ergebnisorientiert. Genau diese Balance braucht ein gutes Team.