37 Commits

Author SHA1 Message Date
Streamer272 afa2563be2 🔨 Replaces GPG key and CV
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-27 17:40:16 +02:00
Streamer272 aae5382c1b 🌐 Translates exit message
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 13:43:21 +02:00
Streamer272 a62ee1b834 💄 Adds ssh connection closed section
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 13:18:34 +02:00
Streamer272 6e31a8f66c 💄 Reworks footer
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 13:15:05 +02:00
Streamer272 09a0479f79 📄 Adds GPLv3 license
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 13:01:48 +02:00
Streamer272 c311f776d8 💄 Changes UI structure
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 13:01:15 +02:00
Streamer272 8760d75ad0 🔨 Reworks about me section
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 10:54:53 +02:00
Streamer272 d188c2354b 🌐 Updates translations to match english version
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 10:13:55 +02:00
Streamer272 1f88a763b1 📝 Fixes README
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 09:57:16 +02:00
Streamer272 8c087e6322 Adds nav bar
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 08:53:10 +02:00
Streamer272 f3f36110c9 ⬆️ Updates dependencies
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-24 08:07:41 +02:00
Streamer272 1ce575fb61 Adds primary email and updates GPG key
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-18 13:03:47 +02:00
Streamer272 3a0a34ce12 🐛 Fixes GPG key link
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-14 13:21:10 +02:00
Streamer272 b056924b1a 🔨 Changes GPG key to online OpenGPG version
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-12 22:10:28 +02:00
Streamer272 bfd337bfc6 Adds public GPG key
Signed-off-by: Ash Svitan <selfsigned-ash@proton.me>
2026-04-12 21:51:48 +02:00
Streamer272 a988dec5ba Changes name and email 2026-04-12 18:58:12 +02:00
Streamer272 b1347c7948 🐛 Fixes flash of unstyled content 2026-04-12 18:56:04 +02:00
Streamer272 0bbc4da441 Changes matrix and signal links 2026-03-24 16:04:24 +01:00
Streamer272 b247e93a83 🐛 Fixes runtime ofetch missing error 2026-02-18 11:20:43 +01:00
Streamer272 8527c355ba 💄 Adds selfie 2026-02-18 10:57:48 +01:00
Streamer272 784817b154 💄 Makes minor content adjustments 2026-01-19 11:13:32 +01:00
Streamer272 067b0467b5 🐳 Fixes docker build 2026-01-17 16:54:31 +01:00
Streamer272 d8d8130eef 🐛 Fixes arrow link color 2026-01-17 16:19:13 +01:00
Streamer272 6be5249510 💄 Adds Mocha Catppuccin Tailwind theme 2026-01-17 16:11:50 +01:00
Streamer272 f79ee8ad41 🚧 Adds tailwindcss catppuccin 2026-01-16 19:45:59 +01:00
Streamer272 2159b41406 🐳 Adds dockerignore 2026-01-16 19:24:08 +01:00
Streamer272 6c1a205e22 🐛 Fixes fonts 2026-01-16 13:49:05 +01:00
Streamer272 aad76695ff 💄 Fixes table CSS 2026-01-15 14:09:48 +01:00
Streamer272 c1f059a25c 🐳 Dockerizes app 2026-01-15 14:03:52 +01:00
Streamer272 03a7f0a354 🐛 Fixes html table 2026-01-15 14:03:43 +01:00
Streamer272 30c9bd8702 Adds rest of main text 2026-01-15 13:16:42 +01:00
Streamer272 a6c44cd1e6 Adds intro and contacts 2026-01-15 11:02:11 +01:00
Streamer272 d7874818a3 🚚 Copies over files from old repo 2026-01-15 09:54:38 +01:00
Streamer272 55be806a99 🎉 Inits nuxt 2026-01-15 09:27:20 +01:00
Streamer272 c14d145247 Adds CV
Gitea Build Action / build-astro (push) Successful in 9m27s
2025-12-17 11:02:39 +01:00
Streamer272 da6a25019e Adds #gcloud to green school project
Gitea Build Action / build-astro (push) Successful in 9m29s
2025-10-25 13:16:59 +02:00
Streamer272 775cf060f8 🐛 Fixes redirecting takes seconds
Gitea Build Action / build-astro (push) Successful in 9m26s
2025-10-22 17:52:45 +02:00
46 changed files with 3176 additions and 2291 deletions
+30 -207
View File
@@ -1,230 +1,53 @@
### VisualStudioCode template
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Dependencies (installed inside container)
# Local History for Visual Studio Code
.history/
node_modules
# Built Visual Studio Code Extensions
*.vsix
# Nuxt build artifacts
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
.nuxt
.output
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Vite / Nuxt caches
# AWS User-specific
.idea/**/aws.xml
.cache
node_modules/.cache
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Astro template
# Gitignore template for Astro projects
# Ignore content collection generated files
.astro
### Node template
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
bun-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Env files (copy explicitly if needed)
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
.env.*
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# OS / editor junk
# Next.js build output
.next
out
.DS_Store
Thumbs.db
.idea
.vscode
# Nuxt.js build / generate output
.nuxt
dist
# Git
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
.git
.gitignore
# vuepress build output
.vuepress/dist
# Docker
# vuepress v2.x temp and cache directory
.temp
.cache
Dockerfile
docker-compose.yml
# Docusaurus cache and generated files
.docusaurus
# Tests / coverage
# Serverless directories
.serverless/
coverage
*.spec.*
*.test.*
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Temporary files
*.tmp
*.swp
-19
View File
@@ -1,19 +0,0 @@
name: Gitea Build Action
run-name: ${{ gitea.actor }} build
on: [push]
jobs:
build-astro:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Bun 1.2.0
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.2.0
- name: Display Bun version
run: bun --version
- name: "Install dependencies"
run: bun install
- name: "Build"
run: bun run build
+16 -607
View File
@@ -1,615 +1,24 @@
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Node dependencies
node_modules
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Astro template
# Gitignore template for Astro projects
# Ignore content collection generated files
.astro
### Node template
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Misc
.DS_Store
.fleet
.idea
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
# Local env files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### VisualStudio template
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
.env.*
!.env.example
-8
View File
@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
-7
View File
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>
-15
View File
@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>
-12
View File
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MaterialThemeProjectNewConfig">
<option name="metadata">
<MTProjectMetadataState>
<option name="migrated" value="true" />
<option name="pristineConfig" value="false" />
<option name="userId" value="7f428ce3:194b3be50bd:-7ffe" />
</MTProjectMetadataState>
</option>
</component>
</project>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/svitan.dev.iml" filepath="$PROJECT_DIR$/.idea/svitan.dev.iml" />
</modules>
</component>
</project>
-16
View File
@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/node_modules/astro/templates" />
</list>
</option>
</component>
</module>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
-4
View File
@@ -1,4 +0,0 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
-11
View File
@@ -1,11 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
+20 -6
View File
@@ -1,11 +1,25 @@
FROM oven/bun:latest
# use the official Bun image
# see all versions at https://hub.docker.com/r/oven/bun/tags
FROM oven/bun:1 AS build
WORKDIR /app
COPY package.json bun.lock* ./
# use ignore-scripts to avoid building node modules like better-sqlite3
RUN bun install --frozen-lockfile --ignore-scripts
# Copy the entire project
COPY . .
RUN bun install
RUN bun run build
RUN bun install --global serve
RUN bun --bun run build
EXPOSE 3000
CMD ["serve", "dist"]
# copy production dependencies and source code into final image
FROM oven/bun:1 AS production
WORKDIR /app
# Only `.output` folder is needed from the build stage
COPY --from=build /app/.output /app
# run the app
EXPOSE 3000/tcp
ENTRYPOINT [ "bun", "--bun", "run", "/app/server/index.mjs" ]
+3 -2
View File
@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
My personal portfolio website
Copyright (C) 2025 Daniel Svitaň
Copyright (C) 2026 Ash Svitan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
svitan.dev Copyright (C) 2025 Daniel Svitaň
svitan.dev Copyright (C) 2026 Ash Svitan
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -672,3 +672,4 @@ may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
+10 -4
View File
@@ -1,7 +1,13 @@
## svitan.dev
# svitan.dev
My personal portfolio website, written in [Astro](https://astro.build/)
My personal portfolio
### License
### Development
This project is licensed under the [GNU GPLv3](LICENSE) license
```sh
bun run dev
```
### Production
See [Dockerfile](Dockerfile)
+9
View File
@@ -0,0 +1,9 @@
<template>
<NuxtLayout>
<UApp>
<UMain>
<NuxtPage />
</UMain>
</UApp>
</NuxtLayout>
</template>
+7
View File
@@ -0,0 +1,7 @@
@import "tailwindcss";
@import "@nuxt/ui";
@import "@catppuccin/tailwindcss/mocha.css";
@theme {
--font-mono: "JetBrains Mono", monospace;
}
+21
View File
@@ -0,0 +1,21 @@
<template>
<NuxtLink :to="props.link" target="_blank">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 512 512"
width="16"
height="16"
class="w-4 h-4 fill-ctp-text"
>
<path
d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z"
/>
</svg>
</NuxtLink>
</template>
<script lang="ts" setup>
const props = defineProps<{
link: string;
}>();
</script>
+8
View File
@@ -0,0 +1,8 @@
<template>
<p class="mb-4">
[<span class="text-green-500">ash@ash-arch</span>&nbsp;<span
class="text-blue-500"
>~</span
>]$ <slot />
</p>
</template>
+33
View File
@@ -0,0 +1,33 @@
<template>
<slot />
</template>
<style>
html,
body {
margin: 0;
width: 100%;
height: 100%;
overflow-x: hidden;
scroll-behavior: smooth;
}
</style>
<script lang="ts" setup>
import "../assets/global.css";
useHead({
title: "Daniel's portfolio",
meta: [
{
name: "author",
content: "Daniel Svitan (streamer272 / selfsigned-ash)",
},
{ name: "description", content: "Daniel Svitan's portfolio" },
{ name: "keywords", content: "Daniel Svitan portfolio CV" },
],
bodyAttrs: {
class: "mocha bg-ctp-base text-ctp-text",
},
});
</script>
+557
View File
@@ -0,0 +1,557 @@
<template>
<div
class="w-screen h-full flex items-center justify-start flex-col font-mono"
>
<div class="w-1 h-10 shrink-10" />
<div
class="w-[90vw] sm:w-[80vw] m:w-[70vw] lg:w-[60vw] xl:w-[50vw] border-solid border-ctp-text border p-6 shrink-0 overflow-auto relative"
>
<div class="absolute top-2 right-2 flex gap-x-2">
<button
v-for="locale in locales.filter(
(l) => l.code !== $i18n.locale
)"
@click="setLocale(locale.code)"
class="cursor-pointer underline"
>
{{ locale.code.toUpperCase() }}
</button>
</div>
<section>
<BashPrompt>cat README.md</BashPrompt>
<h1 class="text-xl mr-12 mt-4">
{{ $t("main.intro.0") }}
<span class="font-bold">{{ $t("main.intro.1") }}</span
>, {{ $t("main.intro.2") }}{{ years
}}{{ $t("main.intro.3") }}
</h1>
<a href="/cv2.pdf" target="_blank" class="underline">
{{ $t("main.cv") }}
</a>
</section>
<section>
<BashPrompt>ls .</BashPrompt>
<div class="flex items-center flex-wrap gap-x-4">
<ul>
<li>
<a href="#experience" class="underline">
{{ $t("main.experience.title") }}
</a>
</li>
<li>
<a href="#education" class="underline">
{{ $t("main.education.title") }}
</a>
</li>
</ul>
<ul>
<li>
<a href="#skills" class="underline">
{{ $t("main.skills.title") }}
</a>
</li>
<li>
<a href="#projects" class="underline">
{{ $t("main.projects.title") }}
</a>
</li>
</ul>
<ul>
<li>
<a href="#about-me" class="underline">
{{ $t("main.about.title") }}
</a>
</li>
<li>
<a href="#contacts" class="underline">
{{ $t("main.contacts.title") }}
</a>
</li>
</ul>
</div>
</section>
<section>
<BashPrompt>feh images/selfie.png</BashPrompt>
<div class="flex justify-center w-full">
<NuxtImg
src="/images/selfie.png"
alt="Selfie"
class="w-80"
/>
</div>
</section>
<section id="experience">
<BashPrompt>cat {{ $t("main.experience.title") }}</BashPrompt>
<table class="w-full">
<thead>
<tr>
<th class="max-w-48">
<p class="px-1">
{{ $t("main.experience.header.when") }}
</p>
</th>
<th>
<p class="px-1">
{{
$t("main.experience.header.occupation")
}}
</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ $t("main.experience.0.when") }}</td>
<td>
{{ $t("main.experience.0.occupation") }}<br />
{{ $t("main.experience.0.occupation.details") }}
<ul class="list-disc mt-2">
<li>
{{ $t("main.experience.0.details.0") }}
</li>
<li>
{{ $t("main.experience.0.details.1") }}
</li>
<li>
{{ $t("main.experience.0.details.2") }}
</li>
<li>
{{ $t("main.experience.0.details.3") }}
</li>
</ul>
<p class="mt-2 flex items-center gap-x-1">
{{ $t("main.experience.publications") }}
<ArrowLink
link="https://ieeexplore.ieee.org/document/10844607"
/>
</p>
</td>
</tr>
</tbody>
</table>
</section>
<section id="education">
<BashPrompt>cat {{ $t("main.education.title") }}</BashPrompt>
<table class="w-full">
<thead>
<tr>
<th class="max-w-48">
<p class="px-1">
{{ $t("main.education.header.when") }}
</p>
</th>
<th>
<p class="px-1">
{{ $t("main.education.header.where") }}
</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ $t("main.education.0.when") }}</td>
<td>{{ $t("main.education.0.where") }}</td>
</tr>
<tr>
<td>{{ $t("main.education.1.when") }}</td>
<td>{{ $t("main.education.1.where") }}</td>
</tr>
<tr>
<td>{{ $t("main.education.2.when") }}</td>
<td>{{ $t("main.education.2.where") }}</td>
</tr>
</tbody>
</table>
</section>
<section id="skills">
<BashPrompt>cat {{ $t("main.skills.title") }}</BashPrompt>
<ul>
<li>{{ $t("main.skills.languages") }}</li>
<li>{{ $t("main.skills.data-science") }}</li>
<li>{{ $t("main.skills.sysadmin") }}</li>
<li>{{ $t("main.skills.frontend") }}</li>
<li>{{ $t("main.skills.backend") }}</li>
<li>{{ $t("main.skills.database") }}</li>
<li>{{ $t("main.skills.math") }}</li>
<li>{{ $t("main.skills.other") }}</li>
</ul>
<p class="mt-2">{{ $t("main.skills.0") }}</p>
<p>{{ $t("main.skills.1") }}</p>
<p>{{ $t("main.skills.2") }}</p>
<p>{{ $t("main.skills.3") }}</p>
<p>{{ $t("main.skills.4") }}</p>
</section>
<section id="projects">
<BashPrompt>cat {{ $t("main.projects.title") }}</BashPrompt>
<table class="w-full">
<thead>
<tr>
<th class="max-w-60">
<p class="px-1">
{{ $t("main.projects.header.name") }}
</p>
</th>
<th class="max-w-28">
<p class="px-1">
{{ $t("main.projects.header.reference") }}
</p>
</th>
<th>
<p class="px-1">
{{ $t("main.projects.header.description") }}
</p>
</th>
<th class="max-w-32">
<p class="px-1">
{{ $t("main.projects.header.tags") }}
</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ $t("main.projects.0.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://gitea.svitan.dev/Streamer272/soc-2024"
/>
<ArrowLink
link="https://github.com/Streamer272/soc-2024"
/>
</td>
<td>{{ $t("main.projects.0.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.0.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.0.tags.1") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.1.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://gitea.svitan.dev/Streamer272/state-soc-cross"
/>
</td>
<td>{{ $t("main.projects.1.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.1.tags.0") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.2.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://gitea.svitan.dev/Streamer272/door-alarm"
/>
</td>
<td>{{ $t("main.projects.2.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.2.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.2.tags.1") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.3.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://github.com/Streamer272/green-school"
/>
<ArrowLink link="https://zelena.svr.sk/" />
</td>
<td>{{ $t("main.projects.3.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.3.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.3.tags.1") }}
</span>
<span class="hashtag">
{{ $t("main.projects.3.tags.2") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.4.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://github.com/Streamer272/automod"
/>
</td>
<td>{{ $t("main.projects.4.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.4.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.4.tags.1") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.5.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://gitea.svitan.dev/Streamer272/pwetty"
/>
</td>
<td>{{ $t("main.projects.5.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.5.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.5.tags.1") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.6.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://gitea.svitan.dev/Streamer272/keys"
/>
</td>
<td>{{ $t("main.projects.6.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.6.tags.0") }}
</span>
</td>
</tr>
<tr>
<td>{{ $t("main.projects.7.name") }}</td>
<td class="flex gap-x-2">
<ArrowLink
link="https://github.com/7274-dev/AdventnaVyzva-React"
/>
<ArrowLink link="https://github.com/7274-dev" />
</td>
<td>{{ $t("main.projects.7.description") }}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">
{{ $t("main.projects.7.tags.0") }}
</span>
<span class="hashtag">
{{ $t("main.projects.7.tags.1") }}
</span>
</td>
</tr>
</tbody>
</table>
<p class="mt-1">{{ $t("main.projects.footer") }}</p>
</section>
<section id="about-me">
<BashPrompt>cat {{ $t("main.about.title") }}</BashPrompt>
<p>{{ $t("main.about.residence") }}</p>
<p>{{ $t("main.about.citizenship") }}</p>
<p>{{ $t("main.about.0") }}</p>
<p>{{ $t("main.about.1") }}</p>
<p>{{ $t("main.about.2") }}</p>
<p>{{ $t("main.about.3") }}</p>
</section>
<section id="contacts">
<BashPrompt>cat {{ $t("main.contacts.title") }}</BashPrompt>
<ul class="list-none">
<li>
<a
href="mailto:selfsigned-ash@proton.me"
target="_blank"
class="underline"
>
selfsigned-ash@proton.me</a
>
/
<a
href="mailto:ash@svitan.dev"
target="_blank"
class="underline"
>
ash@svitan.dev</a
>
(<a href="/key.asc" target="_blank" class="underline"
>{{ $t("main.contacts.gpg") }} </a
>)
</li>
<li>
<a
href="tel:+421948309804"
target="_blank"
class="underline"
>
+421 948 309 804</a
>&nbsp;<a
href="https://signal.me/#eu/spS_7L9Ln0xOql7JZMEusWCSmR95-cMnVTgB-zbQBVM54M6FUnRBUZMjGmr-_6qA"
target="_blank"
class="underline"
>
{{ $t("main.contacts.signal") }}
</a>
</li>
<li>
<a
href="https://matrix.to/#/@selfsigned-ash:matrix.org"
target="_blank"
class="underline"
>
@selfsigned-ash:matrix.org
</a>
</li>
</ul>
<div class="h-4" />
<p>{{ $t("main.socials.title") }}</p>
<ul class="list-none">
<li>
<a
href="https://github.com/Streamer272"
target="_blank"
class="underline"
>
GitHub
</a>
</li>
<li>
<a
href="https://gitea.svitan.dev/Streamer272"
target="_blank"
class="underline"
>
Gitea
</a>
</li>
<li>
<a
href="https://codeberg.org/selfsigned-ash"
target="_blank"
class="underline"
>
Codeberg
</a>
</li>
<li>
<a
href="https://kolektiva.social/@selfsigned_ash"
rel="me"
target="_blank"
class="underline"
>
Mastodon
</a>
</li>
<li>
<a
href="https://pixelfed.de/selfsigned-ash"
target="_blank"
class="underline"
>
Pixelfed
</a>
</li>
</ul>
</section>
<section>
<BashPrompt>exit</BashPrompt>
<p>{{ $t("main.exit") }}</p>
</section>
<footer class="flex justify-center">
<p>
{{ $t("main.footer.0") }} |
<a
href="https://gitea.svitan.dev/Streamer272/svitan.dev"
target="_blank"
class="underline"
>
{{ $t("main.footer.1") }}
</a>
{{ $t("main.footer.2") }}
</p>
</footer>
</div>
<div class="w-1 h-10 shrink-0" />
</div>
</template>
<style>
td {
vertical-align: top;
}
td.flex {
padding: 0.25rem 0 0.5rem 0;
}
th {
text-align: left;
font-weight: normal;
font-style: italic;
font-size: 1.05rem;
}
tr,
thead {
border-bottom: 1px solid var(--catppuccin-color-text);
}
tr:last-of-type {
border-bottom: none;
}
.hashtag {
padding: 0 0.25rem;
border: 1px solid var(--catppuccin-color-text);
border-radius: 1rem;
}
section {
margin-bottom: 2rem;
}
</style>
<script lang="ts" setup>
const { locales, setLocale } = useI18n();
const now = new Date();
let years = now.getFullYear() - 2006 - 1;
if (now.getMonth() > 7 || (now.getMonth() === 7 && now.getDate() >= 23)) {
years++;
}
</script>
-21
View File
@@ -1,21 +0,0 @@
// @ts-check
import {defineConfig} from 'astro/config';
import tailwindcss from '@tailwindcss/vite';
import vue from '@astrojs/vue';
// https://astro.build/config
export default defineConfig({
site: "https://svitan.dev",
vite: {
// @ts-ignore
plugins: [tailwindcss()]
},
integrations: [vue()],
i18n: {
locales: ["en", "sk", "de"],
defaultLocale: "en",
routing: {
prefixDefaultLocale: true,
}
}
});
+2056 -611
View File
File diff suppressed because it is too large Load Diff
+93
View File
@@ -0,0 +1,93 @@
{
"main.intro.0": "Hallo, ich bin ",
"main.intro.1": "Ash (Daniel) Svitan",
"main.intro.2": "ein ",
"main.intro.3": "-jähriger Aktivist und aufstrebend Ingenieur",
"main.cv": "Sehen Sie sich meinen Lebenslauf an",
"main.experience.title": "./erfahrung",
"main.experience.header.when": "Wann",
"main.experience.header.occupation": "Beruf und Details",
"main.experience.0.when": "Juli 2024 Dezember 2025",
"main.experience.0.occupation": "Datenwissenschaftler",
"main.experience.0.occupation.details": "Fakultät für Elektronik und Informatik, Slowakische Technische Universität in Bratislava (FEI STU)",
"main.experience.0.details.0": "Erstellung eines Datenbeschriftungssystems für das neuronale Netzwerk zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.1": "Beitrag zum neuronalen Netzwerk zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.2": "Erstellung eines Qualitätsklassifizierungssystems auf Basis des neuronalen Netzwerks zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.3": "Verfasste den Tom & Jerry LabChart Text File Dynamic Sync Algorithm",
"main.experience.publications": "Veröffentlichungen:",
"main.education.title": "./ausbildung",
"main.education.header.when": "Wann",
"main.education.header.where": "Wo",
"main.education.0.when": "2024 heute",
"main.education.0.where": "Evanjelické Lýceum Bratislava 5-jähriges zweisprachiges Gymnasium",
"main.education.1.when": "2023 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave 8-jähriges Gymnasium",
"main.education.2.when": "2022 2023",
"main.education.2.where": "Del Mar High School in San Jose, Kalifornien, Vereinigte Staaten von Amerika",
"main.skills.title": "./fähigkeiten",
"main.skills.languages": "> Sprachen: Slowakisch (Muttersprache), Englisch (C1), Deutsch (B1)",
"main.skills.data-science": "> Datenwissenschaft: PyTorch (neuronale Netze), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "> Sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "> Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "> Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "> Datenbank: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "> Mathematik: Kalkulus (1), Statistik, Lineare Algebra",
"main.skills.other": "> Sonstiges: Führerschein Klasse B (Slowakei), LibreOffice",
"main.skills.0": "Da ich zu Hause einen eigenen Debian-Server habe, habe ich mehrere Apps und Projekte selbst gehostet, darunter Nextcloud, Immich, Gitea, Prometheus+Grafana, WireGuard Easy und viele mehr.",
"main.skills.1": "Ich leite sie alle über meinen Caddy-Reverse-Proxy weiter, aber da mein Server hinter NAT steht, habe ich auch einen VPS, der über einen Tunnel mit meinem Server verbunden ist und den gesamten Datenverkehr über diesen Tunnel an meinen Server weiterleitet.",
"main.skills.2": "Ich schütze mich auch vor Datenverlust mit einem RAIDZ1-ZFS-Pool, regelmäßigen Backups (monatlich auf ein mir gehörendes externes physisches Laufwerk und alle zwei Tage auf einen Cloud-Speicher) und regelmäßigen ZFS-Scrubs.",
"main.skills.3": "Und alles ist verschlüsselt, mein Pool und beide Backups mit einer zufällig generierten Binärdatei.",
"main.skills.4": "Natürlich habe ich auch Erfahrung mit Systemadministration und Linux-Systemen, da ich täglich mit Arch Linux arbeite.",
"main.projects.title": "./projekte",
"main.projects.header.name": "Name",
"main.projects.header.reference": "Referenz",
"main.projects.header.description": "Beschreibung",
"main.projects.header.tags": "Tags",
"main.projects.0.name": "SOČ 2024/2025 Arbeit",
"main.projects.0.description": "Forschungsarbeit mit dem Titel \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", die den ersten Platz in der regionalen Runde des Wettbewerbs gewonnen hat",
"main.projects.0.tags.0": "#statistiken",
"main.projects.0.tags.1": "#forschung",
"main.projects.1.name": "Staatliche SOC-Kreuzvernehmung",
"main.projects.1.description": "Kreuzverhör der Ergebnisse des slowakischen staatlichen SOC-Wettbewerbs und Analyse der Voreingenommenheit der Richter",
"main.projects.1.tags.0": "#statistiken",
"main.projects.2.name": "Türalarm",
"main.projects.2.description": "Ein selbstgebauter Türalarm auf Basis von Entfernungsmessungen mit Ultraschallsensoren",
"main.projects.2.tags.0": "#elektronik",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Grüne Schule",
"main.projects.3.description": "Eine Website für einen Schulklub von Umweltschützern",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.3.tags.2": "#gcloud",
"main.projects.4.name": "Automod",
"main.projects.4.description": "Ein Discord-Bot für meine lokale Community",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "Ein sehr, sehr einfacher JSON-Prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "Ein sehr einfacher Client-Server-basierter Keylogger für Windows, Linux und MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.7.name": "Advents-Challenge",
"main.projects.7.description": "Eine interaktive, spielähnliche App für Kinder mit Adventsmotiv",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "Und viele andere Closed-Source-Projekte, insbesondere Verträge und viele Projekten bei FEI STU (einschließlich mehrerer Algorithmen und Beschriftungs-/Datenverarbeitungssysteme, die sich hauptsächlich mit biomedizinischen Signalen wie EKG oder PPG befassen).",
"main.about.title": "./über-mich",
"main.about.residence": "> Wohnort: Bratislava, Slowakei",
"main.about.citizenship": "> Staatsbürgerschaft: Slowakei - EU-Bürger",
"main.about.0": "Im Moment bin ich ziemlich mit der Schule und meinem Privatleben beschäftigt, aber ich finde trotzdem noch etwas Zeit, um an verschiedenen Projekten zu arbeiten. Ich interessiere mich sehr für MINT-Fächer im Allgemeinen, deshalb versuche ich immer, zumindest einen Teil meiner Freizeit dafür zu nutzen. Bisher habe ich mich hauptsächlich mit Informatik und Datenwissenschaft beschäftigt, habe aber auch einige Erfahrungen in Elektrotechnik und ähnlichen Bereichen.",
"main.about.1": "Ich bin auch Aktivist. Politisch gesehen bin ich linksorientiert und setze mich nachdrücklich für Demokratie, Autonomie sowie Befreiung und Emanzipation ein. Ich akzeptiere alle ethnischen Gruppen, Nationalitäten, Religionen, sexuellen Orientierungen, Geschlechtsidentitäten, Altersgruppen usw. Ich verachte diejenigen, die Reichtümer horten, während andere hungern, und diejenigen, die Minderheiten aktiv gefährden. Ich bin außerdem Veganer und engagiere mich regelmäßig für den Tierschutz, sei es bei „Cubes of Truth“, bei Vorträgen über die Ausbeutung von Tieren oder durch ehrenamtliche Arbeit in Tierheimen. Gemeinschaft, gegenseitige Hilfe und Freiheit sind mir wichtig. Außerdem bin ich ein überzeugter Befürworter von freier und quelloffener Software.",
"main.about.2": "Nach dem Matura möchte ich Maschinenbau studieren. Ich möchte meinen Bachelor an der Technischen Hochschule Nürnberg Georg Simon Ohm machen. Für den Master und die Promotion ziehe ich die TU München, die TU Berlin, die TU Wien und die ETH Zürich in Betracht. Meine beiden Eltern sind erfolgreiche Ingenieure (allerdings im Bereich Chemie, nicht Maschinenbau), daher habe ich hohe Erwartungen zu erfüllen.",
"main.about.3": "Neben MINT-Fächern und Politik gehe ich gerne spazieren, höre Musik und spiele gelegentlich Videospiele.",
"main.contacts.title": "./kontakte",
"main.contacts.gpg": "meinen öffentlichen GPG-Schlüssel bekommen",
"main.contacts.signal": "(Sie können mir eine Nachricht über Signal senden)",
"main.socials.title": "Soziale Netzwerke:",
"main.exit": "Die Verbindung zu 45.136.31.184 wurde geschlossen.",
"main.footer.0": "Copyleft 🄯 2026",
"main.footer.1": "der Quellcode",
"main.footer.2": ""
}
+93
View File
@@ -0,0 +1,93 @@
{
"main.intro.0": "Hi, I'm ",
"main.intro.1": "Ash (Daniel) Svitan",
"main.intro.2": " a ",
"main.intro.3": " year-old activist and aspiring engineer",
"main.cv": "Look at my CV",
"main.experience.title": "./experience",
"main.experience.header.when": "When",
"main.experience.header.occupation": "Occupation and details",
"main.experience.0.when": "July 2024 - December 2025",
"main.experience.0.occupation": "Data scientist",
"main.experience.0.occupation.details": "Faculty of Electronics and Informatics, Slovak Technical University in Bratislava (FEI STU)",
"main.experience.0.details.0": "Created data labeling system for the ECG quality classification neural network",
"main.experience.0.details.1": "Contributed to the ECG quality classification neural network",
"main.experience.0.details.2": "Created quality classification system based on ECG quality classification neural network",
"main.experience.0.details.3": "Wrote the Tom & Jerry LabChart Text File Dynamic Sync Algorithm",
"main.experience.publications": "Publications:",
"main.education.title": "./education",
"main.education.header.when": "When",
"main.education.header.where": "Where",
"main.education.0.when": "2024 - present",
"main.education.0.where": "Evanjelické Lýceum Bratislava - 5-year Bilingual Gymnasium (high school)",
"main.education.1.when": "2023 - 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave - 8-year Gymnasium (high school)",
"main.education.2.when": "2022 - 2023",
"main.education.2.where": "Del Mar High School in San Jose, California, United States of America",
"main.skills.title": "./skills",
"main.skills.languages": "> languages: Slovak (native), English (C1), German (B1)",
"main.skills.data-science": "> data science: PyTorch (neural networks), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "> sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "> frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "> backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "> database: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "> math: Calculus (1), Statistics, Linear algebra",
"main.skills.other": "> other: Driver license type B (Slovak), LibreOffice",
"main.skills.0": "Having my own Debian server at home, I've self-hosted multiple apps and projects, including Nextcloud, Immich, Gitea, Prometheus+Grafana, WireGuard Easy, and many more.",
"main.skills.1": "I route them all through my Caddy reverse proxy, but since my server is behind a NAT, I also have a VPS that is connected to my server through a tunnel and routes all of the traffic to my server through that tunnel.",
"main.skills.2": "I also protect myself against data loss with a RAIDZ1 ZFS pool, regular backups (monthly to an off-site physical drive owned by me and every two days to a cloud storage box), and regular ZFS Scrubs.",
"main.skills.3": "And everything is encrypted, my pool and both backups with a randomly generated binary file.",
"main.skills.4": "Needless to say, I've got some experience with system administration as well as Linux systems, since I also daily drive Arch Linux.",
"main.projects.title": "./projects",
"main.projects.header.name": "Name",
"main.projects.header.reference": "Reference",
"main.projects.header.description": "Description",
"main.projects.header.tags": "Tags",
"main.projects.0.name": "SOČ 2024/2025 Paper",
"main.projects.0.description": "Research paper entitled \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", which won first place in the regional round of the competition",
"main.projects.0.tags.0": "#statistics",
"main.projects.0.tags.1": "#research",
"main.projects.1.name": "State SOČ Cross Examination",
"main.projects.1.description": "Cross examination of the Slovak State SOC Competition results and the analysis of the judges' bias",
"main.projects.1.tags.0": "#statistics",
"main.projects.2.name": "Door alarm",
"main.projects.2.description": "A home-made door alarm based on ultrasound sensor distance measurements",
"main.projects.2.tags.0": "#electronics",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Green school",
"main.projects.3.description": "A website for a school club of environmentalists",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.3.tags.2": "#gcloud",
"main.projects.4.name": "Automod",
"main.projects.4.description": "A discord bot for my local community",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "A very, very simple json prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "A very simple client-server based keylogger for Windows, Linux, and MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.7.name": "Advent challange",
"main.projects.7.description": "An interactive game-like app for kids with an advent theme",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "And many other closed-source projects, especially contracts and multiple projects at FEI STU (including multiple algorithms and labeling / data processing systems, mostly concerned with bio-medical signals like ECG or PPG).",
"main.about.title": "./about-me",
"main.about.residence": "> residence: Bratislava, Slovakia",
"main.about.citizenship": "> citizenship: Slovakia - EU citizen",
"main.about.0": "Currently, I'm pretty pre-occupied with school and my personal life, but I still find some time to work on various projects. I am really interested in STEM in general, so I always try to dedicate at least some part of my free time to it. Until now, I have mostly been doing computer science and data science, but I also have some experience with electrical engineering and whatnot.",
"main.about.1": "I'm also an activist. Politically, I am a leftist, with strong commitments to democracy, automony, and liberation and emancipation. I am accepting of all races, nationalities, religions, sexualities, gender identities, ages, etc. I despise those who hoard wealth while others starve, and those who actively endanger minorities. I am also vegan and I frequently participate in animal rights activism, whether it is cubes of truth, lectures about animal exploitation, or volunteering at animal sanctuaries. I value community, mutual aid, and freedom. I am also a staunch supporter of free and open source software.",
"main.about.2": "After I finish high school, I want to study mechanical engineering. I want to get my bachelors at the Technische Hochschule Nürnberg Georg Simon Ohm. For masters and PhD, I am considering TU München, TU Berlin, TU Wien, and ETH Zürich. Both my parents are successful engineers (chemical, not mechanical though), so I have a lot to live up to.",
"main.about.3": "Other than STEM and politics, I also enjoy going on walks, listening to music, and occasionally playing videogames.",
"main.contacts.title": "./contacts",
"main.contacts.gpg": "get my public GPG key",
"main.contacts.signal": "(you can text me on Signal)",
"main.socials.title": "Socials:",
"main.exit": "Connection to 45.136.31.184 closed.",
"main.footer.0": "Copyleft 🄯 2026",
"main.footer.1": "source",
"main.footer.2": ""
}
+93
View File
@@ -0,0 +1,93 @@
{
"main.intro.0": "Ahoj, som ",
"main.intro.1": "Ash (Daniel) Svitaň",
"main.intro.2": "",
"main.intro.3": " ročný aktivista a aspirujúci inžinier",
"main.cv": "Pozrite si moje CV",
"main.experience.title": "./skúsenosti",
"main.experience.header.when": "Kedy",
"main.experience.header.occupation": "Povolanie a podrobnosti",
"main.experience.0.when": "Júl 2024 December 2025",
"main.experience.0.occupation": "Dátový vedec",
"main.experience.0.occupation.details": "Fakulta elektrotechniky a informatiky, Slovenská technická univerzita v Bratislave (FEI STU)",
"main.experience.0.details.0": "Vytvoril systém označovania údajov pre neurónovú sieť klasifikácie kvality EKG",
"main.experience.0.details.1": "Prispel k neurónovej sieti klasifikácie kvality EKG",
"main.experience.0.details.2": "Vytvoril systém klasifikácie kvality založený na neurónovej sieti klasifikácie kvality EKG",
"main.experience.0.details.3": "Napísal algoritmus dynamickej synchronizácie textových súborov Tom & Jerry LabChart",
"main.experience.publications": "Publikácie:",
"main.education.title": "./vzdelanie",
"main.education.header.when": "Kedy",
"main.education.header.where": "Kde",
"main.education.0.when": "2024 súčasnosť",
"main.education.0.where": "Evanjelické Lýceum Bratislava 5-ročné bilingválne gymnázium",
"main.education.1.when": "2023 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave 8-ročné gymnázium",
"main.education.2.when": "2022 2023",
"main.education.2.where": "Del Mar High School v San Jose, Kalifornia, Spojené štáty americké",
"main.skills.title": "./zručnosti",
"main.skills.languages": "> jazyky: slovenčina (rodný jazyk), angličtina (C1), nemčina (B1)",
"main.skills.data-science": "> dátová veda: PyTorch (neurónové siete), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "> sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "> frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "> backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "> databáza: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "> matematika: kalkulus (1), štatistika, lineárna algebra",
"main.skills.other": "> ostatné: Vodičský preukaz typu B (slovenský), LibreOffice",
"main.skills.0": "Keďže mám doma vlastný Debian server, sám som hostoval viacero aplikácií a projektov, vrátane Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy a mnoho ďalších.",
"main.skills.1": "Všetky smerujem cez môj reverse proxy Caddy, ale keďže môj server je za NAT, mám aj VPS, ktorý je pripojený k môjmu serveru cez tunel a smeruje všetky dáta na môj server cez tento tunel.",
"main.skills.2": "Chránim sa aj pred stratou dát pomocou RAIDZ1 ZFS pool, pravidelných záloh (mesačne na fyzický disk mimo lokality, ktorý vlastním, a každé dva dni do cloudového úložiska) a pravidelných ZFS Scrubs.",
"main.skills.3": "A všetko je šifrované, môj pool aj obe zálohy pomocou náhodne generovaného binárneho súboru.",
"main.skills.4": "Netreba dodávať, že mám určité skúsenosti so správou systémov, ako aj so systémami Linux, keďže denne používam Arch Linux.",
"main.projects.title": "./projekty",
"main.projects.header.name": "Názov",
"main.projects.header.reference": "Referencia",
"main.projects.header.description": "Popis",
"main.projects.header.tags": "Tagy",
"main.projects.0.name": "SOČ 2024/2025 Práca",
"main.projects.0.description": "Výskumná práca s názvom \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", ktorá získala prvé miesto v krajskom kole súťaže",
"main.projects.0.tags.0": "#štatistika",
"main.projects.0.tags.1": "#výskum",
"main.projects.1.name": "Štátna SOČ analýza výsledkov",
"main.projects.1.description": "Krížová kontrola výsledkov slovackej štátnej súťaže SOČ a analýza zaujatosti porotcov",
"main.projects.1.tags.0": "#štatistika",
"main.projects.2.name": "Dverový alarm",
"main.projects.2.description": "Domáci dverový alarm založený na meraní vzdialenosti ultrazvukovým senzorom",
"main.projects.2.tags.0": "#elektronika",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Zelená škola",
"main.projects.3.description": "Webová stránka pre školský klub environmentalistov",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.3.tags.2": "#gcloud",
"main.projects.4.name": "Automod",
"main.projects.4.description": "Discord bot pre moju miestnu komunitu",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "Veľmi, veľmi jednoduchý json prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "Veľmi jednoduchý keylogger založený na vzťahu klient-server pre Windows, Linux a MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.7.name": "Adventná Výzva",
"main.projects.7.description": "Interaktívna aplikácia pre deti s adventnou tematikou podobná hre",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "A mnoho ďalších projektov s uzavretým zdrojovým kódom, najmä zmlúv a viacero projektov na FEI STU (vrátane viacerých algoritmov a systémov označovania/spracovania údajov, ktoré sa väčšinou týkajú biomedicínskych signálov, ako sú EKG alebo PPG).",
"main.about.title": "./o-mne",
"main.about.residence": "> bydlisko: Bratislava, Slovensko",
"main.about.citizenship": "> občianstvo: slovenské - EU občan",
"main.about.0": "V súčasnosti som dosť zaneprázdnený školou a súkromným životom, ale stále si nájdem čas na prácu na rôznych projektoch. Veľmi ma zaujíma oblasť STEM ako taká, takže sa vždy snažím venovať jej aspoň časť svojho voľného času. Doposiaľ som sa venoval hlavne informatike a dátovej vede, ale mám aj určité skúsenosti s elektrotechnikou a podobnými oblasťami.",
"main.about.1": "Som tiež aktivista. Politicky sa hlásim k ľavici a silne verím v demokraciu, autonómiu, oslobodenie a emancipáciu. Akceptujem všetky rasy, národnosti, náboženstvá, sexuálne orientácie, rodové identity, vekové skupiny atď. Opovrhujem tými, ktorí hromadia bohatstvo, zatiaľ čo iní hladujú, a tými, ktorí aktívne ohrozujú menšiny. Som tiež vegán a často sa zapájam do aktivizmu za práva zvierat, či už ide o akcie „Cubes of Truth“, prednášky o vykorisťovaní zvierat alebo dobrovoľníctvo v azyloch pre zvieratá. Cením si komunitu, vzájomnú pomoc a slobodu. Som tiež oddaným zástancom slobodného a otvoreného softvéru.",
"main.about.2": "Po ukončení strednej školy chcem študovať strojné inžinierstvo. Bakalársky titul chcem získať na Technickej univerzite v Norimbergu Georg Simon Ohm. Pokiaľ ide o magisterské a doktorandské štúdium, zvažujem Technickú univerzitu v Mníchove, Technickú univerzitu v Berlíne, Technickú univerzitu vo Viedni a ETH Zürich. Obaja moji rodičia sú úspešní inžinieri (hoci chemickí, nie strojní), takže mám čo dokazovať.",
"main.about.3": "Okrem STEM a politiky sa tiež rád prechádzam, počúvam hudbu a občas hrám videohry.",
"main.contacts.title": "./kontakty",
"main.contacts.gpg": "získajte môj verejný GPG kľúč",
"main.contacts.signal": "(môžete mi poslať správu cez Signal)",
"main.socials.title": "Sociálne siete:",
"main.exit": "Pripojenie na adresu 45.136.31.184 bolo ukončené.",
"main.footer.0": "Copyleft 🄯 2026",
"main.footer.1": "zdrojový kód",
"main.footer.2": ""
}
+31
View File
@@ -0,0 +1,31 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
modules: ["@nuxt/a11y", "@nuxt/ui", "@nuxtjs/i18n", "@nuxt/image"],
i18n: {
defaultLocale: "en",
strategy: "prefix_and_default",
locales: [
{ code: "en", name: "English", file: "en.json" },
{ code: "sk", name: "Slovensky", file: "sk.json" },
{ code: "de", name: "Deutsch", file: "de.json" },
],
},
app: {
head: {
charset: "utf-8",
},
},
routeRules: {
"/": { prerender: true },
},
fonts: {
families: [{ name: "JetBrains Mono", provider: "local" }],
},
css: ["~/assets/global.css"],
compatibilityDate: "2025-07-15",
devtools: { enabled: true },
nitro: {
preset: "bun",
},
ssr: true,
});
+19 -14
View File
@@ -1,20 +1,25 @@
{
"name": "svitan-dev",
"name": "svitan-dev-new",
"type": "module",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"@astrojs/check": "^0.9.4",
"@astrojs/vue": "^5.1.0",
"@tailwindcss/vite": "^4.1.5",
"astro": "5.10.1",
"tailwindcss": "^4.1.5",
"typescript": "^5.8.3",
"vue": "^3.5.17"
"@nuxt/a11y": "1.0.0-alpha.1",
"@nuxt/image": "2.0.0",
"@nuxt/ui": "4.3.0",
"@nuxtjs/i18n": "10.2.1",
"nuxt": "^4.4.2",
"typescript": "^5.9.3",
"vue": "^3.5.33",
"vue-router": "^4.6.4"
},
"devDependencies": {
"@catppuccin/tailwindcss": "^1.0.0"
}
}
}
-5
View File
@@ -1,5 +0,0 @@
{
"m.homeserver": {
"base_url": "https://matrix.svitan.dev"
}
}
-3
View File
@@ -1,3 +0,0 @@
{
"m.server": "matrix.svitan.dev:443"
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z"/></svg>

Before

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

+49
View File
@@ -0,0 +1,49 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: BA29 2ED4 A454 279D 5E2C B8E8 D983 F5A2 F5A6 0513
Comment: Ash Svitan <ash.svitan@proton.me>
Comment: Ash Svitan <ash@svitan.dev>
Comment: Ash Svitan <selfsigned-ash@proton.me>
Comment: Daniel Svitan <daniel.svitan@proton.me>
Comment: Daniel Svitan <daniel@svitan.dev>
Comment: System <system@svitan.dev>
xjMEadvu8xYJKwYBBAHaRw8BAQdACkU6lvMHSgyLFto9Croa23qjTA+yEnGu9XKB
1zWXNZnNIUFzaCBTdml0YW4gPGFzaC5zdml0YW5AcHJvdG9uLm1lPsKWBBMWCgA+
FiEEuiku1KRUJ51eLLjo2YP1ovWmBRMFAmnvR4gCGwMFCQHlsoYFCwkIBwIGFQoJ
CAsCBBYCAwECHgECF4AACgkQ2YP1ovWmBRMdvwD/bTrRr9VBcLkwVsYT+veSIubz
pzVQyxqzEe1W76iViusBAJGIncV2QcZV3RRuohFFuT+Szv497VJD9izKhzizZBUF
zRtBc2ggU3ZpdGFuIDxhc2hAc3ZpdGFuLmRldj7ClgQTFgoAPhYhBLopLtSkVCed
Xiy46NmD9aL1pgUTBQJp70d1AhsDBQkB5bKGBQsJCAcCBhUKCQgLAgQWAgMBAh4B
AheAAAoJENmD9aL1pgUTjxkA/03kqTNWZa+htIriMvRqMqhUUcn475d6M56NnW3N
YD4NAP9gQMsSLME/yX0FKvn3Do8JBPL9hqDK2v0z3SHM4MxOAs0lQXNoIFN2aXRh
biA8c2VsZnNpZ25lZC1hc2hAcHJvdG9uLm1lPsKWBBMWCgA+FiEEuiku1KRUJ51e
LLjo2YP1ovWmBRMFAmns9ZoCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AFCQHx
LG0ACgkQ2YP1ovWmBRPFKAEAlhDo+sVCNtMyOAPoGNrZIzxIFKptfWCYVkZ1dpzf
NpUBAIlJo3biLk0ZZM/6mTj6p1v1lS0KuGCfl+vKIKfWChEIwpYEExYKAD4CGwMF
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQS6KS7UpFQnnV4suOjZg/Wi9aYFEwUC
aeBt+QUJAeWyhgAKCRDZg/Wi9aYFE3ZyAP9EM6hJ7SsFWaQ1th5WPoNlUw08T8QV
TwrmZ8gKnv0jlQD+MMsO+1KSoo4z8BXnzHWEBEqNCZa6pJYcHsBk3jQgdgHCkAQT
FgoAOBYhBLopLtSkVCedXiy46NmD9aL1pgUTBQJp2+7zAhsDBQsJCAcCBhUKCQgL
AgQWAgMBAh4BAheAAAoJENmD9aL1pgUTijMBAMzl3bD0PZj8gxsFncOLk4rlkqYL
gy3Ow2Bfno98ILeLAP9Zt+S+j8BFTntPPULhyZmN2lgp41EHep8ExFrjVnxPB80n
RGFuaWVsIFN2aXRhbiA8ZGFuaWVsLnN2aXRhbkBwcm90b24ubWU+wpYEExYKAD4W
IQS6KS7UpFQnnV4suOjZg/Wi9aYFEwUCae9HmwIbAwUJAeWyhgULCQgHAgYVCgkI
CwIEFgIDAQIeAQIXgAAKCRDZg/Wi9aYFExr/AP0SH0hAbL7hqfllz1XpzCWDXSAP
T4glmeYG1aKiUvEpegEAhCMudDBiUbyD56psnsvNIqPDS6PHrz/64F0h55uHEADN
IURhbmllbCBTdml0YW4gPGRhbmllbEBzdml0YW4uZGV2PsKWBBMWCgA+FiEEuiku
1KRUJ51eLLjo2YP1ovWmBRMFAmnvR5ICGwMFCQHlsoYFCwkIBwIGFQoJCAsCBBYC
AwECHgECF4AACgkQ2YP1ovWmBROZ3QEA5+7nUfnYdhOmIQJmrpDowr90qBNV48E0
0radlckTnagBAMjXJZBpoCkxPDDg1yxRypKm+0DBhN35CfNrYWRJyqIHzRpTeXN0
ZW0gPHN5c3RlbUBzdml0YW4uZGV2PsKWBBMWCgA+FiEEuiku1KRUJ51eLLjo2YP1
ovWmBRMFAmnvR6YCGwMFCQHlsoYFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ
2YP1ovWmBRO4iwD7BnMaYtlP6+v1eOhynXc269+Mcz4+e4v1yoXvlP1ZEAAA/RO2
o0UKo2+uGbc6RD+UNThTge+UCCX0zc3fRcQ3p0MFzjgEadvu8xIKKwYBBAGXVQEF
AQEHQCvANRIhBfxJfNAc+yV9/EdfW3pJaSAhcbK0bvBFuOJOAwEIB8J+BBgWCgAm
FiEEuiku1KRUJ51eLLjo2YP1ovWmBRMFAmns9ZoCGwwFCQHxLG0ACgkQ2YP1ovWm
BRPlewEAwXy/wl0yVcAFHBAZYiJXQxVOAnkQ4hmZ5kwRr4pmADUA/3fvzLMD209T
aARhUaS2mJbMvhQBh8YJj9FxK9DQS+UKwngEGBYKACAWIQS6KS7UpFQnnV4suOjZ
g/Wi9aYFEwUCadvu8wIbDAAKCRDZg/Wi9aYFE2sjAP9wvqwmFMdW1P5yu7dGj6Ef
YvKO+7OArc7OF5KUDBnt8AEA1qDBS5NzHhseqarseZaFle4oO66F4Bftwrn1Gqro
Hgg=
=nQku
-----END PGP PUBLIC KEY BLOCK-----
-15
View File
@@ -1,15 +0,0 @@
---
interface Props {
link: string;
icon?: string;
}
const {link, icon} = Astro.props
---
<a href={link} target="_blank">
<img src={icon ?? "/icons/arrow-up-right-from-square.svg"}
alt="Arrow going to the top right from the center of a square, representing a link"
class="w-4 h-4"
/>
</a>
-11
View File
@@ -1,11 +0,0 @@
---
import {languages} from "../i18n/ui.ts";
const {lang} = Astro.params;
---
<div class="absolute top-2 right-2 flex gap-x-2">
{Object.keys(languages).map((code) =>
code === lang ? "" : <a href={`/${code}/`} class="underline">{code.toUpperCase()}</a>
)}
</div>
-280
View File
@@ -1,280 +0,0 @@
export const languages = {
en: "English",
sk: "Slovensky",
de: "Deutsch",
};
export const defaultLang = "en";
export const ui = {
en: {
"main.note.accessibility": "Note: this page has been kept simple in favor of accessibility",
"main.intro.0": "Hi, I'm ",
"main.intro.1": "Daniel Svitan",
"main.intro.2": " a ",
"main.intro.3": " year-old aspiring engineer",
"main.residence": "Residence: Bratislava, Slovakia",
"main.contacts.title": "Contacts:",
"main.contacts.signal": "(you can text me on Signal)",
"main.socials.title": "Socials:",
"main.experience.title": "Experience:",
"main.experience.header.when": "When",
"main.experience.header.occupation": "Occupation and details",
"main.experience.0.when": "July, 2024 - present",
"main.experience.0.occupation": "Data scientist",
"main.experience.0.occupation.details": "Faculty of Electronics and Informatics, Slovak Technical University in Bratislava (FEI STU)",
"main.experience.0.details.0": "Created data labeling system for the ECG quality classification neural network",
"main.experience.0.details.1": "Contributed to the ECG quality classification neural network",
"main.experience.0.details.2": "Created quality classification system based on ECG quality classification neural network",
"main.experience.0.details.3": "Wrote the Tom & Jerry LabChart Text File Dynamic Sync Algorithm",
"main.experience.publications": "Publications:",
"main.education.title": "Education:",
"main.education.header.when": "When",
"main.education.header.where": "Where",
"main.education.0.when": "2024 - present",
"main.education.0.where": "Evanjelické Lýceum Bratislava - 5-year Bilingual Gymnasium (high school)",
"main.education.1.when": "2023 - 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave - 8-year Gymnasium (high school)",
"main.education.2.when": "2022 - 2023",
"main.education.2.where": "Del Mar High School in San Jose, California, United States of America",
"main.skills.title": "Skills:",
"main.skills.languages": "Languages: Slovak (native), English (C1), German (B1)",
"main.skills.data-science": "Data science: PyTorch (neural networks), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "Sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "Database: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "Math: Calculus (1), Statistics, Linear algebra",
"main.skills.other": "Other: Driver license type B (Slovak), LibreOffice",
"main.skills.0": "Having my own Debian server at home, I've self-hosted multiple apps and projects, including Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy, and many more.",
"main.skills.1": "I route them all through my Caddy reverse proxy, but since my server is behind NAT, I also have a VPS that is connected to my server through a tunnel and routes all of the traffic to my server through that tunnel.",
"main.skills.2": "I also protect myself against data loss with a RAIDZ1 ZFS pool, regular backups (monthly to an off-site physical drive owned by me and every two days to a cloud storage box), and regular ZFS Scrubs.",
"main.skills.3": "And everything is encrypted, my pool and both backups with a randomly generated binary file.",
"main.skills.4": "Needless to say, I've got some experience with system administration as well as Linux systems, since I also daily drive Arch Linux.",
"main.projects.title": "Some of my projects:",
"main.projects.header.name": "Name",
"main.projects.header.reference": "Reference",
"main.projects.header.description": "Description",
"main.projects.header.tags": "Tags",
"main.projects.0.name": "SOČ 2024/2025 Paper",
"main.projects.0.description": "Research paper entitled \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", which won first place in the regional round of the competition",
"main.projects.0.tags.0": "#statistics",
"main.projects.0.tags.1": "#research",
"main.projects.1.name": "State SOČ Cross Examination",
"main.projects.1.description": "Cross examination of the Slovak State SOC Competition results and the analysis of the judges' bias",
"main.projects.1.tags.0": "#statistics",
"main.projects.2.name": "Door alarm",
"main.projects.2.description": "A home-made door alarm based on ultrasound sensor distance measurements",
"main.projects.2.tags.0": "#electronics",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Green school",
"main.projects.3.description": "A website for a school club of environmentalists",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.4.name": "Automod",
"main.projects.4.description": "A discord bot for my local community",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "A very, very simple json prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "A very simple client-server based keylogger for Windows, Linux, and MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.6.tags.1": "#keylogger",
"main.projects.7.name": "Advent challange",
"main.projects.7.description": "An interactive game-like app for kids with an advent theme",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "And many other closed-source projects, especially contracts (like NatArt) and the tens of projects at FEI STU (including multiple algorithms and labeling / data processing systems, mostly concerned with bio-medical signals like ECG or PPG).",
"main.interests.title": "About me and my interests:",
"main.interests.0": "I spend most of my free time working on various projects of mine; I've recently decided to expand my horizons and work on some projects that are not pure computer science. But other than that, I like to go on walks, listen to music, and I occasionally play video games.",
"main.interests.1": "I also love going rollerblading and I used to play airsoft, but I haven't had the time to play recently. And, believe it or not, I like to cook and read books as well.",
"main.interests.2": "When I grow up, I want to study mechanical engineering, since I take interest in engineering in general, not just programming. I'm still not sure which university I want to go to, but chances are that it will be somewhere in Germany, Benelux, or Scandinavia (or Czechia and Slovakia as a last resort). Both my parents are successful engineers (chemical, not mechanical though), so I have a lot to live up to.",
"main.interests.3": "But currently, I'm just trying to survive high school.",
"main.note.source.0": "Note: the source code of this website is available ",
"main.note.source.1": "here",
"main.note.source.2": "",
},
sk: {
"main.note.accessibility": "Poznámka: táto stránka bola z dôvodu prístupnosti navrhnutá jednoducho",
"main.intro.0": "Ahoj, som ",
"main.intro.1": "Daniel Svitaň",
"main.intro.2": "",
"main.intro.3": " ročný aspirujúci inžinier",
"main.residence": "Bydlisko: Bratislava, Slovensko",
"main.contacts.title": "Kontakty:",
"main.contacts.signal": "(môžete mi poslať správu cez Signal)",
"main.socials.title": "Sociálne siete:",
"main.experience.title": "Skúsenosti:",
"main.experience.header.when": "Kedy",
"main.experience.header.occupation": "Povolanie a podrobnosti",
"main.experience.0.when": "Júl 2024 súčasnosť",
"main.experience.0.occupation": "Dátový vedec",
"main.experience.0.occupation.details": "Fakulta elektrotechniky a informatiky, Slovenská technická univerzita v Bratislave (FEI STU)",
"main.experience.0.details.0": "Vytvoril systém označovania údajov pre neurónovú sieť klasifikácie kvality EKG",
"main.experience.0.details.1": "Prispel k neurónovej sieti klasifikácie kvality EKG",
"main.experience.0.details.2": "Vytvoril systém klasifikácie kvality založený na neurónovej sieti klasifikácie kvality EKG",
"main.experience.0.details.3": "Napísal algoritmus dynamickej synchronizácie textových súborov Tom & Jerry LabChart",
"main.experience.publications": "Publikácie:",
"main.education.title": "Vzdelanie:",
"main.education.header.when": "Kedy",
"main.education.header.where": "Kde",
"main.education.0.when": "2024 súčasnosť",
"main.education.0.where": "Evanjelické Lýceum Bratislava 5-ročné bilingválne gymnázium",
"main.education.1.when": "2023 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave 8-ročné gymnázium",
"main.education.2.when": "2022 2023",
"main.education.2.where": "Del Mar High School v San Jose, Kalifornia, Spojené štáty americké",
"main.skills.title": "Zručnosti:",
"main.skills.languages": "Jazyky: slovenčina (rodný jazyk), angličtina (C1), nemčina (B1)",
"main.skills.data-science": "Dátová veda: PyTorch (neurónové siete), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "Sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "Databáza: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "Matematika: kalkulus (1), štatistika, lineárna algebra",
"main.skills.other": "Ostatné: Vodičský preukaz typu B (slovenský), LibreOffice",
"main.skills.0": "Keďže mám doma vlastný Debian server, sám som hostoval viacero aplikácií a projektov, vrátane Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy a mnoho ďalších.",
"main.skills.1": "Všetky smerujem cez môj reverse proxy Caddy, ale keďže môj server je za NAT, mám aj VPS, ktorý je pripojený k môjmu serveru cez tunel a smeruje všetky dáta na môj server cez tento tunel.",
"main.skills.2": "Chránim sa aj pred stratou dát pomocou RAIDZ1 ZFS pool, pravidelných záloh (mesačne na fyzický disk mimo lokality, ktorý vlastním, a každé dva dni do cloudového úložiska) a pravidelných ZFS Scrubs.",
"main.skills.3": "A všetko je šifrované, môj pool aj obe zálohy pomocou náhodne generovaného binárneho súboru.",
"main.skills.4": "Netreba dodávať, že mám určité skúsenosti so správou systémov, ako aj so systémami Linux, keďže denne používam Arch Linux.",
"main.projects.title": "Niektoré z mojich projektov:",
"main.projects.header.name": "Názov",
"main.projects.header.reference": "Referencia",
"main.projects.header.description": "Popis",
"main.projects.header.tags": "Tagy",
"main.projects.0.name": "SOČ 2024/2025 Práca",
"main.projects.0.description": "Výskumná práca s názvom \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", ktorá získala prvé miesto v krajskom kole súťaže",
"main.projects.0.tags.0": "#štatistika",
"main.projects.0.tags.1": "#výskum",
"main.projects.1.name": "Štátna SOČ analýza výsledkov",
"main.projects.1.description": "Krížová kontrola výsledkov slovackej štátnej súťaže SOČ a analýza zaujatosti porotcov",
"main.projects.1.tags.0": "#štatistika",
"main.projects.2.name": "Dverový alarm",
"main.projects.2.description": "Domáci dverový alarm založený na meraní vzdialenosti ultrazvukovým senzorom",
"main.projects.2.tags.0": "#elektronika",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Zelená škola",
"main.projects.3.description": "Webová stránka pre školský klub environmentalistov",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.4.name": "Automod",
"main.projects.4.description": "Discord bot pre moju miestnu komunitu",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "Veľmi, veľmi jednoduchý json prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "Veľmi jednoduchý keylogger založený na vzťahu klient-server pre Windows, Linux a MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.6.tags.1": "#keylogger",
"main.projects.7.name": "Adventná Výzva",
"main.projects.7.description": "Interaktívna aplikácia pre deti s adventnou tematikou podobná hre",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "A mnoho ďalších projektov s uzavretým zdrojovým kódom, najmä zmlúv (ako NatArt) a desiatky projektov na FEI STU (vrátane viacerých algoritmov a systémov označovania/spracovania údajov, ktoré sa väčšinou týkajú biomedicínskych signálov, ako sú EKG alebo PPG).",
"main.interests.title": "O mne a mojich záujmoch:",
"main.interests.0": "Väčšinu voľného času trávim prácou na rôznych projektoch. Nedávno som sa rozhodol rozšíriť svoje obzory a pracovať na niektorých projektoch, ktoré nie sú čisto z oblasti informatiky. Okrem toho rád chodím na prechádzky, počúvam hudbu a občas hrám videohry.",
"main.interests.1": "Milujem aj korčuľovanie na kolieskových korčuliach a kedysi som hrával airsoft, ale v poslednej dobe nemám na to čas. A verte alebo nie, rád varím a čítam knihy.",
"main.interests.2": "Keď vyrastiem, chcem študovať mechanické inžinierstvo, pretože ma zaujíma inžinierstvo vo všeobecnosti, nielen programovanie. Ešte neviem, na ktorú univerzitu chcem ísť, ale pravdepodobne to bude niekde v Nemecku, Beneluxe alebo Škandinávii (alebo v krajnej núdzi v Česku a na Slovensku). Obaja moji rodičia sú úspešní inžinieri (chemickí, nie mechanickí), takže mám sa k čomu porovnávať.",
"main.interests.3": "Ale momentálne sa len snažím prežiť strednú školu.",
"main.note.source.0": "Poznámka: zdrojový kód tejto webovej stránky je k dispozícii ",
"main.note.source.1": "tu",
"main.note.source.2": "",
},
de: {
"main.note.accessibility": "Hinweis: Diese Seite wurde zugunsten der Barrierefreiheit einfach gehalten",
"main.intro.0": "Hallo, ich bin ",
"main.intro.1": "Daniel Svitan",
"main.intro.2": "ein ",
"main.intro.3": "-jähriger aufstrebend Ingenieur",
"main.residence": "Wohnort: Bratislava, Slowakei",
"main.contacts.title": "Kontakte:",
"main.contacts.signal": "(Sie können mir eine Nachricht über Signal senden)",
"main.socials.title": "Soziale Netzwerke:",
"main.experience.title": "Erfahrung:",
"main.experience.header.when": "Wann",
"main.experience.header.occupation": "Beruf und Details",
"main.experience.0.when": "Juli 2024 heute",
"main.experience.0.occupation": "Datenwissenschaftler",
"main.experience.0.occupation.details": "Fakultät für Elektronik und Informatik, Slowakische Technische Universität in Bratislava (FEI STU)",
"main.experience.0.details.0": "Erstellung eines Datenbeschriftungssystems für das neuronale Netzwerk zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.1": "Beitrag zum neuronalen Netzwerk zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.2": "Erstellung eines Qualitätsklassifizierungssystems auf Basis des neuronalen Netzwerks zur EKG-Qualitätsklassifizierung",
"main.experience.0.details.3": "Verfasste den Tom & Jerry LabChart Text File Dynamic Sync Algorithm",
"main.experience.publications": "Veröffentlichungen:",
"main.education.title": "Ausbildung:",
"main.education.header.when": "Wann",
"main.education.header.where": "Wo",
"main.education.0.when": "2024 heute",
"main.education.0.where": "Evanjelické Lýceum Bratislava 5-jähriges zweisprachiges Gymnasium",
"main.education.1.when": "2023 2024",
"main.education.1.where": "Spojená škola Svätej Rodiny v Bratislave 8-jähriges Gymnasium",
"main.education.2.when": "2022 2023",
"main.education.2.where": "Del Mar High School in San Jose, Kalifornien, Vereinigte Staaten von Amerika",
"main.skills.title": "Fähigkeiten:",
"main.skills.languages": "Sprachen: Slowakisch (Muttersprache), Englisch (C1), Deutsch (B1)",
"main.skills.data-science": "Datenwissenschaft: PyTorch (neuronale Netze), Matplotlib, SciPy, NumPy",
"main.skills.sysadmin": "Sysadmin: Docker, Caddy, ZFS, Linux",
"main.skills.frontend": "Frontend: HTML, CSS/SCSS, JavaScript/TypeScript, TailWindCSS, React, Vue, Nuxt, Astro",
"main.skills.backend": "Backend: Ktor (Kotlin), Fiber (Go), Echo (Go), FastAPI (Python), NestJS (TypeScript)",
"main.skills.database": "Datenbank: MySQL, PostgreSQL, Redis/Valkey, Firestore, MongoDB",
"main.skills.math": "Mathematik: Kalkulus (1), Statistik, Lineare Algebra",
"main.skills.other": "Sonstiges: Führerschein Klasse B (Slowakei), LibreOffice",
"main.skills.0": "Da ich zu Hause einen eigenen Debian-Server habe, habe ich mehrere Apps und Projekte selbst gehostet, darunter Nextcloud, Immich, Gitea, Prometheus+Grafana, ngIRCd, WireGuard Easy und viele mehr.",
"main.skills.1": "Ich leite sie alle über meinen Caddy-Reverse-Proxy weiter, aber da mein Server hinter NAT steht, habe ich auch einen VPS, der über einen Tunnel mit meinem Server verbunden ist und den gesamten Datenverkehr über diesen Tunnel an meinen Server weiterleitet.",
"main.skills.2": "Ich schütze mich auch vor Datenverlust mit einem RAIDZ1-ZFS-Pool, regelmäßigen Backups (monatlich auf ein mir gehörendes externes physisches Laufwerk und alle zwei Tage auf einen Cloud-Speicher) und regelmäßigen ZFS-Scrubs.",
"main.skills.3": "Und alles ist verschlüsselt, mein Pool und beide Backups mit einer zufällig generierten Binärdatei.",
"main.skills.4": "Natürlich habe ich auch Erfahrung mit Systemadministration und Linux-Systemen, da ich täglich mit Arch Linux arbeite.",
"main.projects.title": "Einige meiner Projekte:",
"main.projects.header.name": "Name",
"main.projects.header.reference": "Referenz",
"main.projects.header.description": "Beschreibung",
"main.projects.header.tags": "Tags",
"main.projects.0.name": "SOČ 2024/2025 Arbeit",
"main.projects.0.description": "Forschungsarbeit mit dem Titel \"Faktory ovplyvňujúce študijné výsledky a identifikácia rizikových skupín\", die den ersten Platz in der regionalen Runde des Wettbewerbs gewonnen hat",
"main.projects.0.tags.0": "#statistiken",
"main.projects.0.tags.1": "#forschung",
"main.projects.1.name": "Staatliche SOC-Kreuzvernehmung",
"main.projects.1.description": "Kreuzverhör der Ergebnisse des slowakischen staatlichen SOC-Wettbewerbs und Analyse der Voreingenommenheit der Richter",
"main.projects.1.tags.0": "#statistiken",
"main.projects.2.name": "Türalarm",
"main.projects.2.description": "Ein selbstgebauter Türalarm auf Basis von Entfernungsmessungen mit Ultraschallsensoren",
"main.projects.2.tags.0": "#elektronik",
"main.projects.2.tags.1": "#go",
"main.projects.3.name": "Grüne Schule",
"main.projects.3.description": "Eine Website für einen Schulklub von Umweltschützern",
"main.projects.3.tags.0": "#web-dev",
"main.projects.3.tags.1": "#nuxt",
"main.projects.4.name": "Automod",
"main.projects.4.description": "Ein Discord-Bot für meine lokale Community",
"main.projects.4.tags.0": "#discord",
"main.projects.4.tags.1": "#kotlin",
"main.projects.5.name": "Pwetty",
"main.projects.5.description": "Ein sehr, sehr einfacher JSON-Prettifier",
"main.projects.5.tags.0": "#c",
"main.projects.5.tags.1": "#assembly",
"main.projects.6.name": "Keys",
"main.projects.6.description": "Ein sehr einfacher Client-Server-basierter Keylogger für Windows, Linux und MacOS",
"main.projects.6.tags.0": "#go",
"main.projects.6.tags.1": "#keylogger",
"main.projects.7.name": "Advents-Challenge",
"main.projects.7.description": "Eine interaktive, spielähnliche App für Kinder mit Adventsmotiv",
"main.projects.7.tags.0": "#web-dev",
"main.projects.7.tags.1": "#react",
"main.projects.footer": "Und viele andere Closed-Source-Projekte, insbesondere Verträge (wie NatArt) und die Dutzenden von Projekten bei FEI STU (einschließlich mehrerer Algorithmen und Beschriftungs-/Datenverarbeitungssysteme, die sich hauptsächlich mit biomedizinischen Signalen wie EKG oder PPG befassen).",
"main.interests.title": "Über mich und meine Interessen:",
"main.interests.0": "Ich verbringe den Großteil meiner Freizeit damit, an verschiedenen eigenen Projekten zu arbeiten. Vor kurzem habe ich beschlossen, meinen Horizont zu erweitern und an einigen Projekten zu arbeiten, die nicht rein informatikbezogen sind. Ansonsten gehe ich gerne spazieren, höre Musik und spiele gelegentlich Videospiele.",
"main.interests.1": "Ich fahre auch gerne Inlineskates und habe früher Airsoft gespielt, aber dafür habe ich in letzter Zeit keine Zeit mehr. Und ob Sie es glauben oder nicht, ich koche auch gerne und lese gerne Bücher.",
"main.interests.2": "Wenn ich groß bin, möchte ich Maschinenbau studieren, da ich mich nicht nur für Programmierung, sondern für Technik im Allgemeinen interessiere. Ich bin mir noch nicht sicher, an welcher Universität ich studieren möchte, aber wahrscheinlich wird es irgendwo in Deutschland, Benelux oder Skandinavien sein (oder als letzte Option in Tschechien und der Slowakei). Meine Eltern sind beide erfolgreiche Ingenieure (allerdings Chemieingenieure, keine Maschinenbauingenieure), daher habe ich hohe Erwartungen zu erfüllen.",
"main.interests.3": "Aber im Moment versuche ich nur, die Highschool zu überstehen.",
"main.note.source.0": "Hinweis: Der Quellcode dieser Website ist verfügbar ",
"main.note.source.1": "hier",
"main.note.source.2": "",
},
} as const;
-7
View File
@@ -1,7 +0,0 @@
import {ui, defaultLang} from "./ui";
export function useTranslations(lang: keyof typeof ui) {
return function t(key: keyof typeof ui[typeof defaultLang]) {
return key in ui[lang] ? (ui[lang] as any)[key] : ui[defaultLang][key];
}
}
-27
View File
@@ -1,27 +0,0 @@
---
import "../styles/global.css"
---
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<meta name="author" content="Daniel Svitan (streamer272 / selfsigned-ash)" />
<meta name="keywords" content="Daniel Svitan portfolio CV" />
<title>Daniel's portfolio</title>
</head>
<body>
<slot />
</body>
</html>
<style>
html,
body {
margin: 0;
width: 100%;
height: 100%;
}
</style>
-312
View File
@@ -1,312 +0,0 @@
---
import Layout from "../../layouts/Layout.astro";
import ArrowLink from "../../components/ArrowLink.astro"
import {useTranslations} from "../../i18n/utils.ts";
import LangChange from "../../components/LangChange.astro";
const now = new Date();
let years = now.getFullYear() - 2006 - 1;
if (now.getMonth() > 7 || (now.getMonth() === 7 && now.getDate() >= 23)) {
years++;
}
let a = years === 18 ? "an " : "a ";
const {lang} = Astro.params;
const t = useTranslations(lang as "en" | "sk" | "de");
export function getStaticPaths() {
return [
{params: {lang: "en"},},
{params: {lang: "sk"},},
{params: {lang: "de"},},
];
}
---
<style>
td {
vertical-align: top;
}
td.flex {
padding: 0.25rem 0 0.5rem 0;
}
th {
text-align: left;
font-weight: normal;
font-style: italic;
font-size: 1.05rem;
}
tr {
border-bottom: 1px solid black;
}
tr:last-of-type {
border-bottom: none;
}
.hashtag {
padding: 0 0.2rem;
background-color: #e8e8e8;
border-radius: 0.25rem;
}
</style>
<Layout>
<div class="w-screen h-full flex items-center justify-start flex-col overflow-x-scroll">
<div class="w-1 h-10 shrink-0"/>
<main class="w-[90vw] sm:w-[80vw] md:w-[70vw] lg:w-[60vw] xl:w-[50vw] border-solid border-black border-1 p-3 shrink-0 overflow-auto relative">
<LangChange/>
<p>{t("main.note.accessibility")}</p>
<div class="h-4"/>
<h1 class="text-xl">{t("main.intro.0")}<span class="font-bold">{t("main.intro.1")}</span>,
{t("main.intro.2")} {years} {t("main.intro.3")}</h1>
<p>{t("main.residence")}</p>
<div class="h-4"/>
<p>{t("main.contacts.title")}</p>
<ul class="list-none">
<li>
<a href="mailto:daniel@svitan.dev" target="_blank" class="underline">daniel@svitan.dev</a>
</li>
<li>
<a href="tel:+421948309804" target="_blank" class="underline">+421 948 309
804</a>&nbsp;{t("main.contacts.signal")}
</li>
<li>
<a href="https://matrix.to/#/@selfsigned-ash:svitan.dev" target="_blank" class="underline">@selfsigned-ash:svitan.dev</a>
</li>
</ul>
<div class="h-4"/>
<p>{t("main.socials.title")}</p>
<ul class="list-none">
<li>
<a href="https://github.com/Streamer272" target="_blank" class="underline">GitHub</a>
</li>
<li>
<a href="https://gitea.svitan.dev/Streamer272" target="_blank" class="underline">Gitea</a>
</li>
<li>
<a href="https://codeberg.org/selfsigned-ash" target="_blank" class="underline">Codeberg</a>
</li>
<li>
<a href="https://kolektiva.social/@selfsigned_ash" rel="me" target="_blank"
class="underline">Mastodon</a>
</li>
<li>
<a href="https://pixelfed.de/selfsigned-ash" target="_blank" class="underline">Pixelfed</a>
</li>
</ul>
<div class="h-6"/>
<h2 class="text-lg">{t("main.experience.title")}</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">{t("main.experience.header.when")}</p></th>
<th><p class="px-1">{t("main.experience.header.occupation")}</p></th>
</tr>
<tr>
<td>{t("main.experience.0.when")}</td>
<td>{t("main.experience.0.occupation")}<br/>
{t("main.experience.0.occupation.details")}
<ul class="list-disc mt-2">
<li>{t("main.experience.0.details.0")}</li>
<li>{t("main.experience.0.details.1")}</li>
<li>{t("main.experience.0.details.2")}</li>
<li>{t("main.experience.0.details.3")}</li>
</ul>
<p class="mt-2 flex items-center gap-x-1">
{t("main.experience.publications")}
<ArrowLink link="https://ieeexplore.ieee.org/document/10844607"/>
</p>
</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">{t("main.education.title")}</h2>
<table class="w-full">
<tr>
<th class="max-w-48"><p class="px-1">{t("main.education.header.when")}</p></th>
<th><p class="px-1">{t("main.education.header.where")}</p></th>
</tr>
<tr>
<td>{t("main.education.0.when")}</td>
<td>{t("main.education.0.where")}</td>
</tr>
<tr>
<td>{t("main.education.1.when")}</td>
<td>{t("main.education.1.where")}</td>
</tr>
<tr>
<td>{t("main.education.2.when")}</td>
<td>{t("main.education.2.where")}</td>
</tr>
</table>
<div class="h-6"/>
<h2 class="text-lg">{t("main.skills.title")}</h2>
<ul class="ml-4">
<li>{t("main.skills.languages")}</li>
<li>{t("main.skills.data-science")}</li>
<li>{t("main.skills.sysadmin")}</li>
<li>{t("main.skills.frontend")}</li>
<li>{t("main.skills.backend")}</li>
<li>{t("main.skills.database")}</li>
<li>{t("main.skills.math")}</li>
<li>{t("main.skills.other")}</li>
</ul>
<p class="mt-1">{t("main.skills.0")}</p>
<p>{t("main.skills.1")}</p>
<p>{t("main.skills.2")}</p>
<p>{t("main.skills.3")}</p>
<p>{t("main.skills.4")}</p>
<div class="h-6"/>
<h2 class="text-lg">{t("main.projects.title")}</h2>
<table class="w-full">
<tr>
<th class="max-w-60"><p class="px-1">{t("main.projects.header.name")}</p></th>
<th class="max-w-28"><p class="px-1">{t("main.projects.header.reference")}</p></th>
<th><p class="px-1">{t("main.projects.header.description")}</p></th>
<th class="max-w-32"><p class="px-1">{t("main.projects.header.tags")}</p></th>
</tr>
<tr>
<td>{t("main.projects.0.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/soc-2024"/>
<ArrowLink link="https://github.com/Streamer272/soc-2024"/>
</td>
<td>{t("main.projects.0.description")} </td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.0.tags.0")}</span>
<span class="hashtag">{t("main.projects.0.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.1.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/state-soc-cross"/>
</td>
<td>{t("main.projects.1.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.1.tags.0")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.2.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/door-alarm"/>
</td>
<td>{t("main.projects.2.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.2.tags.0")}</span>
<span class="hashtag">{t("main.projects.2.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.3.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/green-school"/>
<ArrowLink link="https://zelena.svr.sk/"/>
</td>
<td>{t("main.projects.3.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.3.tags.0")}</span>
<span class="hashtag">{t("main.projects.3.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.4.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/Streamer272/automod"/>
</td>
<td>{t("main.projects.4.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.4.tags.0")}</span>
<span class="hashtag">{t("main.projects.4.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.5.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/pwetty"/>
</td>
<td>{t("main.projects.5.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.5.tags.0")}</span>
<span class="hashtag">{t("main.projects.5.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.6.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://gitea.svitan.dev/Streamer272/keys"/>
</td>
<td>{t("main.projects.6.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.6.tags.0")}</span>
<span class="hashtag">{t("main.projects.6.tags.1")}</span>
</td>
</tr>
<tr>
<td>{t("main.projects.7.name")}</td>
<td class="flex gap-x-2">
<ArrowLink link="https://github.com/7274-dev/AdventnaVyzva-React"/>
<ArrowLink link="https://github.com/7274-dev"/>
</td>
<td>{t("main.projects.7.description")}</td>
<td class="flex gap-1 flex-wrap text-sm">
<span class="hashtag">{t("main.projects.7.tags.0")}</span>
<span class="hashtag">{t("main.projects.7.tags.1")}</span>
</td>
</tr>
</table>
<p class="mt-1">{t("main.projects.footer")}</p>
<div class="h-6"/>
<h2 class="text-lg">{t("main.interests.title")}</h2>
<p>{t("main.interests.0")}</p>
<p>{t("main.interests.1")}</p>
<p>{t("main.interests.2")}</p>
<p>{t("main.interests.3")}</p>
<div class="h-6"/>
<p>
{t("main.note.source.0")}
<a href="https://gitea.svitan.dev/Streamer272/svitan.dev" target="_blank"
class="underline">{t("main.note.source.1")} </a>
{t("main.note.source.2")}
</p>
</main>
<div class="w-1 h-10 shrink-0"/>
</div>
</Layout>
-8
View File
@@ -1,8 +0,0 @@
---
import Layout from "../layouts/Layout.astro";
import {defaultLang} from "../i18n/ui.ts";
---
<Layout>
<meta http-equiv="refresh" content={`0;url=/${defaultLang}/`}/>
</Layout>
-26
View File
@@ -1,26 +0,0 @@
@import "tailwindcss";
@font-face {
font-family: "JetBrains Mono";
src: url(fonts/JetBrainsMono-Regular.ttf) format("truetype");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "JetBrains Mono";
src: url(fonts/JetBrainsMono-Bold.ttf) format("truetype");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "JetBrains Mono";
src: url(fonts/JetBrainsMono-Italic.ttf) format("truetype");
font-weight: normal;
font-style: italic;
}
html {
font-family: "JetBrains Mono", monospace;
}
+11
View File
@@ -0,0 +1,11 @@
module.exports = {
purge: [],
darkMode: true, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
};
+17 -12
View File
@@ -1,13 +1,18 @@
{
"extends": "astro/tsconfigs/strict",
"include": [
".astro/types.d.ts",
"**/*"
],
"exclude": [
"dist"
],
"compilerOptions": {
"jsx": "preserve"
}
}
// https://nuxt.com/docs/guide/concepts/typescript
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}