4 Commits

Author SHA1 Message Date
14c65bda05 Replaced JS Date API with dayjs
All checks were successful
Build and deploy website / build (push) Successful in 56s
2025-02-25 19:49:21 +01:00
16104d12ae Added more links, upddated TODO 2025-02-25 19:33:01 +01:00
83b2b9ac68 📦 Update dependencies
All checks were successful
Build and deploy website / build (push) Successful in 58s
2025-02-25 19:04:17 +01:00
8cc5c6971f Updated lockfile, replaced CMD with ENTRYPOINT
All checks were successful
Build and deploy website / build (push) Successful in 56s
2025-02-16 15:02:20 +01:00
8 changed files with 480 additions and 184 deletions

View File

@ -23,4 +23,4 @@ COPY --from=build /app/dist ./dist
ENV HOST=0.0.0.0 ENV HOST=0.0.0.0
ENV PORT=4321 ENV PORT=4321
EXPOSE 4321 EXPOSE 4321
CMD node ./dist/server/entry.mjs ENTRYPOINT node ./dist/server/entry.mjs

37
TODO.md
View File

@ -1,39 +1,40 @@
# TODO # TODO
## Code - [ ] License
- [ ] day.js for dates
- [ ] Nix Shell
## SSE ## Code
- [x] Correct Sitemap.xml - [ ] Nix Shell
- [x] Correct robots.txt - [ ] Analytics
- [x] Correct security.txt - [ ] Organize code better
## SEO
- [ ] Meta tags on each page
## Layout ## Layout
- [x] Show current page
- [x] Correct bg colour on entire page
- [x] Hamburger menu on mobile
- [ ] Dark mode toggle - [ ] Dark mode toggle
- [ ] Navigate using pathname / breadcrumbs - [ ] Navigate using pathname / breadcrumbs
## Accessibility ## Accessibility
- [x] Fix colours on buttons
- [x] Correct contrast
- [ ] All interactable elements have labels - [ ] All interactable elements have labels
- [x] Colour links, also in MDX posts
## I18N
- [ ] Markdown for text
## ~/ ## ~/
- [ ] About me description - [ ] About me description
- [x] Latest projects - [ ] Limit latest projects to N (5?)
- [x] Non-cat image
## ~/about ## ~/about
- [ ] About me - [ ] About me
## ~/links ## ~/links
- [ ] Add Bluesky link
- [ ] Add MusicBrainz link ## ~/projects
- [ ] Add Archidekt link - [ ] Translate projects
- [ ] Bachelor project
- [ ] Sparebank1 ActualBudget service
- [ ] More about this website
- [ ] RSS Feed
## ~/slashes ## ~/slashes
- [ ] List of all slashes - [ ] List of all slashes

View File

