-
-
- Deploy now
-
-
- Read our docs
-
+ return (
+
+
+
+ Nikola Kubiczek
+ {isLoading ? (
+ <>>
+ ) : (
+
+ Last song I have listened to:
+ {data?.payload.listens[0].track_metadata.track_name}
+ - {data?.payload.listens[0].track_metadata.artist_name}
+
+ )}
+
+
+
+
About me
+
+ Currently studying pure mathematics at the University of Warsaw and
+ doing commissions on the side. I had been considering studying
+ computer science but decided not to - mathematics is the love of my
+ life and an absolute passion.
+
+
+ In my free time I love listening to music - be it on headphones,
+ speakers or by going to a local concert. I'm very into various
+ brews, almost anything apart from alcohol could be my cup of tea.
+ Green and white teas, matcha, yerba mate, etc. You name it. I quite
+ like to knit/crochet, but find myself always not having enough time.
+ I also tinker with my servers a lot - I have a few services set up
+ and I love to play with configuring them or adding new ones.
+
+
+ I think self-expression and emotional maturity are really important.
+ I live to love. To experience life with the ones I love.
+
+
+
+
Contact
+
+
+ Feel free to message me. Here are a few links, that might prove
+ useful sometimes
+
+ And if you'd want to send me any crypto
+
+ cosmos1gy6tg8jaf4qwmpug8jp8kqnyy9en3lmjxq0twf
+ 46MiubQK8psbDWys429WvTQ71DyDiLkKmSLznoDYYFQbA6MfTvuVRJzSAbCCA17n8RGjCojx5GcpKH3q1DbpKJaQPCVcabi
+
+
-
-
-
- Learn
-
-
-
- Examples
-
-
-
- Go to nextjs.org →
-
+
+
+
+
+ Nikola Kubiczek © 2024
+
+
+
+
+ Made with{' '}
+
+ NextJS
+
+ , and{' '}
+
+ TailwindCSS
+ {' '}
+
+
+
+ Oh, wretched memory that compels us to remember the paths we took to
+ arrive at the present state of affairs! Further: as I lay awake but
+ still half dreaming, I felt that my body was not homogeneous, that
+ some parts were still those of a boy, and that my head was laughing
+ at my leg and ridiculing it, that my leg was laughing at my head,
+ that my finger was poking fun at my heart, my heart at my brain,
+ that my nose was thumbing itself at my eye, my eye chuckling and
+ bellowing at my nose — and all my parts were wildly raping each
+ other in an all-encompassing and piercing state of pan-mockery. Nor
+ did my fear lessen one iota when I reached full consciousness and
+ began reflecting on my life. On the contrary, it intensified even as
+ it was interrupted (or accentuated) by a giggle my mouth could not
+ hold back. I was halfway down the path of my life when I found
+ myself in a dark forest.
+
+ ——— Witold Gombrowicz, Ferdydurke
+
);
diff --git a/app/public.asc/route.ts b/app/public.asc/route.ts
new file mode 100644
index 0000000..625c284
--- /dev/null
+++ b/app/public.asc/route.ts
@@ -0,0 +1,167 @@
+import { NextRequest, NextResponse } from "next/server";
+
+export async function GET(_request: NextRequest) {
+ const pk = `-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+826qgOE=
+=PoyA
+-----END PGP PUBLIC KEY BLOCK-----`
+ return new NextResponse(pk, {
+ headers: {
+ 'Content-Type': 'text/plain; charset=utf-8'
+ }
+ });
+}
+
diff --git a/deployment.yaml b/deployment.yaml
new file mode 100644
index 0000000..ffa48a2
--- /dev/null
+++ b/deployment.yaml
@@ -0,0 +1,71 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: hamburger
+spec:
+ selector:
+ matchLabels:
+ app: hamburger
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: hamburger
+ spec:
+ containers:
+ - name: hamburger
+ image: registry.yaemiku.dev/yaemiku/hamburger
+ ports:
+ - name: app-port
+ containerPort: 3000
+ resources:
+ requests:
+ memory: "64Mi"
+ cpu: "250m"
+ limits:
+ memory: "128Mi"
+ cpu: "500m"
+ imagePullSecrets:
+ - name: regcred
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: hamburger
+spec:
+ ports:
+ - name: app-svc-port
+ port: 80
+ targetPort: app-port
+ selector:
+ app: hamburger
+
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: hamburger
+spec:
+ ingressClassName: traefik
+ rules:
+ - host: yaemiku.dev
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: hamburger
+ port:
+ number: 80
+ - host: www.yaemiku.dev
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: hamburger
+ port:
+ number: 80
\ No newline at end of file
diff --git a/package.json b/package.json
index 188b280..20b9597 100644
--- a/package.json
+++ b/package.json
@@ -9,19 +9,21 @@
"lint": "next lint"
},
"dependencies": {
+ "next": "15.1.2",
"react": "^19.0.0",
- "react-dom": "^19.0.0",
- "next": "15.1.2"
+ "react-dom": "^19.0.0"
},
"devDependencies": {
- "typescript": "^5",
+ "@eslint/eslintrc": "^3",
+ "@tailwindcss/typography": "^0.5.15",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "postcss": "^8",
- "tailwindcss": "^3.4.1",
"eslint": "^9",
"eslint-config-next": "15.1.2",
- "@eslint/eslintrc": "^3"
+ "postcss": "^8",
+ "swr": "^2.2.5",
+ "tailwindcss": "^3.4.1",
+ "typescript": "^5"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7c45c49..1483b53 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,6 +21,9 @@ importers:
'@eslint/eslintrc':
specifier: ^3
version: 3.2.0
+ '@tailwindcss/typography':
+ specifier: ^0.5.15
+ version: 0.5.15(tailwindcss@3.4.17)
'@types/node':
specifier: ^20
version: 20.17.10
@@ -39,6 +42,9 @@ importers:
postcss:
specifier: ^8
version: 8.4.49
+ swr:
+ specifier: ^2.2.5
+ version: 2.2.5(react@19.0.0)
tailwindcss:
specifier: ^3.4.1
version: 3.4.17
@@ -322,6 +328,11 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ '@tailwindcss/typography@0.5.15':
+ resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20'
+
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
@@ -1116,6 +1127,12 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
+ lodash.castarray@4.4.0:
+ resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
@@ -1310,6 +1327,10 @@ packages:
peerDependencies:
postcss: ^8.2.14
+ postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+
postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
@@ -1536,6 +1557,11 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ swr@2.2.5:
+ resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0
+
tailwindcss@3.4.17:
resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
engines: {node: '>=14.0.0'}
@@ -1606,6 +1632,11 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ use-sync-external-store@1.4.0:
+ resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -1872,6 +1903,14 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@tailwindcss/typography@0.5.15(tailwindcss@3.4.17)':
+ dependencies:
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 3.4.17
+
'@types/estree@1.0.6': {}
'@types/json-schema@7.0.15': {}
@@ -2873,6 +2912,10 @@ snapshots:
dependencies:
p-locate: 5.0.0
+ lodash.castarray@4.4.0: {}
+
+ lodash.isplainobject@4.0.6: {}
+
lodash.merge@4.6.2: {}
loose-envify@1.4.0:
@@ -3052,6 +3095,11 @@ snapshots:
postcss: 8.4.49
postcss-selector-parser: 6.1.2
+ postcss-selector-parser@6.0.10:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
@@ -3345,6 +3393,12 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ swr@2.2.5(react@19.0.0):
+ dependencies:
+ client-only: 0.0.1
+ react: 19.0.0
+ use-sync-external-store: 1.4.0(react@19.0.0)
+
tailwindcss@3.4.17:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -3453,6 +3507,10 @@ snapshots:
dependencies:
punycode: 2.3.1
+ use-sync-external-store@1.4.0(react@19.0.0):
+ dependencies:
+ react: 19.0.0
+
util-deprecate@1.0.2: {}
which-boxed-primitive@1.1.1:
diff --git a/public/file.svg b/public/file.svg
deleted file mode 100644
index 004145c..0000000
--- a/public/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/globe.svg b/public/globe.svg
deleted file mode 100644
index 567f17b..0000000
--- a/public/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/next.svg b/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/pattern.png b/public/pattern.png
new file mode 100644
index 0000000..ed6e0a2
Binary files /dev/null and b/public/pattern.png differ
diff --git a/public/pfp_fb_cropped.jpg b/public/pfp_fb_cropped.jpg
new file mode 100644
index 0000000..4da92d5
Binary files /dev/null and b/public/pfp_fb_cropped.jpg differ
diff --git a/public/pfp_formal_comp.jpg b/public/pfp_formal_comp.jpg
new file mode 100644
index 0000000..a7914a0
Binary files /dev/null and b/public/pfp_formal_comp.jpg differ
diff --git a/public/vercel.svg b/public/vercel.svg
deleted file mode 100644
index 7705396..0000000
--- a/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/window.svg b/public/window.svg
deleted file mode 100644
index b2b2a44..0000000
--- a/public/window.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 1362b88..ae592cf 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -14,5 +14,5 @@ export default {
},
},
},
- plugins: [],
+ plugins: [require('@tailwindcss/typography')],
} satisfies Config;