diff --git a/app.py b/app.py index 81b13ce..26f1489 100644 --- a/app.py +++ b/app.py @@ -1,11 +1,16 @@ import os -from flask import Flask, render_template, jsonify +from flask import Flask, Response, render_template, jsonify, send_from_directory +from flask.wrappers import Response +# Serve versions/version.json at /versions +@app.route('/versions') +def versions() -> Response: + return send_from_directory('versions', 'version.json', mimetype='application/json') app = Flask(__name__) # Main routes @app.route('/') -def home(): +def home() -> str: """Homepage with overview of Devanturas and featured projects""" projects = [ { @@ -72,7 +77,7 @@ def home(): return render_template('index.html', projects=projects) @app.route('/projects') -def projects(): +def projects() -> str: """Overview of all projects""" all_projects = [ { @@ -174,9 +179,9 @@ def projects(): return render_template('projects.html', projects=all_projects) @app.route('/minecraft') -def minecraft(): +def minecraft() -> str: """Dedicated Minecraft development page""" - minecraft_projects = [ + minecraft_projects: list[dict[str, str]] = [ { 'name': 'Fly Plugin', 'description': 'Flight plugin for survival servers', @@ -213,9 +218,9 @@ def minecraft(): return render_template('minecraft.html', projects=minecraft_projects, info=minecraft_info) @app.route('/about') -def about(): +def about() -> str: """About SimolZimol and Devanturas""" - skills = { + skills: dict[str, list[str]] = { 'Minecraft Development': [ 'Spigot & Paper Plugin Development', 'Java Programming', @@ -242,7 +247,7 @@ def about(): ] } - achievements = [ + achievements: list[dict[str, str]] = [ { 'title': 'Fly Plugin', 'description': 'Active on Modrinth & SpigotMC', @@ -263,9 +268,9 @@ def about(): return render_template('about.html', skills=skills, achievements=achievements) @app.route('/contact') -def contact(): +def contact() -> str: """Contact information and links""" - contact_links = [ + contact_links: list[dict[str, str]] = [ { 'name': 'GitHub', 'url': 'https://github.com/SimolZimol/', @@ -299,12 +304,12 @@ def contact(): # Healthcheck endpoint for platforms like Coolify @app.route('/health') -def health(): +def health() -> tuple[Response, Literal[200]]: return jsonify(status='ok'), 200 # Project detail pages @app.route('/projects/fly-plugin') -def fly_plugin(): +def fly_plugin() -> str: """Detailed page for Fly Plugin""" project = { 'name': 'Fly Plugin', @@ -364,7 +369,7 @@ def fly_plugin(): return render_template('project_detail.html', project=project) @app.route('/projects/hoi4-elo-bot') -def hoi4_elo_bot(): +def hoi4_elo_bot() -> str: """Detailed page for HOI4 ELO Bot""" project = { 'name': 'Hearts of Iron IV ELO Bot', @@ -427,7 +432,7 @@ def hoi4_elo_bot(): return render_template('project_detail.html', project=project) @app.route('/projects/discord-ai-bot') -def discord_ai_bot(): +def discord_ai_bot() -> str: """Detailed page for Discord AI Bot — Moderation & Giveaways""" project = { 'name': 'Multus', @@ -468,7 +473,7 @@ def discord_ai_bot(): return render_template('project_detail.html', project=project) @app.route('/projects/discord-bot-stable-diffusion-amd') -def discord_bot_stable_diffusion_amd(): +def discord_bot_stable_diffusion_amd() -> str: """Detailed page for Discord Bot — Stable Diffusion (AMD)""" project = { 'name': 'Discord Bot — Stable Diffusion (AMD)', @@ -505,7 +510,7 @@ def discord_bot_stable_diffusion_amd(): return render_template('project_detail.html', project=project) @app.route('/projects/levelcraft') -def levelcraft(): +def levelcraft() -> str: """Detailed page for LevelCraft (Closed Source)""" project = { 'name': 'LevelCraft', @@ -537,7 +542,7 @@ def levelcraft(): return render_template('project_detail.html', project=project) @app.route('/projects/simpleteleport') -def simpleteleport(): +def simpleteleport() -> str: """Detailed page for SimpleTeleport""" project = { 'name': 'SimpleTeleport', @@ -607,5 +612,5 @@ def simpleteleport(): 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' + debug: bool = os.getenv('FLASK_DEBUG', 'false').lower() == 'true' app.run(debug=debug, host='0.0.0.0', port=port) \ No newline at end of file diff --git a/versions/version.json b/versions/version.json new file mode 100644 index 0000000..2212420 --- /dev/null +++ b/versions/version.json @@ -0,0 +1,8 @@ +{ + "FlyPlugin": "2.3", + "LevelCraft": "Beta", + "SimpleTeleport": "1.0", + "Multus": "1.x", + "HOI4ELOBot": "0.8", + "DiscordBotStableDiffusionAMD": "dev-0.9.5" +}