PageSourceSearch

https://lucasds.dev/projects/

html lucasds.dev collected 2026-10-10 00:07:40 UTC 26,586 bytes, 1 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>Projects | Lucas da Silva</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Astro v7.2.0"><link rel="preload" href="/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin><meta name="description" content="A selection of some recent projects I had the opportunity to collaborate to."><meta name="robots" content="noai,noimageai"><meta name="referrer" content="no-referrer-when-downgrade"><link rel="canonical" href="https://lucasds.dev/projects/"><link rel="icon" href="https://lucasds.dev/content/images/2025/02/android-chrome-512x512.png" type="image/png"><link rel="apple-touch-icon" href="https://lucasds.dev/content/images/2025/02/android-chrome-512x512.png"><meta property="og:site_name" content="Lucas da Silva"><meta property="og:type" content="website"><meta property="og:title" content="Projects | Lucas da Silva"><meta property="og:description" content="A selection of some recent projects I had the opportunity to collaborate to."><meta property="og:url" content="https://lucasds.dev/projects/"><meta property="og:image" content="https://lucasds.dev/content/images/2025/02/cover.png"><meta property="og:image:width" content="775"><meta property="og:image:height" content="440"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Projects | Lucas da Silva"><meta name="twitter:description" content="A selection of some recent projects I had the opportunity to collaborate to."><meta name="twitter:url" content="https://lucasds.dev/projects/"><meta name="twitter:image" content="https://lucasds.dev/content/images/2025/02/cover.png"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#14161e"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate">
1<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.DW-LBy1z.js"></script>
1<script defer src="https://cloud.umami.is/script.js" data-website-id="4d06d784-b0d5-4ddb-8ffa-2dccf1db5fd0"></script>
1<link rel="stylesheet" href="/_astro/BaseLayout.CZ7TAibH.css"></head><body class="min-h-dvh bg-(--app-bg) text-(--app-text) antialiased transition-colors flex flex-col"><a href="#main" class="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-50 bg-(--app-text) text-(--app-bg) px-4 py-2 text-xs font-mono-ui">Skip to content</a><nav class="wrapper py-6 md:py-8" aria-label="Primary navigation" data-astro-cid-rutobish><div class="flex items-center justify-between" data-astro-cid-rutobish><a href="/" class="text-base md:text-lg font-semibold tracking-tight hover:text-(--app-accent)" data-astro-cid-rutobish>Lucas da Silva</a><div class="hidden md:flex items-center gap-8" data-astro-cid-rutobish><ul class="flex gap-7 text-sm font-medium text-(--app-muted)" data-astro-cid-rutobish><li data-astro-cid-rutobish><a href="/about/" class="hover:text-(--app-text)" data-astro-cid-rutobish>About</a></li><li data-astro-cid-rutobish><a href="/projects/" class="hover:text-(--app-text)" aria-current="page" data-astro-cid-rutobish>Projects</a></li></ul><button id="themeToggle" type="button" aria-label="Switch to dark theme" aria-pressed="false" class="theme-toggle flex h-9 w-9 items-center justify-center rounded-full border border-(--app-border)/60 bg-(--app-surface)/60 text-(--app-muted) hover:border-(--app-border) hover:bg-(--app-surface) hover:text-(--app-text)" data-astro-cid-rutobish><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-rutobish="true" class="lucide lucide-sun theme-icon-light"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-rutobish="true" class="lucide lucide-moon theme-icon-dark hidden"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span class="theme-label sr-only" data-astro-cid-rutobish>Light theme enabled</span></button></div><div class="flex items-center gap-2 md:hidden" data-astro-cid-rutobish><button id="themeToggleMobile" type="button" aria-label="Switch to dark theme" aria-pressed="false" class="theme-toggle flex h-9 w-9 items-center justify-center rounded-full border border-(--app-border)/60 bg-(--app-surface)/60 text-(--app-muted) hover:border-(--app-border) hover:bg-(--app-surface) hover:text-(--app-text)" data-astro-cid-rutobish><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-rutobish="true" class="lucide lucide-sun theme-icon-light"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-rutobish="true" class="lucide lucide-moon theme-icon-dark hidden"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span class="theme-label sr-only" data-astro-cid-rutobish>Light theme enabled</span></button><button id="menuToggle" type="button" aria-expanded="false" aria-controls="mobileMenu" aria-label="Open menu" class="w-9 h-9 flex flex-col items-center justify-center gap-1.25 border border-(--app-border) rounded-md" data-astro-cid-rutobish><span aria-hidden="true" class="menu-bar block w-4 h-[1.5px] bg-(--app-text)" data-astro-cid-rutobish></span><span aria-hidden="true" class="menu-bar block w-4 h-[1.5px] bg-(--app-text)" data-astro-cid-rutobish></span><span aria-hidden="true" class="menu-bar block w-4 h-[1.5px] bg-(--app-text)" data-astro-cid-rutobish></span></button></div></div><ul id="mobileMenu" class="hidden md:hidden flex-col mt-6 pt-4 border-t border-(--app-border)" data-astro-cid-rutobish><li class="border-b border-(--app-border) last:border-b-0" data-astro-cid-rutobish><a href="/about/" class="block text-base font-medium text-(--app-muted) py-3 hover:text-(--app-text)" data-astro-cid-rutobish>About</a></li><li class="border-b border-(--app-border) last:border-b-0" data-astro-cid-rutobish><a href="/projects/" class="block text-base font-medium text-(--app-muted) py-3 hover:text-(--app-text)" aria-current="page" data-astro-cid-rutobish>Projects</a></li></ul></nav>
1<script type="module">var e=document.documentElement;function t(t){let n=t===`dark`,r=document.querySelectorAll(`.theme-toggle`);e.dataset.theme=t,localStorage.setItem(`theme`,t),r.forEach(e=>{e.setAttribute(`aria-pressed`,String(n)),e.setAttribute(`aria-label`,n?`Switch to light theme`:`Switch to dark theme`),e.querySelector(`.theme-icon-light`)?.classList.toggle(`hidden`,n),e.querySelector(`.theme-icon-dark`)?.classList.toggle(`hidden`,!n);let t=e.querySelector(`.theme-label`);t&&(t.textContent=n?`Dark theme enabled`:`Light theme enabled`)})}function n(){t(localStorage.getItem(`theme`)===`dark`?`dark`:`light`),document.querySelectorAll(`.theme-toggle`).forEach(n=>{n instanceof HTMLButtonElement&&(n.onclick=()=>{t(e.dataset.theme===`dark`?`light`:`dark`)})})}function r(){let e=document.getElementById(`menuToggle`),t=document.getElementById(`mobileMenu`);function n(n){t?.classList.toggle(`flex`,n),t?.classList.toggle(`hidden`,!n),e?.classList.toggle(`is-open`,n),e?.setAttribute(`aria-expanded`,String(n)),e?.setAttribute(`aria-label`,n?`Close menu`:`Open menu`)}e&&(e.onclick=()=>{n(e.getAttribute(`aria-expanded`)!==`true`)})}var i=window;i.siteNavKeydownBound||=(document.addEventListener(`keydown`,e=>{if(e.key===`Escape`){let e=document.getElementById(`menuToggle`),t=document.getElementById(`mobileMenu`);t?.classList.remove(`flex`),t?.classList.add(`hidden`),e?.classList.remove(`is-open`),e?.setAttribute(`aria-expanded`,`false`),e?.setAttribute(`aria-label`,`Open menu`)}}),!0);function a(){n(),r()}document.addEventListener(`astro:page-load`,a),a();</script>
1<main id="main" class="grow"><header class="wrapper mt-10" style="margin-block-end: var(--space-l-xl);"><div><h1 class="font-semibold tracking-tight leading-(--leading-tight)" style="font-size: var(--step-5);">Projects</h1><p class="mt-4 max-w-prose text-(--app-muted)" style="font-size: var(--step-0);">A selection of some recent projects I had the opportunity to collaborate to.</p></div></header><section class="wrapper pb-24 md:pb-32" aria-label="Projects"><div class="home-project-grid"><article class="group home-project-card"><a href="/projects/kakimono/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/kakimono-cover.BP1O47N-_Zax2o3.webp" srcset="/_astro/kakimono-cover.BP1O47N-_Z1G1ltP.webp 480w, /_astro/kakimono-cover.BP1O47N-_Z5uMje.webp 720w, /_astro/kakimono-cover.BP1O47N-_1GViwv.webp 960w, /_astro/kakimono-cover.BP1O47N-_Z1hkOd0.webp 1280w, /_astro/kakimono-cover.BP1O47N-_1JowwC.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="1250" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Kakimono</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2026</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">Kakimono is a browser-based Markdown app with furigana support</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>SvelteKit</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>TypeScript</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>CodeMirror</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>IndexedDB</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/application-catalog/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/ac-1-2-1.W_bwBeks_2uk5sz.webp" srcset="/_astro/ac-1-2-1.W_bwBeks_R7XNa.webp 480w, /_astro/ac-1-2-1.W_bwBeks_2vnYTF.webp 720w, /_astro/ac-1-2-1.W_bwBeks_Z1pwHin.webp 960w, /_astro/ac-1-2-1.W_bwBeks_1FXO9n.webp 1280w, /_astro/ac-1-2-1.W_bwBeks_1X5YVX.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="1474" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Application Catalog</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2026</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">A place to register and relate internal applications to each other</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>TypeScript</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>React Router V7</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>React Query</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/shogun-documentation/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/[email protected]_Zcj4Ow.webp" srcset="/_astro/[email protected]_RzxDS.webp 480w, /_astro/[email protected]_25Flyt.webp 720w, /_astro/[email protected]_Z1mw1vB.webp 960w, /_astro/[email protected]_Z29kTjc.webp 1280w, /_astro/[email protected]_Z26n8Pn.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="2001" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Shogun Documentation</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2022</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">Documentation for Shogun Frontend, Shogun&#39;s eCommerce PWA</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/nomad-x-shogun-frontend/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/nomad-cover3.Cou6YQoU_Br5fv.webp" srcset="/_astro/nomad-cover3.Cou6YQoU_1qmC5y.webp 480w, /_astro/nomad-cover3.Cou6YQoU_1ejXmK.webp 720w, /_astro/nomad-cover3.Cou6YQoU_1JSWij.webp 960w, /_astro/nomad-cover3.Cou6YQoU_ZykcML.webp 1280w, /_astro/nomad-cover3.Cou6YQoU_Zza62I.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="1879" height="1057" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Nomad x Shogun Frontend</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2020</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">Migration of Nomad&#39;s Shopify storefront to Shogun Frontend</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>PWA</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>Headless</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/magnetis-app/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)">
1<img src="/_astro/magnetis.wqAXfGUF_Z1q5wbv.webp" srcset="/_astro/magnetis.wqAXfGUF_Z1RhUXe.webp 480w, /_astro/magnetis.wqAXfGUF_18djbS.webp 720w, /_astro/magnetis.wqAXfGUF_5ceoH.webp 960w, /_astro/magnetis.wqAXfGUF_Z1q5wbv.webp 1080w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="1080" height="1080" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Magnetis App</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2019</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">Mobile App</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React Native</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/astro-design-system/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_Z1PlxBt.webp" srcset="/_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_14d3v2.webp 480w, /_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_1many1.webp 720w, /_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_eVuYh.webp 960w, /_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_29jWaV.webp 1280w, /_astro/astro-galaxy-cover-wide2-2.ZXH2bjRG_11sWKg.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="1251" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Magnetis Design System</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2019</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">An scalable Design System for all Magnetis&#39; digital products</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>Design System</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>React</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/hellofresh-design-system/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/hf-cover.CJl6Odot_YwiyC.webp" srcset="/_astro/hf-cover.CJl6Odot_Z1qaylJ.webp 480w, /_astro/hf-cover.CJl6Odot_1zkFNn.webp 720w, /_astro/hf-cover.CJl6Odot_wjB1c.webp 960w, /_astro/hf-cover.CJl6Odot_1d5Ja4.webp 1280w, /_astro/hf-cover.CJl6Odot_2vre5v.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="2001" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">HelloFresh Design System</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2018</span></div><p class="mt-3 max-w-prose text-sm text-(--app-muted)">Design system for HelloFresh web applications</p><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React</span></li><li class="flex items-center gap-x-2"><span aria-hidden="true">/</span><span>Design System</span></li></ul></div></a></article><article class="group home-project-card"><a href="/projects/issues-a11y-rocks/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/Screenshot-2025-01-30-at-5.46.23-PM-Large.CWhSaiB5_161vUU.webp" srcset="/_astro/Screenshot-2025-01-30-at-5.46.23-PM-Large.CWhSaiB5_Zg35Kf.webp 480w, /_astro/Screenshot-2025-01-30-at-5.46.23-PM-Large.CWhSaiB5_Z2ljkBI.webp 720w, /_astro/Screenshot-2025-01-30-at-5.46.23-PM-Large.CWhSaiB5_Z1Psxnc.webp 960w, /_astro/Screenshot-2025-01-30-at-5.46.23-PM-Large.CWhSaiB5_161vUU.webp 1280w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="1280" height="915" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Issues - a11y.rocks</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2018</span></div></div></a></article><article class="group home-project-card"><a href="/projects/mttrs-app/" class="block cursor-pointer"><div class="project-card-media overflow-hidden rounded-lg border border-(--app-border) bg-(--app-surface)"><img src="/_astro/mttrs-1.DdVxrvSt_Z2fqhKW.webp" srcset="/_astro/mttrs-1.DdVxrvSt_ZNawJF.webp 480w, /_astro/mttrs-1.DdVxrvSt_9dIMB.webp 720w, /_astro/mttrs-1.DdVxrvSt_SDRat.webp 960w, /_astro/mttrs-1.DdVxrvSt_1vjzyr.webp 1280w, /_astro/mttrs-1.DdVxrvSt_Z2f12bU.webp 1600w" alt sizes="(min-width: 1024px) 536px, (min-width: 768px) calc(50vw - 2rem), calc(100vw - 2rem)" loading="lazy" decoding="async" width="2000" height="1866" class="aspect-16/10 w-full object-cover"></div><div class="mt-5"><div class="flex items-baseline justify-between gap-4"><h3 class="font-semibold leading-(--leading-tight) tracking-tight text-(--app-text) group-hover:text-(--app-accent)" style="font-size: var(--step-0);">Matters app</h3><span class="shrink-0 font-mono-ui text-xs text-(--app-muted)">2016</span></div><ul class="mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 font-mono-ui text-xs text-(--app-muted)" aria-label="Technology stack"><li class="flex items-center gap-x-2"><span>React Native</span></li></ul></div></a></article></div></section><section class="wrapper pb-14 md:pb-20" aria-labelledby="contact-title"><div class="flex flex-col gap-6 md:flex-row md:items-end md:justify-between"><h2 id="contact-title" class="max-w-xl font-semibold leading-(--leading-tight) tracking-tight" style="font-size: var(--step-3);">Available for frontend work.</h2><div class="flex flex-wrap gap-x-6 gap-y-3 text-(--app-muted)"><a href="/cdn-cgi/l/email-protection#432b2a032f3620223027306d272635" class="interactive-link inline-flex items-center gap-2 text-lg font-semibold text-(--app-text) hover:text-(--app-accent)"><span class="__cf_email__" data-cfemail="c3abaa83afb6a0a2b0a7b0eda7a6b5">[email&#160;protected]</span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
1ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide lucide-arrow-up-right"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a><a href="/resume.pdf" class="interactive-link inline-flex items-center gap-2 font-semibold hover:text-(--app-accent)" data-arrow="external">View resume<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide lucide-arrow-up-right"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></div></div></section></main><footer class="site-footer pt-10 pb-16"><div class="wrapper"><div class="flex flex-wrap items-center justify-between gap-5 text-sm text-(--app-muted)"><span class="font-mono-ui text-xs">&copy; 2026</span><div class="flex flex-wrap items-center justify-end gap-x-5 gap-y-3"><ul class="flex flex-wrap gap-5"><li><a href="/blog/" class="hover:text-(--app-text)">Blog</a></li><li><a href="https://github.com/AgtLucas" class="hover:text-(--app-text)" target="_blank" rel="noopener noreferrer">GitHub</a></li><li><a href="https://www.linkedin.com/in/agtlucas/" class="hover:text-(--app-text)" target="_blank" rel="noopener noreferrer">LinkedIn</a></li><li><a href="https://lucas.art/" class="hover:text-(--app-text)" target="_blank" rel="noopener noreferrer">Art</a></li></ul><button type="button" aria-label="Switch to dark theme" aria-pressed="false" class="theme-toggle flex h-9 w-9 shrink-0 items-center justify-center rounded-full border border-(--app-border)/60 bg-(--app-surface)/60 text-(--app-muted) hover:border-(--app-border) hover:bg-(--app-surface) hover:text-(--app-text)"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide lucide-sun theme-icon-light"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="lucide lucide-moon theme-icon-dark hidden"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span class="theme-label sr-only">Light theme enabled</span></button></div></div></div></footer><!-- Cloudflare Pages Analytics -->
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
vendor: 99 bytes, line 1
1<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "
133d2a50c502846959802ec04a9bc5a0b
vendor: 13 bytes, line 1
1"}'></script>
1<!-- Cloudflare Pages Analytics --></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.