update contact information, adjust layout styles, and add data to skills/projects sections

This commit is contained in:
2026-04-05 13:47:49 +02:00
parent c767c0b1a0
commit c5e602e9f0
5 changed files with 38 additions and 25 deletions

View File

@@ -5,8 +5,12 @@
.content { .content {
max-width: 1500px; max-width: 1500px;
min-height: 100svh;
margin: 0 auto; margin: 0 auto;
padding: 1.5rem 1.25rem 4rem; padding: 1.5rem 1.25rem 3rem;
display: flex;
flex-direction: column;
box-sizing: border-box;
} }
.sidebar { .sidebar {
@@ -90,7 +94,8 @@
} }
.site-footer { .site-footer {
margin-top: 2rem; margin-top: auto;
padding-top: 2rem;
text-align: center; text-align: center;
color: #8b949e; color: #8b949e;
} }

View File

@@ -2,7 +2,7 @@
<main class="content"> <main class="content">
<router-outlet></router-outlet> <router-outlet></router-outlet>
<footer class="site-footer"> <footer class="site-footer">
<p>(c) {{ currentYear }} Tim Kainz - Fullstack Developer (Angular - C# - Flutter)</p> <p>(c) {{ currentYear }} Tim Kainz | +43 677 62678219</p>
</footer> </footer>
</main> </main>

View File

@@ -17,8 +17,8 @@ export class Contact {
readonly channels: Channel[] = [ readonly channels: Channel[] = [
{ {
label: 'Email', label: 'Email',
value: 'alex.carter.dev@mail.com', value: 'tikaiz@gmx.at',
href: 'mailto:alex.carter.dev@mail.com', href: 'mailto:tikaiz@gmx.at',
}, },
{ {
label: 'Location', label: 'Location',

View File

@@ -1,6 +1,5 @@
<div class="page-wrap"> <div class="page-wrap">
<header class="hero section" id="top"> <header class="hero section" id="top">
<p class="eyebrow">Available for full-time and freelance work</p>
<h1>{{ hero.name }}</h1> <h1>{{ hero.name }}</h1>
<p class="hero-role">{{ hero.role }}</p> <p class="hero-role">{{ hero.role }}</p>
<p class="hero-intro">{{ hero.intro }}</p> <p class="hero-intro">{{ hero.intro }}</p>

View File

@@ -4,7 +4,7 @@ import { CardComponent } from '../../components/card/card';
interface Skill { interface Skill {
name: string; name: string;
category: 'Frontend' | 'Backend' | 'Mobile' | 'Cloud'; category: 'Frontend' | 'Backend' | 'Mobile' | 'Cloud' | 'Frontend / Backend';
level: string; level: string;
} }
@@ -32,38 +32,47 @@ export class Home {
readonly hero = { readonly hero = {
name: 'Tim Kainz', name: 'Tim Kainz',
role: 'Fullstack Developer', role: 'Fullstack Developer',
intro: intro: 'I build polished web, backend, and mobile products with Angular, C#, and Flutter.',
'I build polished web, backend, and mobile products with Angular, C#, and Flutter.',
focus: 'Focused on performance, clean architecture, and product-minded delivery.', focus: 'Focused on performance, clean architecture, and product-minded delivery.',
}; };
readonly skills: Skill[] = [ readonly skills: Skill[] = [
{ name: 'Angular', category: 'Frontend', level: 'Advanced' }, { name: 'Angular', category: 'Frontend', level: 'Advanced' },
{ name: 'TypeScript', category: 'Frontend', level: 'Advanced' }, { name: 'React', category: 'Frontend', level: 'Advanced' },
{ name: 'C# / .NET', category: 'Backend', level: 'Advanced' }, { name: 'Ionic', category: 'Frontend', level: 'Advanced' },
{ name: 'REST APIs', category: 'Backend', level: 'Advanced' }, { name: 'TypeScript', category: 'Frontend / Backend', level: 'Advanced' },
{ name: 'Javascript', category: 'Frontend / Backend', level: 'Advanced' },
{ name: 'Express', category: 'Backend', level: 'Advanced' },
{ name: 'C# / .NET', category: 'Frontend / Backend', level: 'Advanced' },
{ name: 'ASP.NET Core', category: 'Backend', level: 'Advanced' },
{ name: 'WPF', category: 'Frontend', level: 'Advanced' },
{ name: 'Java', category: 'Backend', level: 'Advanced' },
{ name: 'Spring Boot', category: 'Backend', level: 'Advanced' },
{ name: 'Flutter', category: 'Mobile', level: 'Advanced' }, { name: 'Flutter', category: 'Mobile', level: 'Advanced' },
{ name: 'Firebase', category: 'Cloud', level: 'Intermediate' },
]; ];
readonly projects: Project[] = [ readonly projects: Project[] = [
{ {
title: 'ClinicFlow Platform', title: 'Tasktimer',
description: 'Patient scheduling and billing dashboard for multi-location clinics.', description:
stack: ['Angular', 'C#', '.NET API', 'PostgreSQL'], 'Jira time-tracking app with custom reporting and connectivity, build for mobile and web.',
impact: 'Reduced booking mistakes by 38% and improved team response speed.', stack: ['Ionic', 'React', 'Spring Boot', 'Oracle', 'Web', 'Android', 'iOS'],
impact:
'Led backend and architectural work: implemented Spring Boot backend, database access for Oracle with reporting capabilities, including reliable Jira connectivity.',
}, },
{ {
title: 'FieldOps Mobile App', title: 'Synopsis Platform Core',
description: 'Offline-first mobile app for technicians to manage service tasks.', description: 'Main Synopsis Platform codebase (backend + frontend pieces).',
stack: ['Flutter', 'C#', 'SQLite', 'Azure Functions'], stack: ['C#', 'TypeScript', 'HTML', 'Docker', 'Web'],
impact: 'Enabled same-day job updates even in low-connectivity zones.', impact:
'Contributed via issues, code and investigations (plugin-loader, microfrontend research), influencing platform direction and stability.',
}, },
{ {
title: 'Insights Portal', title: 'Website SV Hofkirchen (Chess Club)',
description: 'Real-time analytics workspace with modular report widgets.', description: 'Club management web app for the SV Hofkirchen chess club.',
stack: ['Angular', 'SignalR', 'C#', '.NET'], stack: ['C#', '.NET', 'Blazor', 'SQLite', 'Web'],
impact: 'Cut reporting time from hours to minutes for operations teams.', impact:
'Designed the technical core across backend, database, and Blazor UI: implemented backend services, and partially built the Blazor frontend',
}, },
]; ];