From 14cbf6ab0d418f1775f89d924b83851b8994c553 Mon Sep 17 00:00:00 2001 From: Tim Kainz Date: Wed, 15 Apr 2026 22:28:48 +0200 Subject: [PATCH] move experience section from home to about and center eyebrows properly --- src/pages/about/about.css | 34 +++++++++++++++++++ src/pages/about/about.html | 22 ++++++++++++ src/pages/about/about.spec.ts | 2 ++ src/pages/about/about.ts | 20 +++++++++++ src/pages/home/home.css | 31 +---------------- src/pages/home/home.html | 18 ---------- src/pages/home/home.ts | 20 ----------- .../project-detail/project-detail.css | 2 +- src/pages/projects/projects.css | 2 +- 9 files changed, 81 insertions(+), 70 deletions(-) diff --git a/src/pages/about/about.css b/src/pages/about/about.css index 7fea7f7..987636f 100644 --- a/src/pages/about/about.css +++ b/src/pages/about/about.css @@ -5,6 +5,7 @@ .section { margin-bottom: 3rem; + scroll-margin-top: 5.5rem; } .hero { @@ -81,6 +82,35 @@ h1 { margin-top: 0.5rem; } +.timeline { + display: grid; + gap: 1rem; +} + +.timeline-item { + display: grid; + grid-template-columns: 260px 1fr; + gap: 1rem; + padding: 1.1rem; + border-left: 3px solid #2f81f7; + border-radius: 12px; + background: rgba(22, 27, 34, 0.85); +} + +.timeline-item ul { + margin: 0; + padding-left: 1rem; + color: #c9d1d9; +} + +.timeline-item li + li { + margin-top: 0.45rem; +} + +.meta { + color: #8b949e; +} + @media (max-width: 760px) { .page { padding-top: 0.5rem; @@ -89,4 +119,8 @@ h1 { .hero { padding: 2rem 1.2rem; } + + .timeline-item { + grid-template-columns: 1fr; + } } diff --git a/src/pages/about/about.html b/src/pages/about/about.html index 2149f28..96ec591 100644 --- a/src/pages/about/about.html +++ b/src/pages/about/about.html @@ -33,4 +33,26 @@ + +
+
+

Experience

+

Hands-on delivery in backend systems and product architecture.

+
+
+ @for (item of timeline; track item.role + item.company) { +
+
+

{{ item.role }}

+

{{ item.company }} - {{ item.period }}

+
+
    + @for (highlight of item.highlights; track highlight) { +
  • {{ highlight }}
  • + } +
+
+ } +
+
diff --git a/src/pages/about/about.spec.ts b/src/pages/about/about.spec.ts index beb74e4..82d6980 100644 --- a/src/pages/about/about.spec.ts +++ b/src/pages/about/about.spec.ts @@ -25,5 +25,7 @@ describe('About', () => { const compiled = fixture.nativeElement as HTMLElement; expect(compiled.querySelector('h1')?.textContent).toContain('Fullstack developer'); expect(compiled.querySelectorAll('.card').length).toBe(component.pillars.length + 1); + expect(compiled.querySelector('#experience h2')?.textContent).toContain('Experience'); + expect(compiled.querySelectorAll('#experience .timeline-item').length).toBe(component.timeline.length); }); }); diff --git a/src/pages/about/about.ts b/src/pages/about/about.ts index 08e0021..a7fa2a9 100644 --- a/src/pages/about/about.ts +++ b/src/pages/about/about.ts @@ -6,6 +6,13 @@ export interface Pillar { description: string; } +interface TimelineItem { + role: string; + company: string; + period: string; + highlights: string[]; +} + @Component({ selector: 'app-about', imports: [CardComponent], @@ -35,6 +42,19 @@ export class About { 'Keep the codebase simple, testable, and easy to evolve.', 'Balance visual polish with performance and real-world usability.', ]; + + readonly timeline: TimelineItem[] = [ + { + role: 'Internship - Backend & Architecture Engineer', + company: 'Industrie Informatik GmbH', + period: '2025', + highlights: [ + 'Implemented a Spring Boot API for the Tasktimer Application including database access and reporting capabilities.', + 'Designed and implemented a reliable Jira connectivity solution for the Tasktimer backend, ensuring consistent data synchronization and performance.', + 'Contributed to architectural discussions and decisions, influencing the overall direction and stability of the Tasktimer application.', + ], + }, + ]; } export {}; diff --git a/src/pages/home/home.css b/src/pages/home/home.css index 24b1a3e..e112791 100644 --- a/src/pages/home/home.css +++ b/src/pages/home/home.css @@ -20,7 +20,7 @@ .eyebrow { width: fit-content; margin: 0 0 1rem; - padding: 0.3rem 0.7rem; + padding: 0.35rem 0.5rem 0.1rem 0.5rem; border: 1px solid rgba(88, 166, 255, 0.5); border-radius: 999px; font-size: 0.82rem; @@ -158,31 +158,6 @@ h2 { font-weight: 500; } -.timeline { - display: grid; - gap: 1rem; -} - -.timeline-item { - display: grid; - grid-template-columns: 260px 1fr; - gap: 1rem; - padding: 1.1rem; - border-left: 3px solid #2f81f7; - border-radius: 12px; - background: rgba(22, 27, 34, 0.85); -} - -.timeline-item ul { - margin: 0; - padding-left: 1rem; - color: #c9d1d9; -} - -.timeline-item li + li { - margin-top: 0.45rem; -} - @media (max-width: 760px) { .page-wrap { padding-top: 0.5rem; @@ -191,8 +166,4 @@ h2 { .hero { padding: 2rem 1.2rem; } - - .timeline-item { - grid-template-columns: 1fr; - } } diff --git a/src/pages/home/home.html b/src/pages/home/home.html index ee34f73..195c311 100644 --- a/src/pages/home/home.html +++ b/src/pages/home/home.html @@ -44,22 +44,4 @@ -
-

Experience

-
- @for (item of timeline; track item.role + item.company) { -
-
-

{{ item.role }}

-

{{ item.company }} - {{ item.period }}

-
-
    - @for (highlight of item.highlights; track highlight) { -
  • {{ highlight }}
  • - } -
-
- } -
-
diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index aaa22a3..5ceb9db 100644 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -9,13 +9,6 @@ interface Skill { level: string; } -interface TimelineItem { - role: string; - company: string; - period: string; - highlights: string[]; -} - @Component({ selector: 'app-home', imports: [RouterLink, CardComponent], @@ -46,17 +39,4 @@ export class Home { ]; readonly projects: Project[] = PROJECTS; - - readonly timeline: TimelineItem[] = [ - { - role: 'Internship - Backend & Architecture Engineer', - company: 'Industrie Informatik GmbH', - period: '2025', - highlights: [ - 'Implemented a Spring Boot API for the Tasktimer Application including database access and reporting capabilities.', - 'Designed and implemented a reliable Jira connectivity solution for the Tasktimer backend, ensuring consistent data synchronization and performance.', - 'Contributed to architectural discussions and decisions, influencing the overall direction and stability of the Tasktimer application.', - ], - }, - ]; } diff --git a/src/pages/projects/project-detail/project-detail.css b/src/pages/projects/project-detail/project-detail.css index cc15850..9b26350 100644 --- a/src/pages/projects/project-detail/project-detail.css +++ b/src/pages/projects/project-detail/project-detail.css @@ -17,7 +17,7 @@ .eyebrow { width: fit-content; margin: 0 0 1rem; - padding: 0.35rem 0.7rem; + padding: 0.35rem 0.5rem 0.1rem 0.5rem; border: 1px solid rgba(88, 166, 255, 0.5); border-radius: 999px; color: #9ecbff; diff --git a/src/pages/projects/projects.css b/src/pages/projects/projects.css index bb11afd..2aae2d6 100644 --- a/src/pages/projects/projects.css +++ b/src/pages/projects/projects.css @@ -17,7 +17,7 @@ .eyebrow { width: fit-content; margin: 0 0 1rem; - padding: 0.35rem 0.7rem; + padding: 0.35rem 0.5rem 0.1rem 0.5rem; border: 1px solid rgba(88, 166, 255, 0.5); border-radius: 999px; color: #9ecbff;