-
+
diff --git a/src/content/projects/Calendar before and after.png b/src/content/projects/Calendar before and after.png
new file mode 100644
index 0000000..e8e7453
Binary files /dev/null and b/src/content/projects/Calendar before and after.png differ
diff --git a/src/content/projects/Simplify-truths-website.png b/src/content/projects/Simplify-truths-website.png
new file mode 100644
index 0000000..cf46856
Binary files /dev/null and b/src/content/projects/Simplify-truths-website.png differ
diff --git a/src/content/projects/hotelService.mdx b/src/content/projects/hotelService.mdx
deleted file mode 100644
index 21e6e14..0000000
--- a/src/content/projects/hotelService.mdx
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: "Hotel Service"
-description: "REST API for managing hotels"
-heroImage: "./kevin-james.jpg"
-heroImageAlt: "The homepage of this site"
-tags: [Rust, Axum, Postgres, REST]
-source: "https://example.com"
-createdAt: "2024-09-22"
-updatedAt: "2024-09-22"
----
-
-Hello
diff --git a/src/content/projects/hvl-ics-simplifier.mdx b/src/content/projects/hvl-ics-simplifier.mdx
new file mode 100644
index 0000000..43beda9
--- /dev/null
+++ b/src/content/projects/hvl-ics-simplifier.mdx
@@ -0,0 +1,16 @@
+---
+title: "API for å forenkle TimeEdit iCalendar filer"
+description: "Et API som forenkler tittler i ICS filer fra TimeEdit"
+heroImage: "./Calendar before and after.png"
+heroImageAlt: "En kalender før og etter APIet har blitt brukt. Venstre side er før, høyre etter."
+tags: [API, Kotlin, Spring Boot, Tomcat, iCal4j, CI/CD]
+source: "https://github.com/emberal/hvl_ics_simplifier"
+createdAt: "2023-08-08"
+updatedAt: "2024-10-20"
+---
+
+Ble lei av hvor vanskelig det var å lese iCalendar filer fra HVL sin kalender i TimeEdit, så jeg lagde et API som gjør det enklere.
+Data for tittelen blir hentet fra den gamle tittelen.
+For å finne hvilken type hendselse det er, sjekkes beskrivelsen og lokasjonen.
+
+APIet er skrevet i Kotlin med Spring boot, og hosted på en selvhostet tomcat server.
\ No newline at end of file
diff --git a/src/content/projects/simplify-truths.mdx b/src/content/projects/simplify-truths.mdx
new file mode 100644
index 0000000..bc5c48b
--- /dev/null
+++ b/src/content/projects/simplify-truths.mdx
@@ -0,0 +1,26 @@
+---
+title: "Forenkle sannhetsverdier og sannhetstabeller"
+description: "Forenkle sannhetsuttrykk og opprette sannhetstabeller"
+heroImage: "./Simplify-truths-website.png"
+heroImageAlt: "Nettsiden med en sannhetstabell"
+tags: [TypeScript, SolidJS, Tailwind css, Nettside, Java, API, Spring Boot, Raspberry Pi, Apache, Tomcat]
+source: "https://github.com/h600878/martials.no"
+createdAt: "2022-11-08"
+updatedAt: "2024-10-20"
+---
+{/* TODO change to Rust */}
+Noen sannhetsverdier kan bli ganske store, og kompliserte. Derfor har jeg laget dette programmet for å forenkle uttrykk mest mulig.
+Programmet bruker flere kjente metoder for å skrive om uttrykkene. Hvilke uttrykk som er brukt og hvilke endringer de gjorde,
+kan vises i menyen under søkefeltet.
+
+I tillegg til å bare forenkle uttrykk, kan man også generere en sannhetstabell med alle mulige verdier i uttrykket.
+Hvis man ikke ønsker å forenkle uttrykket, men bare generere tabellen, kan man enkelt skru av forenkling. I tillegg har
+man muligheten til å filtrere resultat, enten ved å skjule sanne eller usanne verdier. Eller ved å sortere etter sanne
+eller usanne først.
+
+Nettsiden er laget med TypeScript, SolidJS og Tailwind CSS. API-et er laget med Java og Spring Boot.
+Begge kjører på min egen raspberry pi 4, nettsiden er hostet på en apache2 tjener, mens API-et ligger på en tomcat tjener.
+Lenke til nettsiden.
+
+Spørringer kan gjøres mot API-et kan utføres med GET eller POST. API-et returnerer JSON.
+[Lenke til API-docs](https://api.martials.no/simplify-truths)
\ No newline at end of file
diff --git a/src/pages/en/projects/[project].astro b/src/pages/en/projects/[project].astro
index fbfec2f..d2de0f2 100644
--- a/src/pages/en/projects/[project].astro
+++ b/src/pages/en/projects/[project].astro
@@ -1,5 +1,5 @@
---
-import ProjectPage from "../../../components/projects/ProjectPage.astro"
+import ProjectPage from "@/components/projects/ProjectPage.astro"
import { type GetStaticPathsResult } from "astro"
// Prerender the page as static HTML during build
@@ -7,8 +7,9 @@ export const prerender = true
export function getStaticPaths(): GetStaticPathsResult {
return [
- { params: { project: "hotelservice" } },
- { params: { project: "homepage" } }
+ { params: { project: "hvl-ics-simplifier" } },
+ { params: { project: "homepage" } },
+ { params: { project: "simplify-truths" } }
]
}
diff --git a/src/pages/projects/[project].astro b/src/pages/projects/[project].astro
index 5064ead..d2de0f2 100644
--- a/src/pages/projects/[project].astro
+++ b/src/pages/projects/[project].astro
@@ -7,8 +7,9 @@ export const prerender = true
export function getStaticPaths(): GetStaticPathsResult {
return [
- { params: { project: "hotelservice" } },
- { params: { project: "homepage" } }
+ { params: { project: "hvl-ics-simplifier" } },
+ { params: { project: "homepage" } },
+ { params: { project: "simplify-truths" } }
]
}
diff --git a/src/styles/global.css b/src/styles/global.css
index ac1d433..2977217 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -10,7 +10,7 @@
@layer base {
br {
- @apply my-4;
+ @apply my-0.5;
}
h1 {
@@ -20,4 +20,9 @@
h2 {
@apply text-3xl font-bold mb-2;
}
+
+ /* TODO change default style*/
+ a {
+ @apply link
+ }
}
diff --git a/src/types/types.ts b/src/types/types.ts
index a738bb4..7501ccc 100644
--- a/src/types/types.ts
+++ b/src/types/types.ts
@@ -1 +1,5 @@
+import type { CollectionEntry } from "astro:content"
+
export type AbsolutePathname = `/${string}`
+
+export type Project = CollectionEntry<"projects">
diff --git a/src/utils/linking.ts b/src/utils/linking.ts
index 183ffe0..eeb7fd1 100644
--- a/src/utils/linking.ts
+++ b/src/utils/linking.ts
@@ -1,12 +1,18 @@
import type { AvailableLanguageTag } from "@/paraglide/runtime.js"
-import type { AbsolutePathname } from "@/types/types.ts"
+import type { AbsolutePathname, Project } from "@/types/types.ts"
interface TranslatedPathnames {
nb: AbsolutePathname
en: `/en${AbsolutePathname}`
}
-export type NavLink = "/" | "/contact" | "/projects" | "/links" | "/hardware"
+export type NavLink =
+ "/"
+ | "/contact"
+ | "/projects"
+ | `/projects/${Project["id"]}`
+ | "/links"
+ | "/hardware"
const paths: Set = new Set([
"/",
@@ -34,9 +40,19 @@ for (const path of paths) {
export function localizePathname(
pathname: NavLink,
locale: AvailableLanguageTag
-) {
- if (pathnames[pathname]) {
- return pathnames[pathname][locale]
+): string {
+ const pathnameParts = pathname.split("/")
+ const firstSegment: AbsolutePathname = `/${pathnameParts[1]}`
+
+ if (pathnames[firstSegment]) {
+ const localizedPathname = pathnames[firstSegment][locale]
+
+ const rest = pathnameParts.slice(2)
+ if (rest.length > 0) {
+ return `${localizedPathname}/${rest.join("/")}`
+ } else {
+ return localizedPathname
+ }
}
return pathname
}