commit 750943aaba2ea7c1e4cd356eb8c0aca2a0ca3553 Author: Artyom Belousov Date: Sun Feb 8 20:57:57 2026 +0300 Initial commit diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e3cf085 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,3 @@ +[*.{html,css}] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bfd1e40 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/output.css +/.envrc diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..645e65a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,2 @@ +FROM caddy:2.10.0-alpine +COPY . /usr/share/caddy/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6cead53 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +BSD Zero Clause License + +Copyright (c) 2026 Artyom Belousov + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/assets/avatar.png b/assets/avatar.png new file mode 100644 index 0000000..3dd3035 Binary files /dev/null and b/assets/avatar.png differ diff --git a/assets/codeberg.svg b/assets/codeberg.svg new file mode 100644 index 0000000..22ae6f4 --- /dev/null +++ b/assets/codeberg.svg @@ -0,0 +1 @@ + diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000..de03916 Binary files /dev/null and b/assets/favicon.png differ diff --git a/assets/habr.svg b/assets/habr.svg new file mode 100644 index 0000000..3ee909f --- /dev/null +++ b/assets/habr.svg @@ -0,0 +1,2 @@ + + diff --git a/assets/linkedin.svg b/assets/linkedin.svg new file mode 100644 index 0000000..47febb6 --- /dev/null +++ b/assets/linkedin.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/assets/telegram.svg b/assets/telegram.svg new file mode 100644 index 0000000..9b24da2 --- /dev/null +++ b/assets/telegram.svg @@ -0,0 +1,4 @@ + + + + diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..36c7fd6 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,6 @@ +services: + app: + restart: unless-stopped + build: . + ports: + - 127.0.0.1:1234:80 diff --git a/devbox.json b/devbox.json new file mode 100644 index 0000000..2ec273c --- /dev/null +++ b/devbox.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.16.0/.schema/devbox.schema.json", + "packages": [ + "live-server@latest", + ], + "shell": { + "init_hook": [ + "echo 'Welcome to devbox!' > /dev/null" + ], + "scripts": { + "test": [ + "echo \"Error: no test specified\" && exit 1" + ] + } + } +} diff --git a/devbox.lock b/devbox.lock new file mode 100644 index 0000000..d8e1e91 --- /dev/null +++ b/devbox.lock @@ -0,0 +1,57 @@ +{ + "lockfile_version": "1", + "packages": { + "github:NixOS/nixpkgs/nixpkgs-unstable": { + "last_modified": "2026-02-08T07:51:33Z", + "resolved": "github:NixOS/nixpkgs/fef9403a3e4d31b0a23f0bacebbec52c248fbb51?lastModified=1770537093&narHash=sha256-pF1quXG5wsgtyuPOHcLfYg%2Fft%2FQMr8NnX0i6tW2187s%3D" + }, + "live-server@latest": { + "last_modified": "2026-01-23T17:20:52Z", + "resolved": "github:NixOS/nixpkgs/a1bab9e494f5f4939442a57a58d0449a109593fe#live-server", + "source": "devbox-search", + "version": "0.11.0", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/45j19v60l7ms9qd4nmx9clgcsc4153v8-live-server-0.11.0", + "default": true + } + ], + "store_path": "/nix/store/45j19v60l7ms9qd4nmx9clgcsc4153v8-live-server-0.11.0" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/zycqx30blgv023nmnzg7il6mhwrsf3i3-live-server-0.11.0", + "default": true + } + ], + "store_path": "/nix/store/zycqx30blgv023nmnzg7il6mhwrsf3i3-live-server-0.11.0" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/m4k0kxa4134digwmlrfsz01lqfrv9yhh-live-server-0.11.0", + "default": true + } + ], + "store_path": "/nix/store/m4k0kxa4134digwmlrfsz01lqfrv9yhh-live-server-0.11.0" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/vk1ds5i7dr51gx8iiwvwykn9b1avgd5j-live-server-0.11.0", + "default": true + } + ], + "store_path": "/nix/store/vk1ds5i7dr51gx8iiwvwykn9b1avgd5j-live-server-0.11.0" + } + } + } + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..0ad54df --- /dev/null +++ b/index.html @@ -0,0 +1,47 @@ + + + + + Артём Белоусов | Бэкенд разработчик + + + + + + +
+
+ +
+
+ Артём Белоусов +
+
+ Бэкенд разработчик +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+ + + diff --git a/input.css b/input.css new file mode 100644 index 0000000..cb0d7f0 --- /dev/null +++ b/input.css @@ -0,0 +1,98 @@ +:root { + --base: rgb(30, 30, 46); + --text: rgb(205, 214, 244); + --mauve: rgb(203, 166, 247); +} + +* { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + background-color: var(--base); + color: var(--text); +} + +.page-wrapper { + display: grid; + place-content: center; + height: 100vh; +} + +.avatar { + border-radius: 50%; + object-fit: cover; + border-style: solid; + border-color: var(--mauve); + height: 30rem; + width: 30rem; + object-position: 0 -4.5rem; + border-width: 0.75rem; +} + +.avatar-wrapper { + display: grid; + place-content: center; +} + +.title-wrapper { + display: grid; + place-content: center; + font-weight: bold; + font-size: 4.5rem; + margin-top: 3rem; +} + +.subtitle-wrapper { + display: grid; + place-content: center; + font-size: 3.75rem; +} + +.icons-wrapper { + display: flex; + place-content: center; + grid-template-columns: repeat(4, 1fr); + margin-top: 3rem; +} + +.icon-wrapper { + margin-right: 1.25rem; +} + +.icon-wrapper:last-child { + margin-right: 0; +} + +.icon { + height: 9rem; + width: 9rem; +} + +@media (min-width:1024px) { + .avatar { + height: 10rem; + width: 10rem; + object-position: 0 -1.5rem; + border-width: 0.25rem; + } + + .title-wrapper { + font-size: 1.5rem; + margin-top: 1rem; + } + + .subtitle-wrapper { + font-size: 1.25rem; + } + + .icon-wrapper { + margin-right: 1rem; + } + + .icons-wrapper { + margin-top: 1rem; + } + + .icon { + height: 3rem; + width: 3rem; + } +} diff --git a/reset.css b/reset.css new file mode 100644 index 0000000..c4a9f5b --- /dev/null +++ b/reset.css @@ -0,0 +1,54 @@ +/* 1. Use a more-intuitive box-sizing model */ +*, *::before, *::after { + box-sizing: border-box; +} + +/* 2. Remove default margin */ +*:not(dialog) { + margin: 0; +} + +/* 3. Enable keyword animations */ +@media (prefers-reduced-motion: no-preference) { + html { + interpolate-size: allow-keywords; + } +} + +body { + /* 4. Add accessible line-height */ + line-height: 1.5; + /* 5. Improve text rendering */ + -webkit-font-smoothing: antialiased; +} + +/* 6. Improve media defaults */ +img, picture, video, canvas, svg { + display: block; + max-width: 100%; +} + +/* 7. Inherit fonts for form controls */ +input, button, textarea, select { + font: inherit; +} + +/* 8. Avoid text overflows */ +p, h1, h2, h3, h4, h5, h6 { + overflow-wrap: break-word; +} + +/* 9. Improve line wrapping */ +p { + text-wrap: pretty; +} +h1, h2, h3, h4, h5, h6 { + text-wrap: balance; +} + +/* + 10. Create a root stacking context +*/ +#root, #__next { + isolation: isolate; +}