Files
gabrielkaszewski-next/app/about/page.tsx
Gabriel Kaszewski a99b6353be feat: add AboutSummary component with personal introduction and game preview
feat: create Chip component for displaying technology tags

feat: implement ExperienceCard component to showcase job experiences

feat: add Experience component to list multiple job experiences

feat: create Footer component with social links and copyright information

feat: implement Hero component for the landing section with social links

feat: add ImageCarousel component for displaying project images

feat: create Navbar component with scroll effect and navigation links

feat: implement ProjectItem component to display individual project details

feat: add Skills component to showcase technical skills

feat: create data module with skills, jobs, and projects information

feat: define types for Skill, Job, and Project in types module

chore: update package.json with new dependencies for Tailwind CSS and Lucide icons

chore: add CV PDF file to public directory

chore: remove unused SVG files from public directory

chore: add new images for background and hero sections

feat: implement formatDate utility function for date formatting
2025-09-08 19:12:30 +02:00

207 lines
6.9 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Image from "next/image";
import Chip from "@/components/chip";
import { Metadata } from "next";
import { Check } from "lucide-react";
export const metadata: Metadata = {
title: "About Me | Gabriel Kaszewski",
description:
"Learn more about Gabriel Kaszewski, his skills, and his journey as a developer.",
};
const hobbies = [
"Programming 💻",
"Filmmaking 🎥",
"Gaming 🕹️",
"Playing guitar 🎸",
];
const interests = [
"Computer Science 💾",
"Sci-Fi Books📚",
"Astronomy 🔭",
"Sports 🏅",
"History 🏰",
];
const futureGoals = [
"Deepen my expertise in Rust for high-performance applications.",
"Contribute to impactful open-source projects.",
"Develop and release my first full-fledged indie game.",
];
const faqItems = [
{
q: "How old were you when you started programming?",
a: "I was 11 years old 🧑‍💻.",
},
{
q: "How did you learn programming?",
a: "I read books 📖 and practiced a lot.",
},
{
q: "Are you studying Computer Science?",
a: "No, I have a degree in Bioinformatics, which is a closely related field.",
},
{
q: "Which programming language do you recommend for a beginner?",
a: "The language doesn't really matter, just choose one you like and dive in 🌊.",
},
{
q: "What was your first programming language?",
a: "My journey began with C++ 🖥️.",
},
{
q: "What is your favorite programming language?",
a: "I enjoy writing in C, Rust, and Python 🐍. But Rust is the best 💖🦀",
},
];
const calculateAge = (birthDate: string): number => {
const today = new Date();
const birth = new Date(birthDate);
let age = today.getFullYear() - birth.getFullYear();
const monthDifference = today.getMonth() - birth.getMonth();
if (
monthDifference < 0 ||
(monthDifference === 0 && today.getDate() < birth.getDate())
) {
age--;
}
return age;
};
const AboutPage = () => {
const age = calculateAge("2002-02-27");
return (
<div className="flex w-full flex-col items-center gap-8 p-4 pt-24 text-white">
<div className="flex flex-col items-center justify-center gap-2 p-4 backdrop-blur-sm glass-effect glossy-effect bottom gloss-highlight rounded-lg shadow-lg">
<Image
src="/images/ja.avif"
alt="A photo of Gabriel Kaszewski"
width={300}
height={300}
className="object-cover rounded-md shadow-lg"
priority
/>
<h2 className="mt-4 text-2xl font-bold">Hello, I&apos;m Gabriel! 👋</h2>
</div>
<div className="prose prose-invert lg:prose-lg xl:prose-xl max-w-3xl mx-auto w-full">
<section id="more-info">
<h1 className="text-center">More info about me! 💡</h1>
<p>
Hi! I am Gabriel and I am {age} years old. I graduated in
Bioinformatics from the University of Gdańsk 🏫. I&apos;m fluent in
Polish and English and currently work as a Python Developer at
digimonkeys.com 🐒💻.
</p>
<p>
I have co-authored one scientific article, which you can read{" "}
<a
target="_blank"
href="http://dx.doi.org/10.1038/s41598-023-44488-7"
className="text-yellow-400 underline"
>
here
</a>
.
</p>
</section>
<section
id="hobbies&interests"
className="not-prose flex flex-col sm:flex-row gap-8 mt-12"
>
<div className="flex-1">
<h2 className="text-center">Hobbies 🎮🎸</h2>
<div className="flex flex-wrap items-center justify-center gap-4 mt-4">
{hobbies.map((hobby) => (
<Chip key={hobby} text={hobby} />
))}
</div>
</div>
<div className="flex-1">
<h2 className="text-center">Interests 🌌📚</h2>
<div className="flex flex-wrap items-center justify-center gap-4 mt-4">
{interests.map((interest) => (
<Chip key={interest} text={interest} />
))}
</div>
</div>
</section>
<section id="philosophy" className="mt-12">
<h1>My Philosophy 🧠</h1>
<p>
I believe much of today&apos;s software is bloated, inefficient, and
disrespectful of the user&apos;s resources. My passion, which
started with a simple curiosity at age 11, is to build a better
alternative. I focus on creating software that is{" "}
<strong className="text-yellow-400">
fast, reliable, and genuinely intuitive
</strong>
, guided by the principles of clean and efficient code.
</p>
</section>
<section id="toolkit">
<h1>My Toolkit 🛠</h1>
<div className="not-prose bg-black/20 backdrop-blur-sm glass-effect rounded-2xl p-4 text-white text-shadow-sm">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<h3 className="text-xl font-bold">OS & Hardware</h3>
<p>
Arch Linux, Custom-built PC (Ryzen 7 5800X3D, RTX 4070 Ti,
48GB RAM)
</p>
</div>
<div>
<h3 className="text-xl font-bold">Editor</h3>
<p>Jetbrains IDEs (Pycharm, Rider) & VS Code</p>
</div>
<div>
<h3 className="text-xl font-bold">Primary Languages</h3>
<p>Rust, Python, C#, TypeScript</p>
</div>
<div>
<h3 className="text-xl font-bold">Favorite Tech</h3>
<p>Axum, Godot, React, TailwindCSS</p>
</div>
</div>
</div>
</section>
<section id="future-goals" className="mt-12">
<h1>Future Goals 🚀</h1>
<p>
I&apos;m always eager to learn and grow. My goal is to continue
honing my skills in backend development and system architecture.
Here&apos;s what&apos;s on my radar:
</p>
<ul className="list-none p-0">
{futureGoals.map((goal) => (
<li key={goal} className="flex items-center gap-2 not-prose mb-2">
<Check className="text-yellow-400 flex-shrink-0" size={20} />
<span>{goal}</span>
</li>
))}
</ul>
</section>
<section id="faq" className="mt-12">
<h1>FAQ </h1>
<div className="not-prose flex flex-col gap-4">
{faqItems.map((item) => (
<div key={item.q}>
<h3 className="text-xl font-bold">{item.q}</h3>
<p>{item.a}</p>
</div>
))}
</div>
</section>
</div>
</div>
);
};
export default AboutPage;