4 Commits

Author SHA1 Message Date
c6a6f4cd0c docker compose fixed
Some checks failed
CI / Check Style (push) Has been cancelled
CI / Run Clippy (push) Has been cancelled
CI / Run Tests (push) Has been cancelled
2026-05-20 19:46:36 +00:00
Priec
30db21f4af mobile phone resolution media player
Some checks failed
CI / Check Style (push) Has been cancelled
CI / Run Clippy (push) Has been cancelled
CI / Run Tests (push) Has been cancelled
2026-05-20 21:44:34 +02:00
Priec
a169999ff1 fixed title
Some checks failed
CI / Check Style (push) Has been cancelled
CI / Run Clippy (push) Has been cancelled
CI / Run Tests (push) Has been cancelled
2026-05-20 20:42:51 +02:00
Priec
8b175557dc fixing ceo n performance 2026-05-20 20:42:26 +02:00
25 changed files with 96 additions and 49 deletions

1
.gitignore vendored
View File

@@ -21,3 +21,4 @@ target/
.env.production .env.production
uploads/ uploads/
*.report.html *.report.html
favicon_io.zip

View File

@@ -4,6 +4,8 @@ gitara.farmeris.sk {
@static path /static/* @static path /static/*
header @static Cache-Control "public, max-age=2592000" header @static Cache-Control "public, max-age=2592000"
rewrite /favicon.ico /static/favicon/favicon.ico
reverse_proxy gitara-web:5150 reverse_proxy gitara-web:5150
} }

60
Cargo.lock generated
View File

@@ -1523,6 +1523,36 @@ dependencies = [
"wasip3", "wasip3",
] ]
[[package]]
name = "gitara_web"
version = "0.1.0"
dependencies = [
"async-trait",
"axum",
"axum-extra",
"bytes",
"chrono",
"dotenvy",
"fluent-templates",
"include_dir",
"insta",
"loco-rs",
"migration",
"regex",
"rstest",
"sea-orm",
"serde",
"serde_json",
"serial_test",
"time",
"tokio",
"tracing",
"tracing-subscriber",
"unic-langid",
"uuid",
"validator",
]
[[package]] [[package]]
name = "glob" name = "glob"
version = "0.3.3" version = "0.3.3"
@@ -5052,36 +5082,6 @@ version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "gitara_web"
version = "0.1.0"
dependencies = [
"async-trait",
"axum",
"axum-extra",
"bytes",
"chrono",
"dotenvy",
"fluent-templates",
"include_dir",
"insta",
"loco-rs",
"migration",
"regex",
"rstest",
"sea-orm",
"serde",
"serde_json",
"serial_test",
"time",
"tokio",
"tracing",
"tracing-subscriber",
"unic-langid",
"uuid",
"validator",
]
[[package]] [[package]]
name = "unsafe-libyaml" name = "unsafe-libyaml"
version = "0.2.11" version = "0.2.11"

View File

@@ -1,4 +1,4 @@
brand = Universal Web brand = My guitar
hello-world = Hello world! hello-world = Hello world!
meta-description = A guitar player's personal site. News, blog posts, albums, and songs in one place. meta-description = A guitar player's personal site. News, blog posts, albums, and songs in one place.
nav-home = Home nav-home = Home

View File

@@ -1,4 +1,4 @@
brand = Universal Web brand = My guitar
hello-world = Hello world! hello-world = Hello world!
meta-description = A guitar player's personal site. News, blog posts, albums, and songs in one place. meta-description = A guitar player's personal site. News, blog posts, albums, and songs in one place.
nav-home = Home nav-home = Home

View File

@@ -1,4 +1,4 @@
brand = Universal Web brand = Moja gitara
hello-world = Ahoj svet! hello-world = Ahoj svet!
meta-description = Osobná stránka gitaristu. Novinky, blog, albumy a skladby na jednom mieste. meta-description = Osobná stránka gitaristu. Novinky, blog, albumy a skladby na jednom mieste.
nav-home = Domov nav-home = Domov

View File

@@ -95,10 +95,13 @@
} }
/* === 3. Terminal look & feel ================================ */ /* === 3. Terminal look & feel ================================ */
/* Root font-size drives every rem in this file and in app.css.
* Bump this to scale the whole UI; drop to shrink. */
html { font-size: 19px; }
body { body {
font-family: "JetBrains Mono", "Cascadia Code", "Fira Code", font-family: "JetBrains Mono", "Cascadia Code", "Fira Code",
ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
font-size: 15px; font-size: 1rem;
line-height: 1.6; line-height: 1.6;
} }
@@ -142,7 +145,7 @@ body {
.t-green { color: oklch(var(--su)); } .t-green { color: oklch(var(--su)); }
.t-yellow { color: oklch(var(--wa)); } .t-yellow { color: oklch(var(--wa)); }
.t-red { color: oklch(var(--er)); } .t-red { color: oklch(var(--er)); }
.t-dim { color: oklch(var(--bc) / 0.5); } .t-dim { color: oklch(var(--bc) / 0.75); }
/* --- window titlebar (the header) -------------------------- */ /* --- window titlebar (the header) -------------------------- */
.term-titlebar { .term-titlebar {
@@ -230,7 +233,7 @@ body {
line-height: 1.15; line-height: 1.15;
color: oklch(var(--p)); color: oklch(var(--p));
} }
.term-sub { margin-top: 0.2rem; font-size: 0.85rem; color: oklch(var(--bc) / 0.55); } .term-sub { margin-top: 0.2rem; font-size: 0.85rem; color: oklch(var(--bc) / 0.8); }
.term-cmd-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; } .term-cmd-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }
/* --- responsive card grid ---------------------------------- */ /* --- responsive card grid ---------------------------------- */
@@ -529,13 +532,36 @@ body {
.uw-queue-remove:hover { color: oklch(var(--er)); border-color: oklch(var(--er)); } .uw-queue-remove:hover { color: oklch(var(--er)); border-color: oklch(var(--er)); }
@media (max-width: 640px) { @media (max-width: 640px) {
/* Two-row layout: [title][prev][next][queue][close] on top,
* full-width <audio> scrubber underneath. */
.uw-player-tag { display: none; } .uw-player-tag { display: none; }
.uw-player-title { max-width: 7rem; font-size: 0.95rem; } .uw-player-inner {
.uw-player-inner { padding: 0.75rem 0.95rem; gap: 0.6rem; } flex-wrap: wrap;
.uw-playing body { padding-bottom: 5.75rem; } padding: 0.6rem 0.75rem;
.uw-player-btn { min-width: 2.4rem; height: 2.4rem; padding: 0 0.4rem; font-size: 0.95rem; } gap: 0.4rem;
.uw-player-close { width: 2.4rem; height: 2.4rem; } row-gap: 0.5rem;
#uw-audio { height: 2.7rem; min-width: 7rem; } }
.uw-player-title {
flex: 1 1 auto;
min-width: 0;
max-width: none;
font-size: 0.95rem;
}
.uw-player-btn {
min-width: 2.2rem;
height: 2.2rem;
padding: 0 0.35rem;
font-size: 0.9rem;
}
.uw-player-close { width: 2.2rem; height: 2.2rem; font-size: 0.95rem; }
#uw-audio {
order: 99;
flex: 1 1 100%;
width: 100%;
min-width: 0;
height: 2.4rem;
}
.uw-playing body { padding-bottom: 8.25rem; }
.uw-queue-head, .uw-queue-item { padding-left: 0.95rem; padding-right: 0.95rem; } .uw-queue-head, .uw-queue-item { padding-left: 0.95rem; padding-right: 0.95rem; }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/static/favicon/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/static/favicon/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

File diff suppressed because one or more lines are too long

View File

@@ -4,6 +4,12 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{{ t(key="admin-title", lang=lang | default(value='sk')) }}{% endblock title %}</title> <title>{% block title %}{{ t(key="admin-title", lang=lang | default(value='sk')) }}{% endblock title %}</title>
<meta name="description" content="{% block meta_description %}{{ t(key="meta-description", lang=lang | default(value='sk')) }}{% endblock meta_description %}">
<link rel="icon" type="image/x-icon" href="/static/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon.png">
<link rel="manifest" href="/static/favicon/site.webmanifest">
<script> <script>
function applyTheme(t) { function applyTheme(t) {
var dark = t === 'dark' var dark = t === 'dark'
@@ -36,10 +42,10 @@
}); });
}); });
</script> </script>
<link href="/static/css/app.css" rel="stylesheet" type="text/css"> <link href="/static/css/app.css?v=2026-05-20b" rel="stylesheet" type="text/css">
{% block head %}{% endblock head %} {% block head %}{% endblock head %}
<link href="/static/css/theme.css" rel="stylesheet" type="text/css"> <link href="/static/css/theme.css?v=2026-05-20b" rel="stylesheet" type="text/css">
<script src="https://unpkg.com/htmx.org@1.9.12"></script> <script src="/static/vendor/htmx/htmx-1.9.12.min.js"></script>
<style> <style>
@media (min-width: 768px) { @media (min-width: 768px) {
.nav-menu { flex-direction: row; } .nav-menu { flex-direction: row; }

View File

@@ -4,6 +4,12 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{{ t(key="brand", lang=lang | default(value='sk')) }}{% endblock title %}</title> <title>{% block title %}{{ t(key="brand", lang=lang | default(value='sk')) }}{% endblock title %}</title>
<meta name="description" content="{% block meta_description %}{{ t(key="meta-description", lang=lang | default(value='sk')) }}{% endblock meta_description %}">
<link rel="icon" type="image/x-icon" href="/static/favicon/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon.png">
<link rel="manifest" href="/static/favicon/site.webmanifest">
<script> <script>
function applyTheme(t) { function applyTheme(t) {
var dark = t === 'dark' var dark = t === 'dark'
@@ -220,9 +226,9 @@
if (e.target.closest('#uw-close')) { uwClear(); return; } if (e.target.closest('#uw-close')) { uwClear(); return; }
}); });
</script> </script>
<link href="/static/css/app.css" rel="stylesheet" type="text/css"> <link href="/static/css/app.css?v=2026-05-20b" rel="stylesheet" type="text/css">
<link href="/static/css/theme.css" rel="stylesheet" type="text/css"> <link href="/static/css/theme.css?v=2026-05-20b" rel="stylesheet" type="text/css">
<script src="https://unpkg.com/htmx.org@1.9.12"></script> <script src="/static/vendor/htmx/htmx-1.9.12.min.js"></script>
<style> <style>
@media (min-width: 768px) { @media (min-width: 768px) {
.nav-menu { flex-direction: row; } .nav-menu { flex-direction: row; }

View File

@@ -1,9 +1,11 @@
services: services:
universal-web: gitara-web:
container_name: gitara-web container_name: gitara-web
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
extra_hosts:
- "host.docker.internal:host-gateway"
env_file: env_file:
- .env.production - .env.production
volumes: volumes:
@@ -24,4 +26,5 @@ networks:
volumes: volumes:
gitara_web_data: gitara_web_data:
external: true
name: gitara_web_data name: gitara_web_data

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
favicon/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

BIN
favicon/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1
favicon/site.webmanifest Normal file
View File

@@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}