From 9ec85f92cf7821f394c084e3dc41c40a6bb6a648 Mon Sep 17 00:00:00 2001 From: Sudeste Date: Sun, 12 Apr 2026 19:37:06 -0300 Subject: [PATCH] Initial portfolio scaffold: Hono + HTMX + TailwindCSS --- .gitea/workflows/deploy.yml | 19 ++++++++++++ .gitignore | 5 +++ README.md | 30 ++++++++++++++++++ components/About.tsx | 27 ++++++++++++++++ components/Contact.tsx | 30 ++++++++++++++++++ components/Experience.tsx | 48 ++++++++++++++++++++++++++++ components/Layout.tsx | 62 +++++++++++++++++++++++++++++++++++++ components/Projects.tsx | 38 +++++++++++++++++++++++ components/Skills.tsx | 61 ++++++++++++++++++++++++++++++++++++ package.json | 16 ++++++++++ public/resume.pdf | 5 +++ src/index.ts | 24 ++++++++++++++ tsconfig.json | 14 +++++++++ wrangler.toml | 7 +++++ 14 files changed, 386 insertions(+) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 components/About.tsx create mode 100644 components/Contact.tsx create mode 100644 components/Experience.tsx create mode 100644 components/Layout.tsx create mode 100644 components/Projects.tsx create mode 100644 components/Skills.tsx create mode 100644 package.json create mode 100644 public/resume.pdf create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 wrangler.toml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..9ec8b45 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,19 @@ +name: Deploy + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20' + - run: npm ci + - run: npx wrangler deploy + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd03dd2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +.wrangler/ +dist/ +*.log +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..36e1b6d --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# Portfolio + +Self-hosted portfolio built with Hono + HTMX + TailwindCSS on Cloudflare Workers. + +## Setup + +```bash +npm install +npm run dev +``` + +## Deploy to Cloudflare + +1. Set `CLOUDFLARE_API_TOKEN` in Gitea secrets +2. Push to `main` branch + +## Local Development + +```bash +npm run dev +``` + +Access at `http://localhost:8787` + +## Tech Stack + +- **Framework:** Hono.js +- **UI:** HTMX + TailwindCSS +- **Deployment:** Cloudflare Workers +- **Theme:** Dracula diff --git a/components/About.tsx b/components/About.tsx new file mode 100644 index 0000000..d472ebb --- /dev/null +++ b/components/About.tsx @@ -0,0 +1,27 @@ +export const About = () => ( +
+

About

+
+

+ Self-taught engineer with 20+ years of practical experience in systems administration, + infrastructure management, and QA automation. Currently leading API testing automation + initiatives for enterprise clients. +

+

+ Strong preference for self-hosted infrastructure and cost-effective solutions over major cloud providers. + Proven track record in building automated testing frameworks, leading technical teams, and delivering + reliable infrastructure solutions for small to medium businesses. +

+
+
+

Location

+

Buenos Aires, Argentina

+
+
+

Languages

+

Spanish (Native), English (FCE certified)