@ -1,5 +1,6 @@
{ {
"$schema": "https://inlang.com/schema/inlang-message-format", "$schema": "https://inlang.com/schema/inlang-message-format",
"archidektMessage": "My MTG cards and decks",
"hiIm": "Hi, I'm", "hiIm": "Hi, I'm",
"position": "Software Engineer", "position": "Software Engineer",
"aboutMe": "Dedicated developer currently working at Capgemini Bergen.", "aboutMe": "Dedicated developer currently working at Capgemini Bergen.",

View File

@ -1,5 +1,6 @@
{ {
"$schema": "https://inlang.com/schema/inlang-message-format", "$schema": "https://inlang.com/schema/inlang-message-format",
"archidektMessage": "Mine MTG kort og decks",
"hiIm": "Hei, jeg er", "hiIm": "Hei, jeg er",
"position": "Programvareutvikler", "position": "Programvareutvikler",
"aboutMe": "Engasjert utvikler som for tiden jobber hos Capgemini Bergen.", "aboutMe": "Engasjert utvikler som for tiden jobber hos Capgemini Bergen.",

View File

@ -16,27 +16,28 @@
"dependencies": { "dependencies": {
"@astrojs/check": "^0.9.4", "@astrojs/check": "^0.9.4",
"@astrojs/mdx": "^4.0.8", "@astrojs/mdx": "^4.0.8",
"@astrojs/node": "9.1.0", "@astrojs/node": "9.1.1",
"@astrojs/sitemap": "^3.2.1", "@astrojs/sitemap": "^3.2.1",
"@astrojs/svelte": "^7.0.4", "@astrojs/svelte": "^7.0.4",
"@iconify-json/pajamas": "^1.2.5", "@iconify-json/pajamas": "^1.2.5",
"@inlang/paraglide-astro": "^0.3.5", "@inlang/paraglide-astro": "^0.3.5",
"@inlang/paraglide-js": "1.11.8", "@inlang/paraglide-js": "1.11.8",
"@tailwindcss/typography": "^0.5.16", "@tailwindcss/typography": "^0.5.16",
"@tailwindcss/vite": "^4.0.6", "@tailwindcss/vite": "^4.0.9",
"astro": "5.3.0", "astro": "^5.3.1",
"astro-icon": "^1.1.5", "astro-icon": "^1.1.5",
"dayjs": "^1.11.13",
"sharp": "^0.33.5", "sharp": "^0.33.5",
"svelte": "^5.20.1", "svelte": "^5.20.4",
"tailwindcss": "^4.0.6", "tailwindcss": "^4.0.9",
"typescript": "^5.7.3" "typescript": "^5.7.3"
}, },
"devDependencies": { "devDependencies": {
"daisyui": "^5.0.0-beta.8", "daisyui": "^5.0.0-beta.8",
"prettier": "^3.5.1", "prettier": "^3.5.2",
"prettier-plugin-astro": "^0.14.1", "prettier-plugin-astro": "^0.14.1",
"prettier-plugin-svelte": "^3.3.3", "prettier-plugin-svelte": "^3.3.3",
"vite": "^6.1.0" "vite": "^6.2.0"
}, },
"prettier": { "prettier": {
"semi": false, "semi": false,

583
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,15 @@ export interface MyLink {
} }
export default [ export default [
{
title: "Archidekt",
url: "https://archidekt.com/u/Emberal",
message: m.archidektMessage(),
},
{
title: "Bluesky",
url: "https://bsky.app/profile/martials.no",
},
{ {
title: "Codeberg", title: "Codeberg",
url: "https://codeberg.org/martials", url: "https://codeberg.org/martials",
@ -55,6 +64,10 @@ export default [
alt: "Mastodon icon", alt: "Mastodon icon",
}, },
}, },
{
title: "ListenBrainz",
url: "https://listenbrainz.org/user/emberal/",
},
{ {
title: "Pixelfed", title: "Pixelfed",
url: "https://pixelfed.social/i/web/profile/261454857934868480", url: "https://pixelfed.social/i/web/profile/261454857934868480",

View File

@ -1,11 +1,12 @@
--- ---
import * as m from "@/paraglide/messages"
import Layout from "@/layouts/Layout.astro" import Layout from "@/layouts/Layout.astro"
import BadgeList from "@/components/badge/BadgeList.astro" import BadgeList from "@/components/badge/BadgeList.astro"
import GiteaLink from "@/components/links/GiteaLink.astro" import GiteaLink from "@/components/links/GiteaLink.astro"
import { languageTag } from "@/paraglide/runtime" import { languageTag } from "@/paraglide/runtime"
import { getEntry, render } from "astro:content" import { getEntry, render } from "astro:content"
import { Image } from "astro:assets" import { Image } from "astro:assets"
import * as m from "@/paraglide/messages" import dayjs from "dayjs"
import "@/styles/global.css" import "@/styles/global.css"
interface Props { interface Props {
@ -26,9 +27,12 @@ const {
createdAt, createdAt,
updatedAt, updatedAt,
} = entry!.data } = entry!.data
function localeDateString(isoString: string): string {
return dayjs(isoString).locale(languageTag()).format("YYYY-MM-DD")
}
--- ---
<!--TODO day.js / Temporal API for dates?-->
<Layout title={title} class="mx-auto max-w-[750px]"> <Layout title={title} class="mx-auto max-w-[750px]">
<div class="flex justify-between my-2"> <div class="flex justify-between my-2">
<div> <div>
@ -37,10 +41,10 @@ const {
</div> </div>
<div class="flex flex-col items-end"> <div class="flex flex-col items-end">
<p> <p>
{m.createdAt()}: {new Date(createdAt).toLocaleDateString(languageTag())} {m.createdAt()}: {localeDateString(createdAt)}
</p> </p>
<p> <p>
{m.updatedAt()}: {new Date(updatedAt).toLocaleDateString(languageTag())} {m.updatedAt()}: {localeDateString(updatedAt)}
</p> </p>
</div> </div>
</div> </div>