Files
dzanan.net/src/app/features/cv/cv-section.component.ts
v7 bd3f260700
All checks were successful
Deploy dzanan.net / deploy (push) Successful in 1m14s
some changes
2026-09-06 19:02:46 +02:00

226 lines
8.0 KiB
TypeScript
Executable File

import { ChangeDetectionStrategy, Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SectionComponent } from '../../shared/ui/section/section.component';
type CourseItem = {
title: string;
provider: string;
period: string;
};
@Component({
selector: 'app-cv-section',
standalone: true,
imports: [CommonModule, SectionComponent],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<app-section
[id]="sectionId"
eyebrow="CV"
title="Snapshot of my experience"
lead="Highlights of how I work and where I add value. Full CV is ready to share on request."
>
<div class="grid gap-6 lg:grid-cols-3">
<div
class="rounded-xl border border-zinc-200/70 bg-[#fbfcfa]/80 p-4 shadow-sm shadow-zinc-200/40 dark:border-slate-800/60 dark:bg-slate-900/40 dark:shadow-none"
>
<p class="text-sm font-semibold text-emerald-600 dark:text-emerald-300">
Experience focus
</p>
<ul class="mt-2 space-y-2 text-sm text-zinc-600 dark:text-zinc-300">
<li>• Software architecture, product ownership, and team support.</li>
<li>• Full-stack development across .NET, Angular, and mobile apps.</li>
<li>• Designing, testing, and maintaining reliable C# services.</li>
<li>• Turning user feedback into prioritized product delivery.</li>
</ul>
</div>
<div
class="rounded-xl border border-zinc-200/70 bg-[#fbfcfa]/80 p-4 shadow-sm shadow-zinc-200/40 dark:border-slate-800/60 dark:bg-slate-900/40 dark:shadow-none"
>
<p class="text-sm font-semibold text-emerald-600 dark:text-emerald-300">Skills & tools</p>
<div class="mt-3 flex flex-wrap gap-2 text-xs">
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
Angular
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
TypeScript
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
.NET
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
Blazor
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
Web API
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
MSSQL
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
.NET MAUI
</span>
<span class="rounded-full bg-emerald-50/80 px-3 py-1 text-zinc-700 ring-1 ring-emerald-100/70 dark:bg-slate-800/80 dark:text-zinc-200 dark:ring-0">
Ionic
</span>
</div>
</div>
<div
class="rounded-xl border border-zinc-200/70 bg-[#fbfcfa]/80 p-4 shadow-sm shadow-zinc-200/40 dark:border-slate-800/60 dark:bg-slate-900/40 dark:shadow-none"
>
<p class="text-sm font-semibold text-emerald-600 dark:text-emerald-300">
How I structure work
</p>
<ul class="mt-2 space-y-2 text-sm text-zinc-600 dark:text-zinc-300">
<li>• Shape product roadmaps through research and prioritization.</li>
<li>• Manage backlogs, reviews, and retrospectives.</li>
<li>• Collaborate with UX/UI, sales, marketing, and engineering.</li>
<li>
• Monitor KPIs and user feedback for continuous improvement.
</li>
</ul>
</div>
</div>
<div
class="mt-6 rounded-xl border border-zinc-200/70 bg-[#fbfcfa]/80 p-4 shadow-sm shadow-zinc-200/40 dark:border-slate-800/60 dark:bg-slate-900/40 dark:shadow-none"
>
<div class="flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between">
<div>
<p class="text-sm font-semibold text-emerald-600 dark:text-emerald-300">
Courses & certifications
</p>
<p class="mt-1 text-sm text-zinc-600 dark:text-zinc-300">
Publicly listed learning history from LinkedIn-derived profile data.
</p>
</div>
<span class="text-xs text-zinc-500 dark:text-zinc-400">
2018 - 2024
</span>
</div>
<div class="mt-4 grid gap-3 md:grid-cols-2">
@for (course of courses; track course.title) {
<article
class="rounded-lg border border-zinc-200/70 bg-white/55 p-3 dark:border-slate-800/70 dark:bg-slate-950/30"
>
<div class="flex items-start justify-between gap-3">
<h3 class="text-sm font-semibold text-zinc-800 dark:text-zinc-50">
{{ course.title }}
</h3>
<span class="shrink-0 text-xs text-zinc-500 dark:text-zinc-400">
{{ course.period }}
</span>
</div>
<p class="mt-1 text-xs text-zinc-500 dark:text-zinc-400">
{{ course.provider }}
</p>
</article>
}
</div>
</div>
</app-section>
`
})
export class CvSectionComponent {
readonly sectionId = 'cv';
readonly courses: CourseItem[] = [
{
title: 'Learn Go Course',
provider: 'Codecademy',
period: 'Apr 2024'
},
{
title: 'Reactive Angular RxJS (Angular 17)',
provider: 'Udemy',
period: 'Mar 2024'
},
{
title: 'C# Advanced Topics: Prepare for Technical Interviews',
provider: 'Udemy',
period: 'Sep 2021'
},
{
title: 'Learning Docker',
provider: 'LinkedIn',
period: 'Sep 2021'
},
{
title: 'Applying MVVM in Xamarin.Forms Applications',
provider: 'Pluralsight',
period: 'May 2021'
},
{
title: 'Architecting Xamarin.Forms Applications for code reuse',
provider: 'Pluralsight',
period: 'May 2021'
},
{
title: 'Learning Entity Framework Core',
provider: 'LinkedIn',
period: 'May 2021'
},
{
title: 'C# Intermediate: Classes, Objects and OOP',
provider: 'Udemy',
period: 'Oct 2020'
},
{
title: 'Xamarin Forms: Build Native Cross-platform Apps with C#',
provider: 'Udemy',
period: 'Sep 2020'
},
{
title: 'Building Web APIs with ASP.NET Core',
provider: 'LinkedIn',
period: 'Aug 2020'
},
{
title: 'Database Foundations: Storage',
provider: 'LinkedIn',
period: 'Jul 2020'
},
{
title: 'Software Architecture Foundations',
provider: 'LinkedIn',
period: 'Jul 2020'
},
{
title: 'C# Essential Training: 2 Flow Control, Arrays, and Exception Handling',
provider: 'LinkedIn',
period: 'Jan 2020'
},
{
title: 'C#: Interfaces and Generics',
provider: 'LinkedIn',
period: 'Jan 2020'
},
{
title: 'C# Essential Training: 1 Syntax and Object Oriented Programming',
provider: 'LinkedIn',
period: 'Dec 2019'
},
{
title: 'SQL Server - Easy Install & Configure a Developer Instance',
provider: 'Udemy',
period: 'Jan 2019'
},
{
title: 'C# Fundamentals by Coding',
provider: 'Udemy',
period: 'Dec 2018'
},
{
title: 'Javascript Essentials',
provider: 'Udemy',
period: 'Jul 2018'
},
{
title: 'Linux Command Line',
provider: 'Udemy',
period: 'Jul 2018'
}
];
}