4 Commits

Author SHA1 Message Date
Sweetbread 8c36a3e3a6 Add some services 2025-10-11 02:06:30 +03:00
Sweetbread 4b6449a7a0 Change host info 2025-10-11 02:06:30 +03:00
Sweetbread 3fefa976ea Improve style
- Add more depth to .block
- Make footer lighter
- Stylize scrollbar
2025-10-11 02:06:30 +03:00
Sweetbread d0e38f14ac Add mine page 2025-10-11 02:06:30 +03:00
13 changed files with 104 additions and 56 deletions
+2 -3
View File
@@ -1,6 +1,5 @@
from os import system as console from os import system as console
from configparser import ConfigParser from configparser import ConfigParser
from flask_mobility import Mobility
from flask import ( from flask import (
Flask, Flask,
g, g,
@@ -30,7 +29,6 @@ def get_locale():
return request.accept_languages.best_match(('en', 'ru', 'de', 'fr', 'ja'), 'en') return request.accept_languages.best_match(('en', 'ru', 'de', 'fr', 'ja'), 'en')
app = Flask(__name__) app = Flask(__name__)
Mobility(app)
@app.before_request @app.before_request
@@ -61,6 +59,7 @@ def inject_translations():
if app.debug: if app.debug:
console("sass static/style/main.scss static/style/main.css") console("sass static/style/main.scss static/style/main.css")
console("sass static/style/risdeveau.scss static/style/risdeveau.css")
@app.route("/") @app.route("/")
def index(): def index():
@@ -76,4 +75,4 @@ def us():
@app.route("/risdeveau") @app.route("/risdeveau")
def risdeveau(): def risdeveau():
return render_template('personal/risdeveau/index.html') return render_template('personal/risdeveau.html')
+2
View File
@@ -15,6 +15,8 @@ gitea = Open-Source, selbst gehosteter Git-Repository-Hoster
matrix = Föderierter Messenger matrix = Föderierter Messenger
copyparty = Cloud-Dateispeicher copyparty = Cloud-Dateispeicher
4get = Proxy-Suchmaschine 4get = Proxy-Suchmaschine
tools = Satz verschiedener Werkzeuge
vert = Dateiumwandler
[host] [host]
+2
View File
@@ -15,6 +15,8 @@ gitea = Opensource selfhosted Git repository hosting
matrix = federated instant messenger matrix = federated instant messenger
copyparty = cloud file storage copyparty = cloud file storage
4get = proxy search engine 4get = proxy search engine
tools = set of various tools
vert = file converter
[host] [host]
+2
View File
@@ -15,6 +15,8 @@ gitea = Hébergement de dépôts Git open source en auto-hébergé
matrix = Messagerie fédérée matrix = Messagerie fédérée
copyparty = Stockage de fichiers en cloud copyparty = Stockage de fichiers en cloud
4get = Moteur de recherche proxy 4get = Moteur de recherche proxy
tools = ensemble d'outils variés
vert = convertisseur de fichiers
[host] [host]
+2
View File
@@ -15,6 +15,8 @@ gitea = オープンソースのセルフホスティングGitリポジトリ
matrix = 連合型メッセンジャー matrix = 連合型メッセンジャー
copyparty = クラウドファイルストレージ copyparty = クラウドファイルストレージ
4get = プロキシ検索エンジン 4get = プロキシ検索エンジン
tools = 様々なツールのセット
vert = ファイル変換ツール
[host] [host]
+2
View File
@@ -15,6 +15,8 @@ gitea = Selfhosted хранилище Git-репозиториев со своб
matrix = федеративный мессенджер matrix = федеративный мессенджер
copyparty = облачное хранилище файлов copyparty = облачное хранилище файлов
4get = прокси-поисковик 4get = прокси-поисковик
tools = набор разнообразных утилит
vert = конвертация файлов
[host] [host]
-1
View File
@@ -1,3 +1,2 @@
Flask==3.1.1 Flask==3.1.1
flask_mobility
gunicorn gunicorn
+39 -4
View File
@@ -54,9 +54,10 @@ h1 {
a { a {
color: unset; color: unset;
text-decoration: underline; text: {
text-decoration-color: $blue; decoration: underline {color: $blue};
text-underline-offset: 1px; underline-offset: 1px;
}
transition: 0.3s ease; transition: 0.3s ease;
&:hover { &:hover {
@@ -90,7 +91,6 @@ ul {
header { header {
display: flex; display: flex;
flex-direction: row-reverse;
justify-content: space-between; justify-content: space-between;
background-color: $mantle; background-color: $mantle;
padding: .5rem; padding: .5rem;
@@ -171,12 +171,47 @@ footer {
} }
} }
.badges {
.block {
flex: 1;
text-wrap-mode: nowrap;
text-align: -webkit-center;
&:hover {
flex: 1.5;
transform: none;
}
}
}
.icon { .icon {
width: 1.5em; width: 1.5em;
vertical-align: middle; vertical-align: middle;
border-radius: .2em; border-radius: .2em;
} }
::-webkit-scrollbar {
width: .5rem;
&-button {
display: none;
}
&-track {
background-color: $base;
}
&-thumb {
background-color: $overlay0;
border-radius: .25rem;
&:hover {
background-color: $overlay1;
}
}
}
@font-face { @font-face {
font-family: Monocraft; font-family: Monocraft;
src: url("/static/font/Monocraft.ttc"); src: url("/static/font/Monocraft.ttc");
+33
View File
@@ -0,0 +1,33 @@
h3 {
margin-block-end: 0;
}
.qr {
img { width: 100% }
p { text-align: center; }
&.blocks {
flex-wrap: nowrap;
overflow-x: auto;
width: calc(100vw - 1rem);
max-width: 45rem;
scroll: {
behavior: smooth;
snap-type: x mandatory;
}
&::-webkit-scrollbar { display: none; }
&:hover .block.qr:not(:hover) {
filter: blur(5px);
transition: all 0.3s ease;
}
}
&.block {
flex: 0 0 calc(100vw - 2rem);
scroll-snap-align: start;
max-width: 13.666rem;
}
}
+6 -4
View File
@@ -1,4 +1,10 @@
<header> <header>
{%- if request.path != url_for('index') %}
<a href="{{ url_for('index') }}">Coders Squad</a>
{%- else %}
<div></div>
{%- endif %}
<div class="header-links"> <div class="header-links">
{%- for (l, t) in ( {%- for (l, t) in (
('us', _('about us')), ('us', _('about us')),
@@ -11,8 +17,4 @@
{%- endif %} {%- endif %}
{%- endfor %} {%- endfor %}
</div> </div>
{%- if request.path != url_for('index') %}
<a href="{{ url_for('index') }}">Coders Squad</a>
{%- endif %}
</header> </header>
+2 -2
View File
@@ -13,9 +13,9 @@
<ul> <ul>
<li>CPU: Ryzen i9@3.4GHz (4 cores)</li> <li>CPU: Ryzen i9@3.4GHz (4 cores)</li>
<li>RAM: 8 GiB</li> <li>RAM: 8 GiB</li>
<li>SSD: 150 GiB</li> <li>SSD: 150 GB</li>
<li>ETH: 500Mb/s</li> <li>ETH: 500Mb/s</li>
<li>Loc: Portugal</li> <li>Loc: Deutchland, Frankfurt am Mein</li>
</ul> </ul>
</div> </div>
{% endblock %} {% endblock %}
+2
View File
@@ -25,6 +25,8 @@
<p><a href="https://m.codrs.ru" target="_blank"><strong>Matrix</strong></a> &mdash; {{ _('index.descr:matrix') }}</p> <p><a href="https://m.codrs.ru" target="_blank"><strong>Matrix</strong></a> &mdash; {{ _('index.descr:matrix') }}</p>
<p><a href="https://c.codrs.ru" target="_blank"><strong>Copyparty</strong></a> &mdash; {{ _('index.descr:copyparty') }}</p> <p><a href="https://c.codrs.ru" target="_blank"><strong>Copyparty</strong></a> &mdash; {{ _('index.descr:copyparty') }}</p>
<p><a href="https://s.codrs.ru" target="_blank"><strong>4get</strong></a> &mdash; {{ _('index.descr:4get') }}</p> <p><a href="https://s.codrs.ru" target="_blank"><strong>4get</strong></a> &mdash; {{ _('index.descr:4get') }}</p>
<p><a href="https://tools.codrs.ru" target="_blank"><strong>IT-tools</strong></a> &mdash; {{ _('index.descr:tools') }}</p>
<p><a href="https://vert.codrs.ru" target="_blank"><strong>Vert</strong></a> &mdash; {{ _('index.descr:vert') }}</p>
</div> </div>
<div class="block"> <div class="block">
@@ -4,6 +4,7 @@
<title>Sweet Bread</title> <title>Sweet Bread</title>
<link rel="stylesheet" href="/static/style/main.css"> <link rel="stylesheet" href="/static/style/main.css">
<link rel="stylesheet" href="/static/style/risdeveau.css">
<link rel="icon" type="image/webp" href="/static/icon/us/risdeveau.webp" /> <link rel="icon" type="image/webp" href="/static/icon/us/risdeveau.webp" />
<script <script
src="https://track.codrs.ru/api/script.js" src="https://track.codrs.ru/api/script.js"
@@ -11,49 +12,12 @@
defer defer
></script> ></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
h3 {
margin-block-end: 0;
}
{% if g.is_mobile %}
.qr img { width: 100%; }
.blocks.qr {
flex-wrap: nowrap;
overflow-x: auto;
width: calc(100vw - 1rem);
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
}
.blocks.qr::-webkit-scrollbar { display: none; }
.block.qr {
flex: 0 0 calc(100vw - 2rem);
scroll-snap-align: start;
max-width: 16rem;
}
{% else %}
.qr img { width: 13.66rem; /* (x + 1) * 3 + 1 = 45 */ }
{% endif %}
.qr p {
text-align: center;
}
.badges .block {
flex: 1;
text-wrap-mode: nowrap;
}
.badges .block:hover {
flex: 1.5;
transform: none;
}
</style>
</head> </head>
<body> <body>
<header>
<a href="{{ url_for('index') }}">Coders Squad</a>
</header>
<main> <main>
<h3>Development</h3> <h3>Development</h3>
<div class="blocks badges"> <div class="blocks badges">
@@ -74,14 +38,18 @@
<h3>Contacts</h3> <h3>Contacts</h3>
<div class="blocks badges"> <div class="blocks badges">
<a class="block" href="https://matrix.to/#/@risdeveau:codrs.ru"> <a class="block" href="https://matrix.to/#/@risdeveau:codrs.ru">
<img class="icon" src="https://matrix.org/assets/favicon.ico" />
Matrix Matrix
</a> </a>
<a class="block" href="//b.codrs.ru/@risdeveau"> <a class="block" href="//b.codrs.ru/@risdeveau">
<img class="icon" src="/static/icon/service/sharkey.webp" /> <img class="icon" src="/static/icon/service/sharkey.webp" />
Fediverse Fediverse
</a> </a>
<a class="block" href="https://discord.com/users/459823895256498186">
<img class="icon" src="https://cdn.prod.website-files.com/6257adef93867e50d84d30e2/66e3d80db9971f10a9757c99_Symbol.svg" />
Discord
</a>
<a class="block" href="mailto:risdeveau@codrs.ru"> <a class="block" href="mailto:risdeveau@codrs.ru">
<img class="icon" src="" />
Mail Mail
</a> </a>
</div> </div>