From 1693a2620c9a86b08c89847cb283d80d39428fcd Mon Sep 17 00:00:00 2001 From: Morten Olsen Date: Tue, 23 Sep 2025 23:13:04 +0200 Subject: [PATCH] added techstack --- content/work/bilzonen.mdx | 3 +++ content/work/sampension/index.mdx | 5 +++++ content/work/trendsales-1/index.mdx | 4 ++++ content/work/trendsales-2.mdx | 5 +++++ content/work/trendsales-3.mdx | 4 ++++ src/content.config.ts | 1 + src/layouts/frontpage/work/work.astro | 22 ++++++++++++++++++++++ 7 files changed, 44 insertions(+) diff --git a/content/work/bilzonen.mdx b/content/work/bilzonen.mdx index 5b7457a..088a086 100644 --- a/content/work/bilzonen.mdx +++ b/content/work/bilzonen.mdx @@ -5,6 +5,9 @@ startDate: 2010-06-01 endDate: 2012-02-28 summary: As a part-time web developer at bilzonen.dk, I managed both routine maintenance and major projects like new modules and integrations, introduced a custom provider-model system in .NET (C#) for data management, and established the development environment, including server setup and custom tools for building and testing. slug: bilzonen-1 +stack: +- .NET +- UmbracoCMS --- I work as a part-time web developer on bilzonen.dk. I have worked with both day-to-day maintenance and large scale projects (new search module, integration of new data catalog, mobile site, new-car-catalog and the entire dealer solution). The page is an Umbraco solution, with all .NET (C#) code. I have introduced a new custom build provider-model system, which allows data-providers to move data between data stores, external services, and the site. (search, caching and external car date is running through the provider system). Also, i have set up the development environment, from setting up virtual server hosts to building custom tool for building and unit testing. diff --git a/content/work/sampension/index.mdx b/content/work/sampension/index.mdx index f2d6580..04fe4b4 100644 --- a/content/work/sampension/index.mdx +++ b/content/work/sampension/index.mdx @@ -6,6 +6,11 @@ endDate: 2021-12-31 logo: ./assets/logo.jpeg summary: At Sampension, a Danish pension fund, I designed and helped build a cross-platform frontend architecture using React Native and React Native for Web, ensuring a unified, maintainable codebase for native iOS, Android, and web applications across devices. slug: sampension +stack: +- TypeScript +- React Native +- Redux +- Gatsby --- Sampension is a danish pension fund and my work has been to design and help to build a frontend architecture that would run natively on iOS and Android as well as on the web on both desktop and mobile devices. diff --git a/content/work/trendsales-1/index.mdx b/content/work/trendsales-1/index.mdx index 21ff8c0..63290df 100644 --- a/content/work/trendsales-1/index.mdx +++ b/content/work/trendsales-1/index.mdx @@ -7,6 +7,10 @@ logo: ./assets/logo.png banner: ./assets/banner.png summary: At Trendsales, I started with a part-time role focused on maintaining the API for the iOS app, eventually diversifying my responsibilities to include broader platform development, allocating 25-50% of my time to the API. slug: trendales-1 +stack: +- .NET MVC +- Microsoft SQL +- ASP --- I got a part-time job at Trendsales, where my primary responsibility was maintaining the API which powered the iOS app. Quickly my tasks became more diverse, and I ended using about 25-50 percent of my time on the API, while the remaining was spend doing work on the platform in general. diff --git a/content/work/trendsales-2.mdx b/content/work/trendsales-2.mdx index b355e15..a675f13 100644 --- a/content/work/trendsales-2.mdx +++ b/content/work/trendsales-2.mdx @@ -6,6 +6,11 @@ endDate: 2015-12-31 logo: ./trendsales-1/assets/logo.png summary: I led the development of a new Xamarin-based iOS app from scratch at Trendsales, including a supporting API and backend work, culminating in a successful app with over 15 million screen views and 1.5 million sessions per month, and later joined a team to expand into Android development. slug: trendsales-2 +stack: +- Xamarin +- .NET WebAPI +- Microsoft SQL +- Android Java SDK --- I became responsible for the iOS platform, which was a task that required a new app to be built from the ground up using _Xamarin_. In addition to that, a new API to support the app along with support for our larger vendors was needed which had to be build using something closely similar to _Microsoft MVC_ so that other people could join the project at a later stage. diff --git a/content/work/trendsales-3.mdx b/content/work/trendsales-3.mdx index 42a9c39..fc7f994 100644 --- a/content/work/trendsales-3.mdx +++ b/content/work/trendsales-3.mdx @@ -6,6 +6,10 @@ endDate: 2017-12-31 logo: ./trendsales-1/assets/logo.png summary: In 2015, I spearheaded the creation of a new frontend architecture for Trendsales, leading to the development of m.trendsales.dk, using React and Redux, and devising bespoke frameworks for navigation, flexible routing, skeleton page transitions, and integrating workflows across systems like Github, Jira, Octopus Deploy, AppVeyor, and Docker. slug: trendsales-3 +stack: +- React +- PhoneGap +- Redux --- In 2015 Trendsales decided to build an entirely new platform. It became my responsibility to create a modernized frontend architecture. The work began in 2016 with just me on the project and consisted of a proof of concept version containing everything from framework selection, structure, style guides build chain, continuous deployment, and an actual initial working version. The result where the platform which I was given technical ownership over and which I, along with two others, worked on expanding over the next year. The platform is currently powering _m.trendsales.dk_. The project is build using React and state management are done using Redux. In addition to the of the shelve frameworks, we also needed to develop quite a few bespoke frameworks, in order to meet demands. Among others, these were created to solve the following issues: diff --git a/src/content.config.ts b/src/content.config.ts index e5db1d1..4faf8ba 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -34,6 +34,7 @@ const work = defineCollection({ url: z.string().optional(), logo: image().optional(), banner: image().optional(), + stack: z.array(z.string()).optional(), }), }); diff --git a/src/layouts/frontpage/work/work.astro b/src/layouts/frontpage/work/work.astro index 1c96c4f..e774af9 100644 --- a/src/layouts/frontpage/work/work.astro +++ b/src/layouts/frontpage/work/work.astro @@ -35,6 +35,13 @@ const work = allWork.sort((a, b) => {

{item.data.summary}

+ {item.data.stack && ( +
+ {item.data.stack.map((item) => ( +
{item}
+ ))} +
+ )} )) @@ -109,4 +116,19 @@ const work = allWork.sort((a, b) => { flex-direction: column; gap: var(--space-md); } + + .stack { + display: flex; + gap: var(--space-sm); + flex-wrap: wrap; + font-size: var(--font-xs); + + div { + margin-right: var(--space-xxs); + margin-bottom: var(--space-xxs); + padding: var(--space-xs) var(--space-sm); + border-radius: var(--radius-sm); + border: 1px solid var(--color-border); + } + }