Compare commits

..

No commits in common. "0bc0ef3ba86325da93428667c0c9af8c84cbd187" and "18c420b90b1674097f1c2093ca22ae6bb0a1fa24" have entirely different histories.

14 changed files with 763 additions and 964 deletions

50
Jenkinsfile vendored
View File

@ -1,30 +1,26 @@
pipeline { pipeline {
agent { agent any
docker { environment {
image 'node:22' PATH = "/var/lib/jenkins/.nvm/versions/node/v20.9.0/bin:/var/lib/jenkins/bin:${env.PATH}"
} }
}
stages { stages {
stage('Install pnpm') { stage('Install deps') {
steps { steps {
sh 'npm i -g pnpm' sh 'pnpm i'
} }
} }
stage('Install dependencies') { stage('Build') {
steps { environment {
sh 'pnpm i' PATH = "${env.WORKSPACE}/node_modules/.bin:${env.PATH}"
} }
} steps {
stage('Buid') { sh 'pnpm build'
steps { }
sh 'pnpm build' }
} stage('Deploy') {
} steps {
stage('Deploy') { sh 'cp -r ./dist/* /var/www/araozu.dev/'
steps { }
sh 'rm -rf /var/www/dev.araozu/*' }
sh 'mv -f dist/* /var/www/dev.araozu/' }
}
}
}
} }

View File

