chore: home and about page

This commit is contained in:
Alejandro Laguna
2025-08-03 14:46:43 +02:00
parent 8bb138dbe5
commit e481a15f39
27 changed files with 2131 additions and 241 deletions

133
src/pages/about.astro Normal file
View File

@@ -0,0 +1,133 @@
---
import "../styles/global.css"
import Layout from "../layouts/Layout.astro"
import NavigationCard from "../components/NavigationCard.astro"
import ExperienceCard from '../components/ExperienceCard.astro';
import { PencilRuler, LibraryBig, NotepadText, GraduationCap, Wrench, Feather, Briefcase } from 'lucide-astro';
const navItems = [
{
href: "/workshop",
icon: PencilRuler,
heading: "Workshop",
content: "From the theory to the implementation. What I build to understand."
},
{
href: "/library",
icon: LibraryBig,
heading: "Library",
content: "Books and papers and resources I use to learn. What I read, and why it matters."
},
{
href: "/notes",
icon: NotepadText,
heading: "Notes",
content: "My explorations into the fundamental nature of everything."
}
];
const experiences = [
{
title: "Software Engineer Intern",
company: "MigaLabs",
period: "July 2025 - December 2025",
location: "Barcelona (Spain)",
achievements: [
"Built monitoring tools to keep tabs on over a terabyte of Ethereum blockchain data - quality control at scale",
"Designed validation systems that could handle different network upgrades, since each fork had its own rules to follow",
"Worked the company's main dashboard using Next.js, turning complex blockchain data into something the team and customers could actually understand",
"Studied deep the Ethereum specifications to figure out what \"correct\" data should look like across different network phases (phase0, Altair, Bellatrix, Capella...)"
],
technologies: "Go • Next.js • Tailwind CSS • Ethereum"
},
{
title: "Full-stack Developer",
company: "Avantiam Inc",
period: "September 2023 - August 2024",
location: "Figueres (Spain)",
achievements: [
"Built a multitenant company management platform from the ground up - one codebase serving over 100 local companies",
"Developed HR tools, task management, and time tracking features that teams actually ended up using",
"Worked with Laravel and Livewire to create real-time interfaces that felt responsive and modern",
"Dealt the challenge of building productivity tools that didn't feel like corporate bloatware"
],
technologies: "Laravel • PHP • JavaScript • Livewire • Alpine.js • Tailwind CSS"
},
{
title: "Backend Developer Intern",
company: "Niblu Group",
period: "Summer 2023",
location: "Maribor (Slovenia)",
achievements: [
"Spent a summer in Slovenia through Erasmus+, working on an e-learning platform while navigating a new country alone at 17",
"Built course delivery systems using FastAPI and Next.js, focusing on making educational content engaging",
"Got hands-on experience with AWS and Docker, learning how to deploy properly instead of just making things work locally",
"Collaborated on tools designed to make learning more accessible. It felt meaningful beyond just writing code"
],
technologies: "Next.js • FastAPI • Python • Tailwind CSS • AWS • Docker"
}
];
---
<Layout>
<section class="max-w-3xl mb-10 sm:mb-14">
<h1 class="text-4xl sm:text-5xl font-bold mb-6 text-neutral-900">About</h1>
<p class="text-lg text-neutral-600 leading-relaxed text-justify">
I'm a second year computer science student at the European Institute of Technology, still trying to figure out my place but enjoying the journey through systems programming, webdev and other fields. Outside of code, my favorite writer is Isaac Asimov, my favorite piece of music is Spiegel im Spiegel, and my favorite book is The Witches by Roald Dahl. My favorite star is Vega because it was once our north star and will be again in about 12,000 years - something poetic about that cycle. And that's pretty much everything you need to know about me, except maybe my tea preferences, but we'll save that for another time... </p>
</section>
<section class="mb-12 bg-neutral-50 p-6 rounded-2xl border border-neutral-200">
<h2 class="flex items-center gap-2 text-2xl font-semibold text-neutral-900 mb-4">
<GraduationCap class="w-6 h-6 text-neutral-500" /> Education
</h2>
<ul class="space-y-4">
<li>
<p class="text-base text-neutral-900 font-medium">Bachelor + Masters Degree in Computer Science</p>
<p class="text-sm text-neutral-600">European Institute of Technology, class of 2029</p>
</li>
<li>
<p class="text-base text-neutral-900 font-medium">Vocational Studies in Networking, Microcomputers and Operative Systems</p>
<p class="text-sm text-neutral-600">INS Cendrassos, class of 2024</p>
</li>
</ul>
</section>
<section class="mb-12">
<h2 class="flex items-center gap-2 text-2xl font-semibold text-neutral-900 mb-4">
<Briefcase class="w-6 h-6 text-neutral-500" /> Experience
</h2>
<div class="grid sm:grid-cols-1 gap-6">
{experiences.map(exp => (
<ExperienceCard {...exp} />
))}
</div>
</section>
<section class="mb-12">
<h2 class="flex items-center gap-2 text-2xl font-semibold text-neutral-900 mb-4">
<Wrench class="w-6 h-6 text-neutral-500" /> Tools I Use
</h2>
<code class="block bg-neutral-50 p-4 rounded-xl text-neutral-800 overflow-x-auto border border-neutral-200">
<b>Languages:</b> C, Go, Python, Javascript/Typescript, PHP<br>
<b>Frameworks & Libraries:</b> Astro, React, Preact, NextJS, Vue, NuxtJS, Express, FastAPI, TailwindCSS <br>
<b>Databases:</b> MongoDB, PostgreSQL, MySQL/MariaDB, ClickHouse <br>
<b>Tools:</b> Git, Bash, Linux, LaTeX, Typst, Neovim<br>
</code>
</section>
<section class="mb-20 sm:mb-28" aria-labelledby="navigation-heading">
<h2 class="flex items-center gap-2 text-2xl font-semibold text-neutral-900 mb-4">
<Feather class="w-6 h-6 text-neutral-500" /> Projects, posts, thoughts...
</h2>
<div class="grid grid-cols-1 sm:grid-cols-1 lg:grid-cols-3 gap-5">
{navItems.map(item => (
<NavigationCard
href={item.href}
icon={item.icon}
heading={item.heading}
content={item.content}
/>
))}
</div>
</section>
</Layout>

