feat: refresh dashboard design with fantasy RPG aesthetic
- Replace Inter font with Cinzel (headings) + Jura (body) - Deepen dark background palette with atmospheric gradient orbs - Add subtle noise texture overlay for depth - Refine glass cards with animated gradient border glow on hover - Sharpen accent colors: violet #8b5cf6 + cyan #22d3ee - Improve button tactile feedback and shadow system - Add k8s manifests for minikube local deployment Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: gmrelay-test
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: gmrelay-secrets
|
||||
namespace: gmrelay-test
|
||||
type: Opaque
|
||||
stringData:
|
||||
POSTGRES_PASSWORD: "TestPassword123"
|
||||
TELEGRAM_BOT_TOKEN: "8641931558:AAGBARuuTZUXX7V3YrtJwN3y_q0NUVkFrqk"
|
||||
TELEGRAM_BOT_USERNAME: "GmRelayTestBot"
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: gmrelay-config
|
||||
namespace: gmrelay-test
|
||||
data:
|
||||
ConnectionStrings__gmrelaydb: "Host=postgres;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=$(POSTGRES_PASSWORD)"
|
||||
Telegram__MiniAppUrl: ""
|
||||
ASPNETCORE_URLS: "http://+:8080"
|
||||
@@ -0,0 +1,68 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: postgres-pvc
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: postgres
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: postgres
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: postgres
|
||||
spec:
|
||||
containers:
|
||||
- name: postgres
|
||||
image: postgres:17-alpine
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
env:
|
||||
- name: POSTGRES_USER
|
||||
value: "gmrelay"
|
||||
- name: POSTGRES_DB
|
||||
value: "gmrelay_db"
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: POSTGRES_PASSWORD
|
||||
volumeMounts:
|
||||
- name: postgres-data
|
||||
mountPath: /var/lib/postgresql/data
|
||||
resources:
|
||||
requests:
|
||||
memory: "128Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "500m"
|
||||
volumes:
|
||||
- name: postgres-data
|
||||
persistentVolumeClaim:
|
||||
claimName: postgres-pvc
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: postgres
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
selector:
|
||||
app: postgres
|
||||
ports:
|
||||
- port: 5432
|
||||
targetPort: 5432
|
||||
@@ -0,0 +1,88 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: gmrelay-web
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gmrelay-web
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gmrelay-web
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: gmrelay-web:design-refresh
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: gmrelay-config
|
||||
env:
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: POSTGRES_PASSWORD
|
||||
- name: ConnectionStrings__gmrelaydb
|
||||
value: "Host=postgres;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=$(POSTGRES_PASSWORD)"
|
||||
- name: Telegram__BotToken
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: TELEGRAM_BOT_TOKEN
|
||||
- name: Telegram__BotUsername
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: TELEGRAM_BOT_USERNAME
|
||||
- name: Telegram__MiniAppUrl
|
||||
value: ""
|
||||
resources:
|
||||
requests:
|
||||
memory: "128Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "512Mi"
|
||||
cpu: "500m"
|
||||
volumeMounts:
|
||||
- name: dataprotection-keys
|
||||
mountPath: /app/dataprotection-keys
|
||||
volumes:
|
||||
- name: dataprotection-keys
|
||||
emptyDir: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: gmrelay-web
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
selector:
|
||||
app: gmrelay-web
|
||||
ports:
|
||||
- port: 8080
|
||||
targetPort: 8080
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: gmrelay-web
|
||||
namespace: gmrelay-test
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||
spec:
|
||||
rules:
|
||||
- host: gmrelay.local
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: gmrelay-web
|
||||
port:
|
||||
number: 8080
|
||||
@@ -0,0 +1,42 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: gmrelay-bot
|
||||
namespace: gmrelay-test
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gmrelay-bot
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gmrelay-bot
|
||||
spec:
|
||||
containers:
|
||||
- name: bot
|
||||
image: gmrelay-bot:design-refresh
|
||||
ports:
|
||||
- containerPort: 8081
|
||||
env:
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: POSTGRES_PASSWORD
|
||||
- name: ConnectionStrings__gmrelaydb
|
||||
value: "Host=postgres;Port=5432;Database=gmrelay_db;Username=gmrelay;Password=$(POSTGRES_PASSWORD)"
|
||||
- name: Telegram__BotToken
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gmrelay-secrets
|
||||
key: TELEGRAM_BOT_TOKEN
|
||||
- name: Telegram__MiniAppUrl
|
||||
value: ""
|
||||
resources:
|
||||
requests:
|
||||
memory: "128Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "256Mi"
|
||||
cpu: "500m"
|
||||
@@ -10,7 +10,7 @@
|
||||
<ResourcePreloader />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700&family=Cinzel:wght@400;600;700&family=Jura:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="@Assets["app.css"]" />
|
||||
<link rel="stylesheet" href="@Assets["GmRelay.Web.styles.css"]" />
|
||||
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
||||
|
||||
@@ -30,8 +30,9 @@
|
||||
|
||||
/* === Error UI === */
|
||||
#blazor-error-ui {
|
||||
background: var(--bg-secondary);
|
||||
border-top: 1px solid var(--border-color);
|
||||
background: var(--status-danger-bg);
|
||||
color: var(--status-danger);
|
||||
border-top: 1px solid rgba(239, 68, 68, 0.15);
|
||||
bottom: 0;
|
||||
box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.3);
|
||||
box-sizing: border-box;
|
||||
@@ -41,8 +42,9 @@
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
color: var(--text-secondary);
|
||||
font-size: 0.875rem;
|
||||
font-family: 'Jura', sans-serif;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
#blazor-error-ui .reload {
|
||||
|
||||
@@ -23,12 +23,11 @@
|
||||
}
|
||||
|
||||
.nav-brand-text {
|
||||
font-family: 'Cinzel Decorative', 'Cinzel', serif;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 700;
|
||||
background: var(--accent-gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
letter-spacing: 0.04em;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.nav-toggle {
|
||||
@@ -87,9 +86,10 @@
|
||||
}
|
||||
|
||||
.nav-section ::deep .nav-item.active {
|
||||
background: rgba(124, 58, 237, 0.15);
|
||||
color: var(--accent-primary);
|
||||
border: 1px solid rgba(124, 58, 237, 0.2);
|
||||
background: linear-gradient(135deg, rgba(139, 92, 246, 0.15) 0%, rgba(34, 211, 238, 0.08) 100%);
|
||||
color: var(--text-accent);
|
||||
border: 1px solid rgba(139, 92, 246, 0.25);
|
||||
box-shadow: 0 0 12px rgba(139, 92, 246, 0.1);
|
||||
}
|
||||
|
||||
.nav-icon {
|
||||
@@ -145,7 +145,7 @@
|
||||
border: 1px solid transparent;
|
||||
border-radius: var(--radius-sm);
|
||||
color: var(--text-muted);
|
||||
font-family: 'Inter', sans-serif;
|
||||
font-family: 'Jura', sans-serif;
|
||||
font-size: 0.8125rem;
|
||||
cursor: pointer;
|
||||
transition: all var(--transition-normal);
|
||||
|
||||
+551
-110
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user