448 lines
19 KiB
Python
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) |