feat: Initial commit - Hladinator (Water Reservoir Dashboard)
continuous-integration/drone/push Build encountered an error

- Setup React project with Vite and TypeScript
- Built dynamic UI supporting Dark/Light mode and CS/EN localization
- Added Lakes Overview grid with mock data for 40+ reservoirs
- Created interactive Recharts charts for water levels and flow rates
- Designed fully responsive premium mobile layout with custom SVG KPIs
- Developed TypeScript scraper scripts to fetch reservoir data
This commit is contained in:
David Fencl
2026-06-05 21:36:38 +02:00
parent ac43c24f20
commit a5bd4985d1
22 changed files with 4369 additions and 958 deletions
+95 -33
View File
@@ -1,38 +1,100 @@
export type Language = 'en' | 'cs';
export const translations = {
en: {
home: 'Home',
about: 'About',
contact: 'Contact',
timeBreaker: 'Time-Breaker',
welcome: 'WELCOME TO MY WORLD',
hello: "Hello, I'm",
job: 'a Developer.',
desc: "I use animation as a third dimension by which to simplify experiences and guiding through each and every interaction. I'm not adding motion just to spruce things up, but doing it in ways that matter.",
findMe: 'FIND WITH ME',
bestSkill: 'BEST SKILL ON',
aboutMe: 'About Me',
aboutDesc: 'I build accessible, pixel-perfect, and performant web experiences. Passionate about technology and design.',
getInTouch: 'Get In Touch',
contactDesc: 'Interested in working together?',
emailMe: 'Email me',
export const t = {
en: {
sidebar: {
favorites: 'Favorites',
lakes: 'Lakes',
map: 'Map',
settings: 'Settings'
},
cs: {
home: 'Domů',
about: 'O mně',
contact: 'Kontakt',
timeBreaker: 'Time-Breaker',
welcome: 'VÍTEJTE V MÉM SVĚTĚ',
hello: "Ahoj, jsem",
job: 'Vývojář.',
desc: "Používám animaci jako třetí rozměr, kterým zjednodušuji zážitky a provázím každou interakcí. Nepřidávám pohyb jen pro efekt, ale dělám to způsoby, které mají smysl.",
findMe: 'NAJDETE MĚ NA',
bestSkill: 'DOVEDNOSTI',
aboutMe: 'O mně',
aboutDesc: 'Tvořím přístupné, pixel-perfect a výkonné webové zážitky. Vášnivý pro technologie a design.',
getInTouch: 'Napište mi',
contactDesc: 'Máte zájem o spolupráci?',
emailMe: 'Napište mi',
topbar: {
search: 'Search river or reservoir (e.g. Lipno)...',
updated: 'Last updated:'
},
kpi: {
level: 'WATER LEVEL',
flow: 'FLOW RATE',
inflow: 'Inflow',
outflow: 'Outflow',
fullness: 'CAPACITY',
volume: 'Volume'
},
chart: {
title: 'Long-term development',
timeframe: 'Timeframe',
timeframeMobile: 'Time',
view: 'View',
raw: 'Raw data',
smoothed: 'Smoothed',
calendar: 'Calendar',
all: 'All',
year: 'Year',
level: 'Water level',
inflow: 'Inflow',
outflow: 'Outflow',
maxLevel: 'Max retention level',
storageLevel: 'Storage space level',
dataSources: 'Data sources:',
createdIn: 'Created with ♥ in the Czech Republic'
},
settings: {
title: 'Settings',
theme: 'Theme',
dark: 'Dark',
light: 'Light',
language: 'Language',
english: 'English',
czech: 'Čeština',
buyCoffee: 'Buy Me a Coffee'
}
},
cs: {
sidebar: {
favorites: 'Oblíbené',
lakes: 'Jezera',
map: 'Mapa',
settings: 'Nastavení'
},
topbar: {
search: 'Hledat tok nebo nádrž (např. Lipno)...',
updated: 'Aktualizováno:'
},
kpi: {
level: 'HLADINA',
flow: 'PRŮTOK',
inflow: 'Přítok',
outflow: 'Odtok',
fullness: 'NAPLNĚNOST',
volume: 'Objem'
},
chart: {
title: 'Dlouhodobý vývoj',
timeframe: 'Časové období',
timeframeMobile: 'Časové',
view: 'Zobrazení',
raw: 'Syrová data',
smoothed: 'Vyhlazená',
calendar: 'Kalendář',
all: 'Vše',
year: 'Rok',
level: 'Hladina',
inflow: 'Přítok',
outflow: 'Odtok',
maxLevel: 'Max. retenční hladina',
storageLevel: 'Hladina zásobního prostoru',
dataSources: 'Zdroje dat:',
createdIn: 'Vytvořeno s ♥ v České republice'
},
settings: {
title: 'Nastavení',
theme: 'Vzhled',
dark: 'Tmavý',
light: 'Světlý',
language: 'Jazyk',
english: 'English',
czech: 'Čeština',
buyCoffee: 'Kup mi kávu'
}
}
};