commit 053272b71a362f79f9d7656123c3dde75d6e39b6 Author: Blulupo Date: Sat Jan 4 14:40:52 2025 +0100 new site diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..00f4127 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +APP_HOST=127.0.0.1 +APP_PORT=5000 +DEBUG=True +SECRET_KEY=yoursecretkey \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..33f74b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,132 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ +.idea/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# app +.vsls.json +.vscode +.vs + +/core/webapp/.fleet/run.json \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..9cd919c --- /dev/null +++ b/app.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright Hersel Giannella + +from quart import Quart +from config import config +from routes.home import route_home + +app = Quart(__name__) + +app.register_blueprint(route_home) + +if __name__ == '__main__': + app.run(debug=config.DEBUG, host=config.APP_HOST, port=config.APP_PORT) diff --git a/config.py b/config.py new file mode 100644 index 0000000..a577a0e --- /dev/null +++ b/config.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright Hersel Giannella + +from pydantic_settings import BaseSettings + +class Config(BaseSettings): + APP_HOST: str = "127.0.0.1" + APP_PORT: int = 5000 + DEBUG: bool = True + SECRET_KEY: str = "default_secret_key" + + class Config: + env_file = ".env" + +config = Config() diff --git a/hypercorn_config.toml b/hypercorn_config.toml new file mode 100644 index 0000000..f8bdda6 --- /dev/null +++ b/hypercorn_config.toml @@ -0,0 +1,3 @@ +bind = "127.0.0.1:5000" +workers = 1 +reload = true diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..894e4ad --- /dev/null +++ b/requirements.txt @@ -0,0 +1,22 @@ +aiofiles==24.1.0 +annotated-types==0.7.0 +blinker==1.9.0 +click==8.1.8 +Flask==3.1.0 +h11==0.14.0 +h2==4.1.0 +hpack==4.0.0 +Hypercorn==0.17.3 +hyperframe==6.0.1 +itsdangerous==2.2.0 +Jinja2==3.1.5 +MarkupSafe==3.0.2 +priority==2.0.0 +pydantic==2.10.4 +pydantic-settings==2.7.1 +pydantic_core==2.27.2 +python-dotenv==1.0.1 +Quart==0.20.0 +typing_extensions==4.12.2 +Werkzeug==3.1.3 +wsproto==1.2.0 diff --git a/routes/home.py b/routes/home.py new file mode 100644 index 0000000..f69d595 --- /dev/null +++ b/routes/home.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright Hersel Giannella + +from quart import Blueprint, render_template + +route_home = Blueprint('route_home', __name__) + +@route_home.route('/') +async def home(): + return await render_template('index.html') diff --git a/static/css/styles.css b/static/css/styles.css new file mode 100644 index 0000000..316bb3b --- /dev/null +++ b/static/css/styles.css @@ -0,0 +1,110 @@ +/* styles.css */ +body { + margin: 0; + padding: 0; + background: radial-gradient(circle, #000000, #1a1a1a); + color: white; + font-family: 'Courier New', Courier, monospace; + overflow: hidden; + } + + .black-hole-container { + position: relative; + width: 100%; + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + color: antiquewhite; + } + + .black-hole { + position: absolute; + width: 250px; + height: 250px; + background: radial-gradient(circle, rgba(0, 0, 0, 0.8), #000000); + border-radius: 50%; + box-shadow: 0 0 80px 40px rgba(0, 0, 0, 0.7); + animation: spin 2s linear infinite; + } + + @keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + + .content { + opacity: 0; + transform: translateY(30px); + animation: fadeIn 2s ease-in-out forwards 0.5s; + } + + @keyframes fadeIn { + to { + opacity: 1; + transform: translateY(0); + } + } + + #name { + font-size: 3.5rem; + letter-spacing: 3px; + margin-bottom: 10px; + color: #bfbfbf; /* Grigio chiaro per armonizzare con il tema */ + text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7); /* Ombra scura per contrasto */ + font-weight: bold; + } + + + + #subtitle { + font-size: 1.5rem; + margin-bottom: 30px; + } + + #skills .icon-link { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 1.2rem; + color: #ffffff; + text-decoration: none; + transition: color 0.3s ease; + } + + #skills .icon-link i { + font-size: 1.5rem; + } + + #skills .icon-link:hover { + color: #00c1ff; + } + + #social-links .social-link { + display: inline-flex; + align-items: center; + gap: 8px; + font-size: 1.2rem; + color: #ffffff; + text-decoration: none; + padding: 5px 10px; + border: 1px solid #ffffff; + border-radius: 5px; + transition: all 0.3s ease; + } + + #social-links .social-link i { + font-size: 1.5rem; + } + + #social-links .social-link:hover { + color: #000000; + background-color: #ffffff; + } + \ No newline at end of file diff --git a/static/js/main.js b/static/js/main.js new file mode 100644 index 0000000..b054583 --- /dev/null +++ b/static/js/main.js @@ -0,0 +1,10 @@ +const blackHole = document.querySelector('.black-hole'); + +blackHole.addEventListener('mouseover', () => { + blackHole.style.transform = 'scale(1.2)'; + blackHole.style.transition = 'transform 0.2s ease'; +}); + +blackHole.addEventListener('mouseout', () => { + blackHole.style.transform = 'scale(1)'; +}); diff --git a/templates/content/link.html b/templates/content/link.html new file mode 100644 index 0000000..614c02c --- /dev/null +++ b/templates/content/link.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/templates/content/skills.html b/templates/content/skills.html new file mode 100644 index 0000000..77fd702 --- /dev/null +++ b/templates/content/skills.html @@ -0,0 +1,10 @@ +
+ Python + Flask + PostgreSQL + PHP + Docker + HTML + CSS + JavaScript +
\ No newline at end of file diff --git a/templates/head.html b/templates/head.html new file mode 100644 index 0000000..ce523d6 --- /dev/null +++ b/templates/head.html @@ -0,0 +1,26 @@ + + + + Hersel Giannella - PortFolio + + + + + + + + + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..9997225 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,17 @@ + + +{% include "head.html" %} + +
+
+
+

Hersel Giannella

+

Analista Programmatore / Linux SysAdmin

+ {% include "content/skills.html" %} + {% include "content/link.html" %} + +
+
+ + +