modified: app.py

new file:   versions/version.json
This commit is contained in:
SimolZimol
2025-12-23 17:25:19 +01:00
parent 324a2e93bb
commit aa5564573f
2 changed files with 31 additions and 18 deletions

41
app.py
View File

@@ -1,11 +1,16 @@
import os 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__) app = Flask(__name__)
# Main routes # Main routes
@app.route('/') @app.route('/')
def home(): def home() -> str:
"""Homepage with overview of Devanturas and featured projects""" """Homepage with overview of Devanturas and featured projects"""
projects = [ projects = [
{ {
@@ -72,7 +77,7 @@ def home():
return render_template('index.html', projects=projects) return render_template('index.html', projects=projects)
@app.route('/projects') @app.route('/projects')
def projects(): def projects() -> str:
"""Overview of all projects""" """Overview of all projects"""
all_projects = [ all_projects = [
{ {
@@ -174,9 +179,9 @@ def projects():
return render_template('projects.html', projects=all_projects) return render_template('projects.html', projects=all_projects)
@app.route('/minecraft') @app.route('/minecraft')
def minecraft(): def minecraft() -> str:
"""Dedicated Minecraft development page""" """Dedicated Minecraft development page"""
minecraft_projects = [ minecraft_projects: list[dict[str, str]] = [
{ {
'name': 'Fly Plugin', 'name': 'Fly Plugin',
'description': 'Flight plugin for survival servers', 'description': 'Flight plugin for survival servers',
@@ -213,9 +218,9 @@ def minecraft():
return render_template('minecraft.html', projects=minecraft_projects, info=minecraft_info) return render_template('minecraft.html', projects=minecraft_projects, info=minecraft_info)
@app.route('/about') @app.route('/about')
def about(): def about() -> str:
"""About SimolZimol and Devanturas""" """About SimolZimol and Devanturas"""
skills = { skills: dict[str, list[str]] = {
'Minecraft Development': [ 'Minecraft Development': [
'Spigot & Paper Plugin Development', 'Spigot & Paper Plugin Development',
'Java Programming', 'Java Programming',
@@ -242,7 +247,7 @@ def about():
] ]
} }
achievements = [ achievements: list[dict[str, str]] = [
{ {
'title': 'Fly Plugin', 'title': 'Fly Plugin',
'description': 'Active on Modrinth & SpigotMC', 'description': 'Active on Modrinth & SpigotMC',
@@ -263,9 +268,9 @@ def about():
return render_template('about.html', skills=skills, achievements=achievements) return render_template('about.html', skills=skills, achievements=achievements)
@app.route('/contact') @app.route('/contact')
def contact(): def contact() -> str:
"""Contact information and links""" """Contact information and links"""
contact_links = [ contact_links: list[dict[str, str]] = [
{ {
'name': 'GitHub', 'name': 'GitHub',
'url': 'https://github.com/SimolZimol/', 'url': 'https://github.com/SimolZimol/',
@@ -299,12 +304,12 @@ def contact():
# Healthcheck endpoint for platforms like Coolify # Healthcheck endpoint for platforms like Coolify
@app.route('/health') @app.route('/health')
def health(): def health() -> tuple[Response, Literal[200]]:
return jsonify(status='ok'), 200 return jsonify(status='ok'), 200
# Project detail pages # Project detail pages
@app.route('/projects/fly-plugin') @app.route('/projects/fly-plugin')
def fly_plugin(): def fly_plugin() -> str:
"""Detailed page for Fly Plugin""" """Detailed page for Fly Plugin"""
project = { project = {
'name': 'Fly Plugin', 'name': 'Fly Plugin',
@@ -364,7 +369,7 @@ def fly_plugin():
return render_template('project_detail.html', project=project) return render_template('project_detail.html', project=project)
@app.route('/projects/hoi4-elo-bot') @app.route('/projects/hoi4-elo-bot')
def hoi4_elo_bot(): def hoi4_elo_bot() -> str:
"""Detailed page for HOI4 ELO Bot""" """Detailed page for HOI4 ELO Bot"""
project = { project = {
'name': 'Hearts of Iron IV ELO Bot', 'name': 'Hearts of Iron IV ELO Bot',
@@ -427,7 +432,7 @@ def hoi4_elo_bot():
return render_template('project_detail.html', project=project) return render_template('project_detail.html', project=project)
@app.route('/projects/discord-ai-bot') @app.route('/projects/discord-ai-bot')
def discord_ai_bot(): def discord_ai_bot() -> str:
"""Detailed page for Discord AI Bot — Moderation & Giveaways""" """Detailed page for Discord AI Bot — Moderation & Giveaways"""
project = { project = {
'name': 'Multus', 'name': 'Multus',
@@ -468,7 +473,7 @@ def discord_ai_bot():
return render_template('project_detail.html', project=project) return render_template('project_detail.html', project=project)
@app.route('/projects/discord-bot-stable-diffusion-amd') @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)""" """Detailed page for Discord Bot — Stable Diffusion (AMD)"""
project = { project = {
'name': 'Discord Bot — Stable Diffusion (AMD)', 'name': 'Discord Bot — Stable Diffusion (AMD)',
@@ -505,7 +510,7 @@ def discord_bot_stable_diffusion_amd():
return render_template('project_detail.html', project=project) return render_template('project_detail.html', project=project)
@app.route('/projects/levelcraft') @app.route('/projects/levelcraft')
def levelcraft(): def levelcraft() -> str:
"""Detailed page for LevelCraft (Closed Source)""" """Detailed page for LevelCraft (Closed Source)"""
project = { project = {
'name': 'LevelCraft', 'name': 'LevelCraft',
@@ -537,7 +542,7 @@ def levelcraft():
return render_template('project_detail.html', project=project) return render_template('project_detail.html', project=project)
@app.route('/projects/simpleteleport') @app.route('/projects/simpleteleport')
def simpleteleport(): def simpleteleport() -> str:
"""Detailed page for SimpleTeleport""" """Detailed page for SimpleTeleport"""
project = { project = {
'name': 'SimpleTeleport', 'name': 'SimpleTeleport',
@@ -607,5 +612,5 @@ def simpleteleport():
if __name__ == '__main__': if __name__ == '__main__':
# Allow overriding via environment (e.g., Coolify sets PORT) # Allow overriding via environment (e.g., Coolify sets PORT)
port = int(os.getenv('PORT', '5000')) 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) app.run(debug=debug, host='0.0.0.0', port=port)

8
versions/version.json Normal file
View File

@@ -0,0 +1,8 @@
{
"FlyPlugin": "2.3",
"LevelCraft": "Beta",
"SimpleTeleport": "1.0",
"Multus": "1.x",
"HOI4ELOBot": "0.8",
"DiscordBotStableDiffusionAMD": "dev-0.9.5"
}