Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Standardized repository instructions for agent harnesses working on this Astro 7 static portfolio (Astro components only, no UI framework runtime), deployed to GitHub Pages.

**Live:** https://jonathanperis.github.io/
**Live:** https://www.jonathanperis.tech/

**Documentation:** [Index](wiki/index.md) · [Setup](wiki/getting_started.md) · [Deployment](wiki/deployment.md) · [Maintenance map](wiki/index.md#keeping-documentation-current)

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

[![Build Check](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/build-check.yml) [![Main Release](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/main-release.yml/badge.svg)](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/main-release.yml) [![CodeQL](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/codeql.yml/badge.svg)](https://github.com/jonathanperis/jonathanperis.github.io/actions/workflows/codeql.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

**[Live site →](https://jonathanperis.github.io/)** | **[Documentation →](wiki/index.md)** | **[Agent guide →](AGENTS.md)**
**[Live site →](https://www.jonathanperis.tech/)** | **[Documentation →](wiki/index.md)** | **[Agent guide →](AGENTS.md)**

---

## About

Astro-native portfolio (no UI framework runtime) with a static export for GitHub Pages. It fetches the repositories pinned on Jonathan's GitHub profile plus owned public, non-fork repositories from the GitHub GraphQL API at build time, resolves live GitHub Pages links through the REST API, and renders them in a "Career Metro Map" UI styled after transit signage (Vignelli / São Paulo Metrô): roles are stations on a Career line, skills and side projects are colored lines, and pinned repositories appear on a departures board.

The site includes a print-optimized [`/resume/`](https://jonathanperis.github.io/resume/) route, SEO metadata, JSON-LD, optional GA4 analytics, a web app manifest, and a Konami-code terminal easter egg. Shared profile and resume data live in [`src/lib/data.ts`](src/lib/data.ts) and feed the portfolio, resume, terminal command table, and JSON-LD; [`src/lib/metro.ts`](src/lib/metro.ts) adds the map vocabulary (lines, stations, coordinates), and some presentation copy is maintained in the Astro components.
The site includes a print-optimized [`/resume/`](https://www.jonathanperis.tech/resume/) route, SEO metadata, JSON-LD, optional GA4 analytics, a web app manifest, and a Konami-code terminal easter egg. Shared profile and resume data live in [`src/lib/data.ts`](src/lib/data.ts) and feed the portfolio, resume, terminal command table, and JSON-LD; [`src/lib/metro.ts`](src/lib/metro.ts) adds the map vocabulary (lines, stations, coordinates), and some presentation copy is maintained in the Astro components.

Project data refreshes when the site is rebuilt and deployed. The deployed browser does not fetch GitHub APIs. Without a token, or if the GraphQL fetch fails, the build uses checked-in fallback projects. See [Dynamic Projects](wiki/dynamic_projects.md) for filtering, the 100-repository limit, and Pages URL fallback behavior.

Expand Down
2 changes: 1 addition & 1 deletion astro.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import sitemap from '@astrojs/sitemap';
import tailwindcss from '@tailwindcss/vite';

export default defineConfig({
site: 'https://jonathanperis.github.io',
site: 'https://www.jonathanperis.tech',
outDir: 'out',
trailingSlash: 'always',
integrations: [sitemap()],
Expand Down
1 change: 1 addition & 0 deletions public/CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
www.jonathanperis.tech
2 changes: 1 addition & 1 deletion public/robots.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
User-agent: *
Allow: /
Sitemap: https://jonathanperis.github.io/sitemap-index.xml
Sitemap: https://www.jonathanperis.tech/sitemap-index.xml
2 changes: 1 addition & 1 deletion public/sitemap.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://jonathanperis.github.io/sitemap-0.xml</loc>
<loc>https://www.jonathanperis.tech/sitemap-0.xml</loc>
</sitemap>
</sitemapindex>
2 changes: 1 addition & 1 deletion src/lib/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const PROFILE = {
location: `${ADDRESS.locality}, ${ADDRESS.region}, ${ADDRESS.country}`,
github: "github.com/jonathanperis",
linkedin: "linkedin.com/in/jonathan-peris",
website: "jonathanperis.github.io",
website: "www.jonathanperis.tech",
summary:
`Software Engineer with ${YEARS_OF_EXPERIENCE} years of experience specializing in .NET and Fintech solutions. Proven track record architecting and delivering high-impact, enterprise-grade software. Expertise centered on the modern .NET ecosystem including .NET Core+, ASP.NET Core, Entity Framework, and MAUI. Deeply committed to engineering excellence with CQRS, DDD, Microservices, Hexagonal Architecture, and Cloud-Native principles. Strong DevOps background with Azure, Docker, and CI/CD pipelines.`,
};
Expand Down
10 changes: 5 additions & 5 deletions src/lib/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ const REQUEST_TIMEOUT_MS = 10_000;
const PAGES_LOOKUP_CONCURRENCY = 6;

const FALLBACK: GitHubRepo[] = [
{ title: "cpnucleo", description: "Hands-on .NET 10 project-management learning lab: compare REST/gRPC and EF Core/Dapper with Astro, PostgreSQL, OpenTelemetry, and executable contract tests.", url: "https://github.com/jonathanperis/cpnucleo", lang: "C#", langColor: "#7355dd", stars: 9, homepageUrl: "https://jonathanperis.github.io/cpnucleo/", pagesUrl: "https://jonathanperis.github.io/cpnucleo/", pinned: true },
{ title: "super-mango-editor", description: "C11/raylib platformer and visual level editor. Play in the browser via WebAssembly, build TOML worlds, and learn game development with Sandbox School.", url: "https://github.com/jonathanperis/super-mango-editor", lang: "C", langColor: "#555555", stars: 1, homepageUrl: "https://jonathanperis.github.io/super-mango-editor/", pagesUrl: "https://jonathanperis.github.io/super-mango-editor/", pinned: true },
{ title: "solar-system-simulator", description: "Physics-first orbital mechanics lab in C11 and raylib: native and WebAssembly simulations, reproducible A/B experiments, and a source-backed small-body atlas.", url: "https://github.com/jonathanperis/solar-system-simulator", lang: "C", langColor: "#555555", stars: 0, homepageUrl: "https://jonathanperis.github.io/solar-system-simulator/", pagesUrl: "https://jonathanperis.github.io/solar-system-simulator/", pinned: true },
{ title: "cpnucleo", description: "Hands-on .NET 10 project-management learning lab: compare REST/gRPC and EF Core/Dapper with Astro, PostgreSQL, OpenTelemetry, and executable contract tests.", url: "https://github.com/jonathanperis/cpnucleo", lang: "C#", langColor: "#7355dd", stars: 9, homepageUrl: "https://app-cpnucleo.jonathanperis.tech/", pagesUrl: "https://cpnucleo.jonathanperis.tech/", pinned: true },
{ title: "super-mango-editor", description: "C11/raylib platformer and visual level editor. Play in the browser via WebAssembly, build TOML worlds, and learn game development with Sandbox School.", url: "https://github.com/jonathanperis/super-mango-editor", lang: "C", langColor: "#555555", stars: 1, homepageUrl: "https://super-mango-editor.jonathanperis.tech/", pagesUrl: "https://super-mango-editor.jonathanperis.tech/", pinned: true },
{ title: "solar-system-simulator", description: "Physics-first orbital mechanics lab in C11 and raylib: native and WebAssembly simulations, reproducible A/B experiments, and a source-backed small-body atlas.", url: "https://github.com/jonathanperis/solar-system-simulator", lang: "C", langColor: "#555555", stars: 0, homepageUrl: "https://solar-system-simulator.jonathanperis.tech/", pagesUrl: "https://solar-system-simulator.jonathanperis.tech/", pinned: true },
{ title: "jonlib", description: "Jonlib: graphics and math libraries written in Bend 2, targeting raylib 6.0 parity.", url: "https://github.com/jonathanperis/jonlib", lang: "Python", langColor: "#3572A5", stars: 0, pinned: true },
{ title: "blazor-mudblazor-starter", description: "Local-first .NET 10 learning sandbox for Blazor Server and MudBlazor, with hands-on labs for state, forms, APIs, SQLite, authentication, localization, CSV, and Docker.", url: "https://github.com/jonathanperis/blazor-mudblazor-starter", lang: "C#", langColor: "#7355dd", stars: 2, homepageUrl: "https://jonathanperis.github.io/blazor-mudblazor-starter/docs/", pagesUrl: "https://jonathanperis.github.io/blazor-mudblazor-starter/", pinned: true },
{ title: "speedy-bird-lynx", description: "Flappy Bird-inspired arcade game built with ReactLynx and TypeScript. Android host, Lynx web preview, playable Canvas demo, and Astro docs; iOS source scaffold included. Every pipe makes it faster.", url: "https://github.com/jonathanperis/speedy-bird-lynx", lang: "TypeScript", langColor: "#3178c6", stars: 1, homepageUrl: "https://jonathanperis.github.io/speedy-bird-lynx/", pagesUrl: "https://jonathanperis.github.io/speedy-bird-lynx/", pinned: true },
{ title: "blazor-mudblazor-starter", description: "Local-first .NET 10 learning sandbox for Blazor Server and MudBlazor, with hands-on labs for state, forms, APIs, SQLite, authentication, localization, CSV, and Docker.", url: "https://github.com/jonathanperis/blazor-mudblazor-starter", lang: "C#", langColor: "#7355dd", stars: 2, homepageUrl: "https://blazor-mudblazor-starter.jonathanperis.tech/demo/", pagesUrl: "https://blazor-mudblazor-starter.jonathanperis.tech/", pinned: true },
{ title: "speedy-bird-lynx", description: "Flappy Bird-inspired arcade game built with ReactLynx and TypeScript. Android host, Lynx web preview, playable Canvas demo, and Astro docs; iOS source scaffold included. Every pipe makes it faster.", url: "https://github.com/jonathanperis/speedy-bird-lynx", lang: "TypeScript", langColor: "#3178c6", stars: 1, homepageUrl: "https://speedy-bird-lynx.jonathanperis.tech/", pagesUrl: "https://speedy-bird-lynx.jonathanperis.tech/", pinned: true },
{ title: "rinha2-back-end-dotnet", description: "High-performance backend for the Rinha de Backend challenge — built with ASP.NET 9, PostgreSQL, Nginx, Native AOT, and Docker", url: "https://github.com/jonathanperis/rinha2-back-end-dotnet", lang: "HTML", langColor: "#e34c26", stars: 3, homepageUrl: "https://jonathanperis.github.io/rinha2-back-end-dotnet/", pagesUrl: "https://jonathanperis.github.io/rinha2-back-end-dotnet/" },
{ title: "rinha4-back-end-c", description: "Rinha de Backend 2026 C implementation with raw HTTP/1, Unix sockets, SCM_RIGHTS load balancing, and exact IVF fraud scoring", url: "https://github.com/jonathanperis/rinha4-back-end-c", lang: "C", langColor: "#555555", stars: 0, homepageUrl: "https://jonathanperis.github.io/rinha4-back-end-c/", pagesUrl: "https://jonathanperis.github.io/rinha4-back-end-c/" },
{ title: "rinha2-back-end-k6", description: "Grafana k6 stress tests for the Rinha de Backend challenge — Dockerized with InfluxDB metrics export", url: "https://github.com/jonathanperis/rinha2-back-end-k6", lang: "JavaScript", langColor: "#f1e05a", stars: 0, homepageUrl: "https://jonathanperis.github.io/rinha2-back-end-k6/", pagesUrl: "https://jonathanperis.github.io/rinha2-back-end-k6/" },
Expand Down
2 changes: 1 addition & 1 deletion wiki/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,4 @@ Publishing is handled by GitHub Actions; do not commit `out/`.

## Domain

The site is served at `https://jonathanperis.github.io` via GitHub Pages with automatic HTTPS.
The site is served at `https://www.jonathanperis.tech` via GitHub Pages with automatic HTTPS.
4 changes: 2 additions & 2 deletions wiki/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Personal developer portfolio for **Jonathan Peris** — Software Engineer with 12+ years of experience in .NET, Azure, backend architecture, and reliable delivery.

**Live site:** [jonathanperis.github.io](https://jonathanperis.github.io)
**Live site:** [www.jonathanperis.tech](https://www.jonathanperis.tech)

These are repository-hosted Markdown documents in `wiki/`. GitHub Wiki is disabled; Astro publishes the portfolio and resume, not these documentation pages.

Expand All @@ -15,7 +15,7 @@ These are repository-hosted Markdown documents in `wiki/`. GitHub Wiki is disabl
- **Source tree:** `src/pages`, `src/components`, `src/layouts`, `src/lib`, and `src/styles`.
- **Build output:** `out/`, uploaded as a GitHub Pages artifact by `main-release.yml`.
- **Data source:** `src/lib/data.ts` for profile/resume/terminal data; `src/lib/metro.ts` for the map's lines and stations (roles looked up from `data.ts`); `src/lib/github.ts` for GitHub repository discovery.
- **Production URL:** `https://jonathanperis.github.io/`.
- **Production URL:** `https://www.jonathanperis.tech/`.

## Features

Expand Down
2 changes: 1 addition & 1 deletion wiki/seo_and_analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ There are no handwritten page entries, priorities, change frequencies, or `lastm
```txt
User-agent: *
Allow: /
Sitemap: https://jonathanperis.github.io/sitemap-index.xml
Sitemap: https://www.jonathanperis.tech/sitemap-index.xml
```

## Google Analytics 4
Expand Down
Loading