+
+
+
+
+) diff --git a/components/Contact.tsx b/components/Contact.tsx new file mode 100644 index 0000000..b1f6f94 --- /dev/null +++ b/components/Contact.tsx @@ -0,0 +1,30 @@ +export const Contact = () => ( +
+

Contact

+
+
+

Get in Touch

+

+ Interested in working together? Reach out via email or connect on social platforms. +

+ +
+
+

Download Resume

+ + 📄 Download PDF Resume + +
+
+
+) diff --git a/components/Experience.tsx b/components/Experience.tsx new file mode 100644 index 0000000..30ede45 --- /dev/null +++ b/components/Experience.tsx @@ -0,0 +1,48 @@ +export const Experience = () => ( +
+

Experience

+
+
+
+

API Testing Automation Team Lead

+ 2021 - Present +
+

Intermex Wire Transfer, LLC

+
    +
  • Lead team of 3 automation engineers in API testing initiatives
  • +
  • Develop k6 performance testing framework with JavaScript abstraction
  • +
  • Achieved 80% automation coverage across 50+ API endpoints
  • +
  • Onboard development teams to Postman + Azure Pipelines automation methodology
  • +
  • Team development: Training coworkers in Postman usage and basic JavaScript
  • +
+
+
+
+

QA Performance Engineer

+ 2021 - 2025 +
+

Freelance & Contract Roles

+
    +
  • Developed k6 performance testing framework from scratch
  • +
  • Created JavaScript abstraction layer for API synthetic testing
  • +
  • Designed synthetic test methodology for production environments
  • +
  • Consulting for small businesses on self-hosting infrastructure
  • +
  • Office PC support: File servers, printer servers, LAN networks, VPN access
  • +
+
+
+
+

Technical Services Provider

+ 2006 - Present +
+

Independent Contractor

+
    +
  • Computer repair and maintenance services (18+ years)
  • +
  • System optimization: Backup, format, Windows reinstallation, driver updates
  • +
  • Hardware diagnostics and component replacement
  • +
  • Self-taught knowledge accumulated through 20 years of practical experience
  • +
+
+
+
+) diff --git a/components/Layout.tsx b/components/Layout.tsx new file mode 100644 index 0000000..96972f8 --- /dev/null +++ b/components/Layout.tsx @@ -0,0 +1,62 @@ +import { html } from 'hono/html' + +export const Layout = (props: { children: any }) => html` + + + + + + + Sudeste - Portfolio + + + + + + +
+ ${props.children} +
+ + + +` diff --git a/components/Projects.tsx b/components/Projects.tsx new file mode 100644 index 0000000..db6a9f6 --- /dev/null +++ b/components/Projects.tsx @@ -0,0 +1,38 @@ +export const Projects = () => ( +
+

Projects

+
+
+

k6 Performance Testing Framework

+

JavaScript-based k6 abstraction layer for API synthetic testing

+
    +
  • Enabled Postman-like experience for endpoint-specific testing
  • +
  • Developer-friendly workflow with JavaScript abstraction
  • +
  • 80% automation coverage across 50+ API endpoints
  • +
+
+
+

Home Lab Infrastructure

+

Complete self-hosted stack demonstrating production-grade deployment skills

+
    +
  • Gitea, Owncloud, SearXNG, PocketBase, WireGuard, nginx-proxy-manager
  • +
  • Full CI/CD pipeline integration
  • +
  • Monitoring with Grafana and Cockpit
  • +
+
+
+

Media Processing Automation

+

FFmpeg-based video conversion utility with multi-subtitle track management

+
    +
  • Television optimization workflows
  • +
  • Automated subtitle track handling
  • +
+
+
+

Service Platform (Proof of Concept)

+

Cloudflare Worker + PocketBase + HTMX/TailwindCSS stack

+ View Demo → +
+
+
+) diff --git a/components/Skills.tsx b/components/Skills.tsx new file mode 100644 index 0000000..d7de427 --- /dev/null +++ b/components/Skills.tsx @@ -0,0 +1,61 @@ +export const Skills = () => ( +
+

Skills

+
+
+

Operating Systems

+
+ Arch Linux + Debian + Windows Server + Windows Client +
+
+
+

Languages

+
+ JavaScript + Python + Go + Bash +
+
+
+

Testing & QA

+
+ Postman + k6 + API Testing + Performance Testing +
+
+
+

DevOps & Cloud

+
+ Azure Pipelines + Docker + Podman + Cloudflare Workers +
+
+
+

Infrastructure

+
+ KVM + WireGuard + RAID + OpenWrt +
+
+
+

Web Stack

+
+ Hono.js + HTMX + TailwindCSS + PocketBase +
+
+
+
+) diff --git a/package.json b/package.json new file mode 100644 index 0000000..642f3ce --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "portfolio", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "wrangler dev", + "deploy": "wrangler deploy" + }, + "dependencies": { + "hono": "^4.0.0" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20240117.0", + "wrangler": "^3.0.0" + } +} diff --git a/public/resume.pdf b/public/resume.pdf new file mode 100644 index 0000000..31dc26b --- /dev/null +++ b/public/resume.pdf @@ -0,0 +1,5 @@ +# Resume placeholder - Replace with actual PDF + +This file should be replaced with your actual PDF resume at `/home/sudeste/agent/portfolio/public/resume.pdf` + +The CV_FINAL.md file contains your full resume content. diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..426f836 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,24 @@ +import { Hono } from 'hono' +import { jsxRenderer } from 'hono/jsx-renderer' +import { Layout } from '../components/Layout' +import { About } from '../components/About' +import { Projects } from '../components/Projects' +import { Skills } from '../components/Skills' +import { Experience } from '../components/Experience' +import { Contact } from '../components/Contact' + +const app = new Hono() + +app.use('*', jsxRenderer(({ children }) => {children})) + +app.get('/', (c) => ( +
+ + + + + +
+)) + +export default app diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..baaf1ca --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "lib": ["ES2022"], + "moduleResolution": "bundler", + "jsx": "react-jsx", + "jsxImportSource": "hono/jsx", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "types": ["@cloudflare/workers-types"] + } +} diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 0000000..3f94822 --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,7 @@ +name = "portfolio" +main = "src/index.ts" +compatibility_date = "2024-01-01" +compatibility_flags = ["nodejs_compat"] + +[vars] +CLOUDFLARE_ACCOUNT_ID = "your-account-id"