Files
website/app.py
SimolZimol 347902d518 modified: Dockerfile
modified:   README.md
	modified:   app.py
2025-10-26 19:20:32 +01:00

448 lines
19 KiB
Python

import os
from flask import Flask, render_template, jsonify
app = Flask(__name__)
# Main routes
@app.route('/')
def home():
"""Homepage with overview of Devanturas and featured projects"""
projects = [
{
'name': 'Fly Plugin',
'type': 'Minecraft Plugin',
'description': 'Lightweight flight plugin for survival servers with configurable speeds and permissions.',
'technologies': ['Java', 'Spigot', 'Paper'],
'status': 'Active',
'url': '/projects/fly-plugin',
'icon': 'fas fa-paper-plane',
'color': 'minecraft'
},
{
'name': 'Hearts of Iron IV ELO Bot',
'type': 'Discord Bot',
'description': 'Sophisticated Discord bot with complete ELO rating system for HOI4 multiplayer communities.',
'technologies': ['Python', 'Discord.py', 'MySQL', 'Docker'],
'status': 'Production',
'url': '/projects/hoi4-elo-bot',
'icon': 'fab fa-discord',
'color': 'discord'
},
{
'name': 'Discord AI Bot — Moderation & Giveaways',
'type': 'Discord Bot',
'description': 'Production-ready bot with advanced moderation, restart-safe giveaways, and a Flask web dashboard.',
'technologies': ['Python', 'Discord.py', 'Flask', 'MySQL'],
'status': 'Active',
'url': '/projects/discord-ai-bot',
'icon': 'fas fa-shield-alt',
'color': 'discord'
},
{
'name': 'Discord Bot — Stable Diffusion (AMD)',
'type': 'Discord Bot',
'description': 'AI image generation bot optimized for AMD GPUs with Discord commands and queueing.',
'technologies': ['Python', 'Discord.py', 'AI'],
'status': 'Active',
'url': '/projects/discord-bot-stable-diffusion-amd',
'icon': 'fas fa-wand-magic-sparkles',
'color': 'discord'
}
]
return render_template('index.html', projects=projects)
@app.route('/projects')
def projects():
"""Overview of all projects"""
all_projects = [
{
'name': 'Fly Plugin',
'type': 'Minecraft Plugin',
'description': 'Simple flight for survival servers with speed control and permission management.',
'long_description': 'A lightweight, reliable Minecraft plugin that restores creative-like flying in survival mode. Designed for simplicity and performance.',
'technologies': ['Java', 'Spigot', 'Paper', 'Bukkit'],
'status': 'Active',
'version': 'Latest',
'downloads': 'Available',
'url': '/projects/fly-plugin',
'icon': 'fas fa-paper-plane',
'color': 'minecraft',
'links': {
'modrinth': 'https://modrinth.com/plugin/fly-simolzimol/',
'spigot': 'https://www.spigotmc.org/resources/fly.83164/'
}
},
{
'name': 'Hearts of Iron IV ELO Bot',
'type': 'Discord Bot',
'description': 'Advanced Discord bot for competitive HOI4 communities with ELO rating system.',
'long_description': 'A sophisticated Discord bot featuring a complete ELO rating system similar to chess rankings, designed specifically for Hearts of Iron IV multiplayer communities.',
'technologies': ['Python', 'Discord.py', 'MySQL', 'Docker', 'Coolify'],
'status': 'Production',
'version': '2.0',
'users': 'Multiple Communities',
'url': '/projects/hoi4-elo-bot',
'icon': 'fab fa-discord',
'color': 'discord',
'links': {
'github': 'https://github.com/SimolZimol/'
}
},
{
'name': 'Discord AI Bot — Moderation & Giveaways',
'type': 'Discord Bot',
'description': 'Moderation, restart-safe giveaways with Steam integration, and a web dashboard.',
'long_description': 'Production-ready Discord bot with advanced moderation, persistent giveaway engine (Steam/Epic ready), Flask-based dashboard, and restart safety via MySQL.',
'technologies': ['Python', 'Discord.py', 'Flask', 'MySQL', 'aiohttp'],
'status': 'Active',
'version': '1.x',
'url': '/projects/discord-ai-bot',
'icon': 'fas fa-shield-alt',
'color': 'discord',
'links': {
'github': 'https://github.com/SimolZimol/'
}
},
{
'name': 'Discord Bot — Stable Diffusion (AMD)',
'type': 'Discord Bot',
'description': 'AI image generation with AMD GPUs, Discord commands, and job queuing.',
'long_description': 'A Discord bot for Stable Diffusion image generation optimized for AMD GPUs. Provides prompt-based generation through slash/text commands with async processing.',
'technologies': ['Python', 'Discord.py', 'AI'],
'status': 'Active',
'version': 'Latest',
'url': '/projects/discord-bot-stable-diffusion-amd',
'icon': 'fas fa-wand-magic-sparkles',
'color': 'discord',
'links': {
'github': 'https://github.com/SimolZimol/Discord-Bot-stable-diffusion-AMD',
'issues': 'https://github.com/SimolZimol/Discord-Bot-stable-diffusion-AMD/issues'
}
}
]
return render_template('projects.html', projects=all_projects)
@app.route('/minecraft')
def minecraft():
"""Dedicated Minecraft development page"""
minecraft_projects = [
{
'name': 'Fly Plugin',
'description': 'Flight plugin for survival servers',
'version': 'Latest',
'supported_versions': '1.15 - 1.21',
'downloads': 'Active',
'url': '/projects/fly-plugin'
}
]
minecraft_info = {
'experience': '3+ Years',
'preferred_apis': ['Spigot API', 'Paper API', 'Bukkit API'],
'specialties': ['Plugin Development', 'Server Optimization', 'Custom Commands', 'Permission Systems'],
'server_types': ['Spigot', 'Paper', 'Bukkit']
}
return render_template('minecraft.html', projects=minecraft_projects, info=minecraft_info)
@app.route('/about')
def about():
"""About SimolZimol and Devanturas"""
skills = {
'Minecraft Development': [
'Spigot & Paper Plugin Development',
'Java Programming',
'Server Administration',
'Performance Optimization',
'Custom Commands & GUIs',
'Permission System Integration'
],
'Discord Development': [
'Discord.py Bot Development',
'Database Integration (MySQL)',
'Asynchronous Programming',
'Community Management Tools',
'Slash Commands & Interactions',
'Docker Deployment'
],
'General Programming': [
'Java, Python',
'Database Design',
'RESTful APIs',
'Git Version Control',
'Docker & Containerization',
'Web Development (Flask)'
]
}
achievements = [
{
'title': 'Fly Plugin',
'description': 'Active on Modrinth & SpigotMC',
'icon': 'fas fa-download'
},
{
'title': 'Open Source',
'description': 'Contributing to GitHub repositories',
'icon': 'fab fa-github'
},
{
'title': 'Community',
'description': 'Supporting Discord communities',
'icon': 'fab fa-discord'
}
]
return render_template('about.html', skills=skills, achievements=achievements)
@app.route('/contact')
def contact():
"""Contact information and links"""
contact_links = [
{
'name': 'GitHub',
'url': 'https://github.com/SimolZimol/',
'description': 'Open source projects and code repositories',
'icon': 'fab fa-github',
'color': 'github'
},
{
'name': 'Discord',
'url': 'https://discordapp.com/users/253922739709018114',
'description': 'Direct contact for questions and support',
'icon': 'fab fa-discord',
'color': 'discord'
},
{
'name': 'Modrinth',
'url': 'https://modrinth.com/plugin/fly-simolzimol/',
'description': 'Fly Plugin on Modrinth platform',
'icon': 'fas fa-cube',
'color': 'modrinth'
},
{
'name': 'SpigotMC',
'url': 'https://www.spigotmc.org/resources/fly.83164/',
'description': 'Minecraft plugins and resources',
'icon': 'fas fa-plug',
'color': 'spigot'
}
]
return render_template('contact.html', links=contact_links)
# Healthcheck endpoint for platforms like Coolify
@app.route('/health')
def health():
return jsonify(status='ok'), 200
# Project detail pages
@app.route('/projects/fly-plugin')
def fly_plugin():
"""Detailed page for Fly Plugin"""
project = {
'name': 'Fly Plugin',
'tagline': 'Simple flight for survival servers',
'description': 'A lightweight, reliable Minecraft plugin that restores creative-like flying in survival mode. Designed to be simple for players and server admins.',
'long_description': '''Fly is a minimalist Minecraft plugin focused on providing reliable flight functionality for survival servers.
The plugin emphasizes simplicity, performance, and easy customization while maintaining compatibility across multiple server versions.''',
'version': 'Latest',
'status': 'Active Development',
'compatibility': '1.15 - 1.21',
'server_types': ['Spigot', 'Paper', 'Bukkit'],
'technologies': ['Java', 'Spigot API', 'Paper API'],
'features': [
'Toggle flight for yourself: /fly',
'Toggle flight for others: /fly <player>',
'Adjustable flight speed: /fly speed <1-10>',
'Fully configurable messages and prefix',
'Live configuration reload: /flyreload',
'Permission-based access control',
'Lightweight and efficient'
],
'commands': [
{
'command': '/fly',
'description': 'Toggle your own flight',
'permission': 'fly.fly'
},
{
'command': '/fly <player>',
'description': 'Toggle another player\'s flight',
'permission': 'other.fly'
},
{
'command': '/fly speed <1-10>',
'description': 'Set your flight speed',
'permission': 'fly.speed'
},
{
'command': '/flyreload',
'description': 'Reload plugin configuration',
'permission': 'fly.reload'
}
],
'links': {
'modrinth': 'https://modrinth.com/plugin/fly-simolzimol/',
'spigot': 'https://www.spigotmc.org/resources/fly.83164/',
'github': 'https://github.com/SimolZimol/',
'wiki': 'https://github.com/SimolZimol/fly-plugin/wiki',
'issues': 'https://github.com/SimolZimol/fly-plugin/issues'
},
'installation': [
'Download the latest JAR file',
'Place the JAR into your server plugins/ folder',
'Start the server to generate config.yml',
'Edit config.yml to customize messages and settings',
'Use /flyreload to apply changes without restart'
]
}
return render_template('project_detail.html', project=project)
@app.route('/projects/hoi4-elo-bot')
def hoi4_elo_bot():
"""Detailed page for HOI4 ELO Bot"""
project = {
'name': 'Hearts of Iron IV ELO Bot',
'tagline': 'Competitive ranking system for HOI4 communities',
'description': 'A sophisticated Discord bot designed specifically for Hearts of Iron IV multiplayer communities, featuring a complete ELO rating system similar to chess rankings.',
'long_description': '''This bot transforms casual gaming communities into structured competitive environments while maintaining
the fun and social aspects that make multiplayer gaming enjoyable. By providing objective performance metrics and historical tracking,
it helps players improve their skills and creates lasting engagement within gaming communities.''',
'version': '2.0',
'status': 'Production Ready',
'technologies': ['Python', 'Discord.py 2.3.2', 'MySQL', 'Docker', 'Coolify'],
'features': [
'Dual Rating Modes: Standard and Competitive gameplay',
'Chess-like ELO Algorithm with HOI4 modifications',
'T-Level System: Country tier-based multipliers',
'Intelligent draw handling with ELO adjustments',
'Comprehensive player statistics and analytics',
'Match history and leaderboards',
'Hybrid slash and text commands',
'Docker containerization support'
],
'commands': [
{
'command': '/hoi4create <type> <name>',
'description': 'Create new match (standard/competitive)',
'permission': 'User'
},
{
'command': '/hoi4setup <game> <@user> <team> <t-level>',
'description': 'Add player to match',
'permission': 'User'
},
{
'command': '/hoi4end <game> <winner/draw>',
'description': 'Complete match and process ELO',
'permission': 'User'
},
{
'command': '/hoi4stats [@user]',
'description': 'View detailed player statistics',
'permission': 'User'
},
{
'command': '/hoi4leaderboard [type] [limit]',
'description': 'Display ranked player lists',
'permission': 'User'
}
],
'technical_highlights': [
'Asynchronous Programming with Discord.py',
'Normalized database schema with performance optimization',
'Implementation of proven ELO rating algorithms',
'Comprehensive error handling and logging',
'Docker deployment with Coolify integration'
],
'links': {
'github': 'https://github.com/SimolZimol/',
'wiki': 'https://github.com/SimolZimol/hoi4-elo-bot/wiki',
'issues': 'https://github.com/SimolZimol/hoi4-elo-bot/issues',
'documentation': 'https://github.com/SimolZimol/hoi4-elo-bot/docs'
}
}
return render_template('project_detail.html', project=project)
@app.route('/projects/discord-ai-bot')
def discord_ai_bot():
"""Detailed page for Discord AI Bot — Moderation & Giveaways"""
project = {
'name': 'Discord AI Bot — Moderation & Giveaways',
'tagline': 'Production-ready moderation, restart-safe giveaways, and a web dashboard',
'description': 'Advanced moderation, persistent giveaway engine with Steam/Epic integration, and a Flask admin dashboard. Focused on reliability and UX.',
'long_description': (
'A production-ready Discord bot combining advanced moderation (warnings, temporary mutes with auto-restore), '
'a restart-safe giveaway system with UUID-based IDs and Steam URL parsing, and a complementary Flask web dashboard. '
'All active processes persist to MySQL and recover on startup.'
),
'version': '1.x',
'status': 'Active',
'technologies': ['Python', 'Discord.py', 'Flask', 'MySQL', 'aiohttp'],
'features': [
'Advanced Moderation: warnings, temp mutes, role restoration, detailed logs',
'Persistent Giveaways: UUID IDs, sponsor attribution, Steam URL parsing',
'Web Dashboard: Flask templates for admins and users',
'Reliability: restart-safe process recovery from MySQL',
'Clean UX: rich embeds, buttons, clear admin feedback'
],
'commands': [
{ 'command': '!warn/@warn', 'description': 'Issue a warning with audit trail', 'permission': 'Moderator' },
{ 'command': '!mute/@mute <time>', 'description': 'Temporary mute with auto-unmute and role restore', 'permission': 'Moderator' },
{ 'command': '!giveaway start ...', 'description': 'Start a giveaway with title/prize/duration/sponsor', 'permission': 'Admin' },
{ 'command': '!giveaway edit <uuid> ...', 'description': 'Edit and auto-update original giveaway message', 'permission': 'Admin' }
],
'links': {
'github': 'https://github.com/SimolZimol/'
},
'installation': [
'Create and configure MySQL database',
'Set Discord token and DB credentials as environment variables',
'Install Python dependencies',
'Run the bot and (optionally) the Flask dashboard'
]
}
return render_template('project_detail.html', project=project)
@app.route('/projects/discord-bot-stable-diffusion-amd')
def discord_bot_stable_diffusion_amd():
"""Detailed page for Discord Bot — Stable Diffusion (AMD)"""
project = {
'name': 'Discord Bot — Stable Diffusion (AMD)',
'tagline': 'AI image generation for AMD GPUs',
'description': 'Discord bot integrating Stable Diffusion image generation optimized for AMD GPUs with prompt-based commands.',
'long_description': (
'This project provides AI-powered text-to-image generation via Discord commands, with support optimized for AMD GPUs. '
'It focuses on reliable job handling, clean user experience, and practical configuration.'
),
'version': 'Latest',
'status': 'Active',
'technologies': ['Python', 'Discord.py', 'AI'],
'features': [
'Prompt-based image generation via slash or text commands',
'Optimized for AMD GPUs',
'Async processing and job queueing',
'Configurable parameters (model/prompt settings)'
],
'commands': [
{ 'command': '/sd generate <prompt>', 'description': 'Generate an image from a text prompt', 'permission': 'User' },
{ 'command': '/sd settings ...', 'description': 'View or adjust generation settings', 'permission': 'User' }
],
'links': {
'github': 'https://github.com/SimolZimol/Discord-Bot-stable-diffusion-AMD',
'issues': 'https://github.com/SimolZimol/Discord-Bot-stable-diffusion-AMD/issues'
},
'installation': [
'Install Python 3.10+',
'Set up required AI dependencies for AMD GPU support',
'Configure Discord token and model settings',
'Run the bot and test with a simple prompt'
]
}
return render_template('project_detail.html', project=project)
if __name__ == '__main__':
# Allow overriding via environment (e.g., Coolify sets PORT)
port = int(os.getenv('PORT', '5000'))
debug = os.getenv('FLASK_DEBUG', 'false').lower() == 'true'
app.run(debug=debug, host='0.0.0.0', port=port)