@ -10,11 +10,11 @@
"astro": "astro" "astro": "astro"
}, },
"dependencies": { "dependencies": {
"@astrojs/check": "^0.9.4", "@astrojs/check": "^0.5.10",
"@astrojs/mdx": "^3.1.7", "@astrojs/mdx": "^3.1.2",
"@astrojs/tailwind": "^5.1.1", "@astrojs/tailwind": "^5.1.0",
"@types/node": "^22.3.0", "@types/node": "^22.3.0",
"astro": "^4.15.11", "astro": "^4.11.5",
"tailwindcss": "^3.4.5", "tailwindcss": "^3.4.5",
"typescript": "^5.5.3" "typescript": "^5.5.3"
}, },

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
:not(pre)>code { :not(pre)>code {
font-family: var(--font-mono); font-family: "Iosevka Fixed Web", Iosevka, monospace;
border: solid 1px var(--c-border-2); border: solid 1px var(--c-border-2);
padding: 0 0.25rem; padding: 0 0.25rem;
border-radius: 0.25rem; border-radius: 0.25rem;
@ -33,7 +33,7 @@ pre.astro-code>code .line::before {
#blog h2 { #blog h2 {
font-size: 1.5rem; font-size: 1.5rem;
font-family: var(--font-display); font-family: "Iosevka Etoile Web", serif;
font-weight: 900; font-weight: 900;
margin-top: 3rem; margin-top: 3rem;
margin-bottom: 1.5rem; margin-bottom: 1.5rem;
@ -41,7 +41,7 @@ pre.astro-code>code .line::before {
#blog h3 { #blog h3 {
font-size: 1.25rem; font-size: 1.25rem;
font-family: var(--font-display); font-family: "Iosevka Etoile Web", serif;
font-weight: 900; font-weight: 900;
margin-top: 2.25rem; margin-top: 2.25rem;
margin-bottom: 1.5rem; margin-bottom: 1.5rem;

View File

@ -8,6 +8,24 @@
src: url("/Iosevka/Regular.woff2") format("woff2"); src: url("/Iosevka/Regular.woff2") format("woff2");
} }
@font-face {
font-family: 'Iosevka Fixed Web';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url('/Iosevka/Bold.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Etoile Web';
font-display: swap;
font-weight: 900;
font-stretch: normal;
font-style: normal;
src: url('/IosevkaEtoile/Heavy.woff2') format('woff2');
}
/* Iosevka from Xe Iaso: https://xeiaso.net/ https://github.com/Xe/iosevka */ /* Iosevka from Xe Iaso: https://xeiaso.net/ https://github.com/Xe/iosevka */
@font-face { @font-face {
font-family: "Iosevka Iaso"; font-family: "Iosevka Iaso";
@ -25,10 +43,6 @@
--c-bg-2: #18181b; --c-bg-2: #18181b;
--c-border-1: transparent; --c-border-1: transparent;
--c-border-2: #606060; --c-border-2: #606060;
--font-display: "Atkinson Hyperlegible", sans-serif;
--font-body: "Iosevka Iaso", "Iosevka Fixed Web", sans-serif;
--font-mono: "Iosevka Fixed Web", Iosevka, sans-serif;
} }
@media (prefers-color-scheme: light) { @media (prefers-color-scheme: light) {
@ -48,6 +62,6 @@ html {
} }
body { body {
font-family: var(--font-body); font-family: "Iosevka Iaso", "Iosevka Fixed Web", sans-serif;
font-optical-sizing: auto; font-optical-sizing: auto;
} }

View File

@ -4,7 +4,7 @@ const { title } = Astro.props;
<div <div
x-data="{open: true}" x-data="{open: true}"
class="shadow-lg p-2 bg-c-bg-2 rounded-md max-w-[50rem] border border-zinc-600 dark:border-zinc-900 mb-2" class="shadow-lg p-2 bg-c-bg-2 rounded-md max-w-[50rem] border border-slate-600 dark:border-transparent mb-2"
> >
<h2 <h2
class="text-2xl font-bold bg-c-bg-2 py-2 pl-2 cursor-pointer hover:underline sticky top-0 font-etoile" class="text-2xl font-bold bg-c-bg-2 py-2 pl-2 cursor-pointer hover:underline sticky top-0 font-etoile"

View File

@ -1,10 +1,9 @@
<div class="h-screen"> <div class="h-screen">
<nav <nav
class="fixed top-0 left-0 rotate-[-90deg] font-display w-[100vh] translate-y-[100vh] p-2" class="fixed top-0 left-0 bg-white text-black rotate-[-90deg] font-display
w-[100vh] translate-y-[100vh] px-8 py-2 shadow shadow-zinc-500"
style="transform-origin: 0% 0%;" style="transform-origin: 0% 0%;"
> >
<div class="shadow hover:shadow-md transition-shadow bg-c-bg-2 py-2 px-4 border border-zinc-600 dark:border-zinc-900 rounded-md">
<a class="font-semibold inline-block text-2xl hover:underline" href="/"> <a class="font-semibold inline-block text-2xl hover:underline" href="/">
Fernando Araoz Fernando Araoz
</a> </a>
@ -15,6 +14,22 @@
> >
<a class="ml-6 inline-block hover:underline" href="/blog/es">Es Blog</a> <a class="ml-6 inline-block hover:underline" href="/blog/es">Es Blog</a>
</div> <svg width="1.5rem" height="1.5rem" class="absolute -bottom-6 right-0">
<filter id='shadow' color-interpolation-filters="sRGB">
<feDropShadow dx="1" dy="1" stdDeviation="2"
flood-opacity="1"
flood-color="#71717a"
/>
</filter>
<g filter="url(#shadow)">
<path d="m 0 0 h 24 v 24 c 0 -12, -12 -24, -24 -24" fill="white" />
</g>
</svg>
<svg width="1.5rem" height="1.5rem" class="absolute -bottom-6 left-0">
<g filter="url(#shadow)">
<path d="m 24 0 h -24 v 24 c 0 -12, 12 -24, 24 -24" fill="white" />
</g>
</svg>
</nav> </nav>
</div> </div>

View File

@ -1,12 +1,18 @@
<div class="lg:px-1"> <div class="lg:px-1">
<h1 class="text-xl font-light py-4">
Hi 👋! I'm
<br />
<span class="font-bold text-3xl">Fernando Araoz</span>
</h1>
<div class="text-center"> <div class="text-center">
<div class="inline-block w-28 h-28 lg:w-40 lg:h-40 rounded-full bg-slate-500"></div> <div class="inline-block w-28 h-28 lg:w-40 lg:h-40 rounded-full bg-slate-500"></div>
</div> </div>
<p class="text-center">
<h1 class="text-xl font-light py-4"> I'm a (human) software engineer passionate about web technologies. I
<span class="font-display font-bold text-3xl">Fernando Araoz</span> love building things and learning new stuff.
</h1>
<p class="font-display">
Human software engineer based in Peru
</p> </p>
<div class="text-center py-4">
<a class="inline-block py-2 px-4 rounded bg-blue-600 text-white" href="/blog/en/">Blog (en)</a>
<a class="inline-block py-2 px-4 rounded bg-indigo-600 text-white" href="/blog/es/">Blog (es)</a>
</div>
</div> </div>

View File

@ -1,32 +0,0 @@
---
import Card from "../Card.astro"
const allPosts = await Astro.glob("../../pages/blog/en/*.md");
---
<Card title="en blog">
<div class="font-display">
<p>
Things I've thought about, about programming.
</p>
<ul class="py-4">
{
allPosts
.toSorted((x, y) =>
x.frontmatter.pubDate > y.frontmatter.pubDate ? -1 : 1,
)
.map((post) => {
return (
<li class="py-1">
{post.frontmatter.pubDate} -
<a class="underline text-lg" href={post.url}>
{post.frontmatter.title}
</a>
</li>
);
})
}
</ul>
</div>
</Card>

1
src/env.d.ts vendored
View File

@ -1,2 +1 @@
/// <reference path="../.astro/types.d.ts" />
/// <reference types="astro/client" /> /// <reference types="astro/client" />

View File

@ -15,10 +15,12 @@ lang = lang ?? "en";
<link rel="stylesheet" href="/global.css" /> <link rel="stylesheet" href="/global.css" />
<link rel="stylesheet" href="/blog.css" /> <link rel="stylesheet" href="/blog.css" />
<title>Blog - Fernando Araoz</title> <title>Blog - Fernando Araoz</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> <link
href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap"
rel="stylesheet"
/>
<link <link
rel="stylesheet" rel="stylesheet"
type="text/css" type="text/css"
@ -32,7 +34,7 @@ lang = lang ?? "en";
<div class="py-6"> <div class="py-6">
{ {
frontmatter?.title && ( frontmatter?.title && (
<h1 class="font-display font-bold text-center text-4xl py-2"> <h1 class="font-etoile text-center text-4xl py-2">
{frontmatter.title} {frontmatter.title}
</h1> </h1>
) )
@ -62,15 +64,26 @@ lang = lang ?? "en";
} }
</div> </div>
<div <div class="text-base">
class="text-base shadow-lg p-2 bg-c-bg-2 rounded-md border border-slate-600 dark:border-transparent mb-2"
>
<slot /> <slot />
</div> </div>
<div class="pt-4 border-t border-c-on-bg">
<h3>Comments/Comentarios</h3>
<section id="isso-thread"
>
<noscript>Javascript needs to be activated to view comments.</noscript>
</section>
</div>
<div class="min-h-40"></div> <div class="min-h-40"></div>
</div> </div>
</NavigationLayout> </NavigationLayout>
<script data-isso="https://comments.araozu.dev/"
data-isso-lang={lang}
src="https://comments.araozu.dev/js/embed.min.js"
></script>
</body> </body>
</html> </html>

View File

@ -22,9 +22,12 @@ const images_str = JSON.stringify(images);
<link rel="stylesheet" href="/global.css" /> <link rel="stylesheet" href="/global.css" />
<link rel="stylesheet" href="/blog.css" /> <link rel="stylesheet" href="/blog.css" />
<title>Side projects - Fernando Araoz</title> <title>Side projects - Fernando Araoz</title>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet"> <link
href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap"
rel="stylesheet"
/>
<link <link
rel="stylesheet" rel="stylesheet"
type="text/css" type="text/css"

View File

@ -1,7 +1,9 @@
--- ---
import Sidebar from "../components/Sidebar.astro"; import Sidebar from "../components/Sidebar.astro";
import Languages from "../components/index/Languages.astro";
import Learning from "../components/index/Learning.astro";
import Tools from "../components/index/Tools.astro";
import NavigationLayout from "../layouts/NavigationLayout.astro"; import NavigationLayout from "../layouts/NavigationLayout.astro";
import EsBlogIndex from "../components/index/EsBlogIndex.astro";
--- ---
<!doctype html> <!doctype html>
@ -12,10 +14,6 @@ import EsBlogIndex from "../components/index/EsBlogIndex.astro";
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} /> <meta name="generator" content={Astro.generator} />
<link rel="stylesheet" href="/global.css" /> <link rel="stylesheet" href="/global.css" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
<title>Fernando Araoz</title> <title>Fernando Araoz</title>
<link <link
rel="stylesheet" rel="stylesheet"
@ -31,7 +29,9 @@ import EsBlogIndex from "../components/index/EsBlogIndex.astro";
> >
<Sidebar /> <Sidebar />
<div> <div>
<EsBlogIndex /> <Languages />
<Learning />
<Tools />
</div> </div>
</div> </div>
</NavigationLayout> </NavigationLayout>

View File

@ -1,21 +1,21 @@
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
export default { export default {
content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
theme: { theme: {
extend: { extend: {
colors: { colors: {
'c-bg': 'var(--c-bg)', 'c-bg': 'var(--c-bg)',
'c-on-bg': 'var(--c-on-bg)', 'c-on-bg': 'var(--c-on-bg)',
'c-bg-2': 'var(--c-bg-2)', 'c-bg-2': 'var(--c-bg-2)',
}, },
fontFamily: { fontFamily: {
"etoile": ["var(--font-display)"], "etoile": ["'Iosevka Etoile Web'", "serif"],
"display": ["var(--font-display)"], "display": ["'Outfit'", "sans-serif"],
} }
}, },
}, },
plugins: [ plugins: [
function({ addComponents }) { function ({ addComponents }) {
addComponents({ addComponents({
'.container': { '.container': {
width: '98%', width: '98%',
@ -34,5 +34,5 @@ export default {
}, },
}) })
} }
], ],
} }