View File

@@ -1,11 +1,57 @@
---
import Welcome from '../components/Welcome.astro';
import Layout from '../layouts/Layout.astro';
import "../styles/global.css"
import Layout from "../layouts/Layout.astro"
import NavigationCard from '../components/NavigationCard.astro';
import { Fingerprint, PencilRuler, LibraryBig, NotepadText } from 'lucide-astro';
// Welcome to Astro! Wondering what to do next? Check out the Astro documentation at https://docs.astro.build
// Don't want to use any of this? Delete everything in this file, the `assets`, `components`, and `layouts` directories, and start fresh.
const navItems = [
{
href: "/about",
icon: Fingerprint,
heading: "About",
content: "Who am I, my academic and professional background, what drives this work."
},
{
href: "/workshop",
icon: PencilRuler,
heading: "Workshop",
content: "From the theory to the implementation. What I build to understand."
},
{
href: "/library",
icon: LibraryBig,
heading: "Library",
content: "Books and papers and resources I use to learn. What I read, and why it matters."
},
{
href: "/notes",
icon: NotepadText,
heading: "Notes",
content: "My explorations into the fundamental nature of everything."
}
];
---
<Layout>
<Welcome />
<section class="max-w-4xl mb-20 sm:mb-28">
<h2 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-[1.1] mb-6 text-neutral-900">
A <span class="text-neutral-600"> notebook </span> for <br>working things out.
</h2>
<p class="text-lg sm:text-xl text-neutral-600 leading-relaxed max-w-2xl">
Unpolished notes, working prototypes, honest questions. A space for building understanding from the ground up. Trying to understand the world by writing and building.
</p>
</section>
<section class="mb-20 sm:mb-28" aria-labelledby="navigation-heading">
<h2 id="navigation-heading" class="sr-only">Site navigation</h2>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-5">
{navItems.map(item => (
<NavigationCard
href={item.href}
icon={item.icon}
heading={item.heading}
content={item.content}
/>
))}
</div>
</section>
</Layout>