<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Maintenance Log on Jesper Andersen - Blog &amp; DevLog</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/</link><description>Recent content in Maintenance Log on Jesper Andersen - Blog &amp; DevLog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>cph-ja472@stud.ek.dk (Jesper Andersen)</managingEditor><webMaster>cph-ja472@stud.ek.dk (Jesper Andersen)</webMaster><copyright>© 2026 Jesper Andersen</copyright><lastBuildDate>Mon, 01 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jespertandersen.github.io/Portfolio/projects/maintenancelog/index.xml" rel="self" type="application/rss+xml"/><item><title>Maintenance Log Frontend - Fifteenth Week: Frontend Final Wrap-Up (From Kickoff to Deployed App)</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fifteenthweek/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fifteenthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 15: Frontend Final Wrap-Up (From Kickoff to Deployed App)&#10; &lt;div id="devlog-week-15-frontend-final-wrap-up-from-kickoff-to-deployed-app" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-15-frontend-final-wrap-up-from-kickoff-to-deployed-app" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;When I wrote the first frontend entry (Week 9), the React app was basically a shell: Vite setup, a layout route, a drawer menu, and a couple of placeholder pages driven by mock data.&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Fourteenth Week: Manager/Admin Flows, Create Pages, and Session Expiry Handling</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fourteenthweek/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fourteenthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 14: Manager/Admin Flows, Create Pages, and Session Expiry Handling&#10; &lt;div id="devlog-week-14-manageradmin-flows-create-pages-and-session-expiry-handling" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-14-manageradmin-flows-create-pages-and-session-expiry-handling" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This entry covers the manager/admin-facing workflows (create pages and domain admin actions), and ends with a centralized error-handling + session expiry (token expiration) flow to keep UX consistent across the app.&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Thirteenth Week: Employee Lists, Log Views, and LogCard Refactor</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-thirteenthweek/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-thirteenthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 13: Employee Lists, Log Views, and LogCard Refactor&#10; &lt;div id="devlog-week-13-employee-lists-log-views-and-logcard-refactor" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-13-employee-lists-log-views-and-logcard-refactor" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This entry focuses on the employee list + employee log viewing flows, plus a refactor of &lt;code&gt;LogCard&lt;/code&gt; to support reuse across more contexts (and avoid invalid nested interactive elements).&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Twelfth Week: User Profiles, Employee Admin Actions, and Form Patterns</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-twelfthweek/</link><pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-twelfthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 12: User Profiles, Employee Admin Actions, and Form Patterns&#10; &lt;div id="devlog-week-12-user-profiles-employee-admin-actions-and-form-patterns" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-12-user-profiles-employee-admin-actions-and-form-patterns" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This entry covers the employee-facing parts of the UI: profile views, edit flows, admin actions, and the form patterns used to keep components maintainable.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;What Changed&#10; &lt;div id="what-changed" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-changed" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;UserProfile&lt;/code&gt; supports both &amp;ldquo;me&amp;rdquo; and viewing other employees via dynamic route params&lt;/li&gt;&#10;&lt;li&gt;Profile page extracted into focused subcomponents:&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;EditProfileForm&lt;/code&gt;, &lt;code&gt;AdminActions&lt;/code&gt;, &lt;code&gt;PasswordChangeForm&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Form handling uses a mix of controlled inputs and a &lt;code&gt;FormData&lt;/code&gt; approach (when appropriate)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;useEffect&lt;/code&gt; race-condition prevention via an &lt;code&gt;ignore&lt;/code&gt; flag to avoid setting state after unmount&lt;/li&gt;&#10;&lt;li&gt;Admin-only employee actions (deactivate/reactivate) gated by role and disallowed on own profile&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;User Profile: “Me” vs “Other Employee”&#10; &lt;div id="user-profile-me-vs-other-employee" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#user-profile-me-vs-other-employee" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The profile route supports multiple entry points:&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Eleventh Week: Assets, Logs, Filtering, and Creating Maintenance Entries</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-eleventhweek/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-eleventhweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 11: Assets, Logs, Filtering, and Creating Maintenance Entries&#10; &lt;div id="devlog-week-11-assets-logs-filtering-and-creating-maintenance-entries" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-11-assets-logs-filtering-and-creating-maintenance-entries" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This entry focuses on the asset/log workflow: fetching real data from the API, filtering lists, displaying asset details, and adding log creation behind role checks.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;What Changed&#10; &lt;div id="what-changed" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-changed" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;AssetList&lt;/code&gt; now fetches from the real backend API&lt;/li&gt;&#10;&lt;li&gt;Active/inactive filtering implemented via a reusable &lt;code&gt;Select&lt;/code&gt; component&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;AssetDetail&lt;/code&gt; fetches asset + logs in parallel using &lt;code&gt;Promise.all&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Status and task type filters wired to server-side filtering&lt;/li&gt;&#10;&lt;li&gt;&amp;ldquo;Create log&amp;rdquo; is role-gated (TECHNICIAN+) and also hidden for inactive assets&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;CreateLog&lt;/code&gt; includes client-side validation and prevents double-submit&lt;/li&gt;&#10;&lt;li&gt;CSS Modules adopted for scoped styling&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Asset List: Fetch + Filter Pattern&#10; &lt;div id="asset-list-fetch--filter-pattern" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#asset-list-fetch--filter-pattern" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;AssetList&lt;/code&gt; implements a reusable pattern used elsewhere in the frontend:&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Tenth Week: Frontend Auth, Routing, and API Client Structure</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-tenthweek/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-tenthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 10: Frontend Auth, Routing, and API Client Structure&#10; &lt;div id="devlog-week-10-frontend-auth-routing-and-api-client-structure" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-10-frontend-auth-routing-and-api-client-structure" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This entry covers the &amp;ldquo;plumbing&amp;rdquo; for the React frontend: the route layout, guarded routes by role, auth rehydration, and an API layer split by domain.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;What Changed&#10; &lt;div id="what-changed" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-changed" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Vite + React + React Router setup with a domain-organized structure (&lt;code&gt;pages/&lt;/code&gt;, &lt;code&gt;components/&lt;/code&gt;, &lt;code&gt;utils/&lt;/code&gt;, &lt;code&gt;context/&lt;/code&gt;, &lt;code&gt;styles/&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;Declarative nested routing with a layout route and &lt;code&gt;&amp;lt;Outlet /&amp;gt;&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Auth context for user state, token rehydration, and role checks&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;ProtectedRoute&lt;/code&gt; component for nestable route protection&lt;/li&gt;&#10;&lt;li&gt;API layer split by domain with a shared &lt;code&gt;apiRequest()&lt;/code&gt; helper&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Routing: Nested Layout + Guards&#10; &lt;div id="routing-nested-layout--guards" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#routing-nested-layout--guards" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The router is set up as nested routes:&lt;/p&gt;</description></item><item><title>Maintenance Log Frontend - Ninth Week: React Frontend Kickoff (Vite, Routing, Layout)</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-ninthweek/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-ninthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 9: React Frontend Kickoff (Vite, Routing, Layout)&#10; &lt;div id="devlog-week-9-react-frontend-kickoff-vite-routing-layout" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-9-react-frontend-kickoff-vite-routing-layout" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This week starts the frontend phase of the Maintenance Log project. The focus was not new domain functionality yet, but establishing a clean React baseline: routing, layout composition, reusable UI building blocks, and a consistent styling foundation.&lt;/p&gt;</description></item><item><title>Maintenance Log - Final Backend Week</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-eightweek/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-eightweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 8: Final Backend Hardening &amp;amp; Reflection&#10; &lt;div id="devlog-week-8-final-backend-hardening--reflection" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-8-final-backend-hardening--reflection" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This is my last backend-focused post before I shift to a React frontend. This week wasn’t about new domain features — it was about hardening what I already built: tightening a security flaw, centralizing validation, and cleaning up the external API seeding integration.&lt;/p&gt;</description></item><item><title>Maintenance Log - Seventh Week: Deployment, CI/CD &amp; Running It For Real</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-seventhweek/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-seventhweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 7: Deployment, CI/CD &amp;amp; Running It For Real&#10; &lt;div id="devlog-week-7-deployment-cicd--running-it-for-real" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-7-deployment-cicd--running-it-for-real" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This week was all about getting the project out of my IDE and onto an actual server.&#10;The goal wasn’t to add new domain features — it was to make the API build, ship, and update automatically.&lt;/p&gt;</description></item><item><title>Maintenance Log - Sixth Week: JWT Authentication &amp; Role-Based Authorization</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-sixthweek/</link><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-sixthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 6: JWT Authentication &amp;amp; Role-Based Authorization&#10; &lt;div id="devlog-week-6-jwt-authentication--role-based-authorization" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-6-jwt-authentication--role-based-authorization" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This week was entirely dedicated to building a deployment-ready authentication and authorization system. No new domain features—just securing everything that already exists. The focus was on JWT tokens, role hierarchies, and integrating security seamlessly into the existing architecture without breaking tests or existing functionality.&lt;/p&gt;</description></item><item><title>Maintenance Log - Fifth Week: Interface Refinement, REST API Testing &amp; The Mapper Pattern</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fifthweek/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fifthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 5: Interface Refinement, REST API Testing &amp;amp; The Mapper Pattern&#10; &lt;div id="devlog-week-5-interface-refinement-rest-api-testing--the-mapper-pattern" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-5-interface-refinement-rest-api-testing--the-mapper-pattern" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;This week marked a significant shift from building features to refining architecture and establishing a robust testing foundation. The focus was on three major areas: granular interface design following ISP principles, comprehensive REST API testing with RestAssured, and implementing the DTO mapper pattern.&lt;/p&gt;</description></item><item><title>Maintenance Log - Fourth Week: Building a Production-Style REST API</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fourthweek/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-fourthweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 4: Building a Production-Style REST API&#10; &lt;div id="devlog-week-4-building-a-production-style-rest-api" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-4-building-a-production-style-rest-api" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;Welcome back! This week was all about taking the solid persistence layer and API integration work from previous weeks and exposing it all through a proper REST API. The goal: build a complete, well-architected HTTP interface using Javalin 7.0.1 that follows REST principles and industry best practices.&lt;/p&gt;</description></item><item><title>Maintenance Log - Third Week: External API Integration &amp; Concurrent Processing</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-thirdweek/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-thirdweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 3: External API Integration &amp;amp; Concurrent Processing&#10; &lt;div id="devlog-week-3-external-api-integration--concurrent-processing" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-3-external-api-integration--concurrent-processing" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;Alright, welcome back! After a little bit of a break due to unforeseen circumstances, I&amp;rsquo;ve now continued my work on this little project of mine. The goal this week was to integrate and fetch some data from an external API and use it somehow — so, without further ado:&lt;/p&gt;</description></item><item><title>Maintenance Log - Second Week: Relations, DAOs &amp; Exception Handling</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-secondweek/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-secondweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 2: Relations, DAOs &amp;amp; Exception Handling&#10; &lt;div id="devlog-week-2-relations-daos--exception-handling" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-2-relations-daos--exception-handling" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;So, welcome to this second entry of my Devlog. Without further ado, let&amp;rsquo;s continue into this week&amp;rsquo;s additions.&lt;/p&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Relations, DAOs and exception handling&#10; &lt;div id="relations-daos-and-exception-handling" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#relations-daos-and-exception-handling" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;This week&amp;rsquo;s primary goal was to get the necessary relations between my entities up and running, begin to finalize the DAOs for each, and integrate interfaces both for simple CRUD and for specific queries across the board. After that, the project looked a bit like this:&lt;/p&gt;</description></item><item><title>Maintenance Log - First Week: Project Kickoff &amp; Scope</title><link>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-firstweek/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><author>cph-ja472@stud.ek.dk (Jesper Andersen)</author><guid>https://jespertandersen.github.io/Portfolio/projects/maintenancelog/maintenancelog-firstweek/</guid><description>&lt;h1 class="relative group"&gt;Devlog Week 1: Project Kickoff &amp;amp; Scope&#10; &lt;div id="devlog-week-1-project-kickoff--scope" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#devlog-week-1-project-kickoff--scope" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;So, first of all, welcome to this first week post of the development of my little maintenance log. Just for posterity, let&amp;rsquo;s start with what is in my README for the project, since that actually breaks down what it is:&lt;/p&gt;</description></item></channel></rss>