3. semester eksamensprojekt3rd semester exam project

Spinchy KPI Dashboard

Fullstack KPI-dashboard bygget til en reel virksomhed. Aggregerer ordredata fra tre systemer — Rackbeat lager-API, C1st POS og webshop — og præsenterer omsætning, dækningsbidrag og topsælgere med år-til-år sammenligning på tværs af salgskanaler. Fullstack KPI dashboard built for a real company. Aggregates order data from three systems — the Rackbeat inventory API, C1st POS and webshop — presenting revenue, contribution margin and top sellers with year-over-year comparison across sales channels.

Java Spring Boot JavaScript MySQL REST API JWT Docker
spinchy-dashboard.app
Mock data
Spinchy
Frederiksberg Webshop 🇩🇰 Aarhus Alle
Omsætning MTD
847.320 kr
▲ +12,3% vs. sidste år
YTD: 6.234.180 kr
Ordrer MTD
234
▲ +8,1% vs. sidste år
Index 112
Dækningsbidrag
123%
DG%: 123%
▲ +1,4 pp vs. sidste år
Index omsætning
MTD
112
YTD
108
Topsælgere — Juli 2025
# Produkt Kategori Solgte Omsætning DB DG%
1 La Marzocco Linea Micra Espressomaskiner 12 249.600 kr 123% 123%
2 Sage Barista Express Impress Espressomaskiner 28 139.720 kr 123% 123%
3 Niche Zero Kværn Kværne 15 97.425 kr 123% 123%
4 Baratza Encore ESP Kværne 22 74.800 kr 123% 123%
5 Acaia Pearl Scale Tilbehør 34 61.200 kr 123% 123%

Hvad løser detWhat it solves

  • Samler ordredata fra tre adskilte systemer i én database, så ledelsen slipper for at hente tal manuelt fra tre stederConsolidates order data from three separate systems into one database, so management no longer needs to pull numbers manually from three places
  • Viser omsætning, dækningsbidrag og index med sammenligning mod samme periode sidste årShows revenue, contribution margin and index with comparison to the same period last year
  • Topsælger-tabel med sortering på omsætning, DB og DG%Top-seller table sortable by revenue, contribution margin and margin %
  • Kanalfilter — kan isolere data pr. butik eller webshopChannel filter — can isolate data per store or webshop
  • JWT-login så dashboardet er beskyttetJWT login so the dashboard is protected

ArkitekturArchitecture

Frontend

Vanilla JavaScript med komponent-arkitektur — KpiRow, MarginCard, TopProductsTable, ChannelPicker, DatePickerVanilla JavaScript with a component architecture — KpiRow, MarginCard, TopProductsTable, ChannelPicker, DatePicker

Backend

Java Spring Boot REST API med JWT-autentifikation. Henter og normaliserer data fra Rackbeat og C1st API'erne og gemmer i MySQLJava Spring Boot REST API with JWT authentication. Fetches and normalizes data from the Rackbeat and C1st APIs and stores it in MySQL

Data

~44.000 ordrer, ~112.000 ordrelinjer, ~3.900 produkter. VAT-normalisering på tværs af de to API-formater~44,000 orders, ~112,000 order lines, ~3,900 products. VAT normalization across the two API formats

KildekodeSource code

Repos under Krymmel-Kaemperne er private af hensyn til virksomhedens data — kodeeksempler fremvises gerne ved forespørgsel. Repos under Krymmel-Kaemperne are private to protect the company's data — code samples are gladly shared on request.

Kontakt mig →Contact me →