diff --git a/README.md b/README.md index 6fc3fd0..eef49e8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,75 @@ -# jrodriiguezg.link-page +# jrodriiguezg.link — Personal Portfolio -Files for jrodriiguezg.link main page \ No newline at end of file +> Deployment & Infrastructure consultancy site. Docker, Linux, AI stacks. + +**Live:** [jrodriiguezg.link](https://jrodriiguezg.link) + +--- + +## Overview + +Personal portfolio and landing page for **Juan Raul Rodriguez Gil** — a deployment and infrastructure specialist focused on Linux, Docker, and AI pipelines. The site presents services offered, skills, projects, and contact information in a clean two-column layout. + +## Tech Stack + +| Layer | Technology | +|---|---| +| Markup | HTML5 | +| Styling | Vanilla CSS | +| Typography | Inter (Google Fonts) | +| Hosting | Self-hosted (Cloudflare Tunnel) | + +## Structure + +``` +personal_site/ +├── index.html # Main portfolio page +├── styles.css # Global stylesheet +├── favicon.png # Site favicon +├── robots.txt # SEO crawler rules +├── sitemap.xml # XML sitemap +├── lab/ # Home Lab subpage +├── gamecathode/ # GameCathode project page +├── grape/ # Grape Models project page +├── PRRPC/ # PRRPC project page +└── srag/ # SRag project page +``` + +## Services Featured + +- **Container Architecture** — Docker Compose stacks, isolated services, versioned configs +- **AI & LLM Infrastructure** — Local Ollama, RAG pipelines, ChromaDB integration +- **Linux Systems Engineering** — Server setup, hardening, administration (Debian, RHEL, Ubuntu, Fedora) +- **Infrastructure Audit** — Deep deployment review and risk assessment + +## Skills Highlighted + +| Category | Tools | +|---|---| +| Infrastructure | Docker · Docker Compose · Podman · Cloudflare · Nginx · Bash · Git · Python | +| Linux & Systems | Debian · RHEL · Ubuntu · Fedora · Windows Server | +| Networking | DNS · Reverse proxy · VPN · Cloudflare Tunnels · Firewall | +| AI & Data | Ollama · ChromaDB · LlamaIndex · OpenWebUI · AnythingLLM · Jupyter | +| Electronics | Circuit design · Soldering · Arduino · ESP32 · Raspberry Pi · KiCad | +| Business Software | Odoo ERP · Microsoft Excel · Office 365 | +| Design & Docs | Inkscape · Canva · Markdown · FreeCAD | + +## Projects + +| Project | Description | Stack | +|---|---|---| +| [LEMoE](https://lemoe.link) | AI middleware with semantic routing across expert models | Docker · Python · Ollama | +| [SRag](https://srag.jrodriiguezg.link) | Containerized RAG pipeline | ChromaDB · Docker Compose | +| [PRRPC](https://prrpc.jrodriiguezg.link) | Physical Linux status monitor via RP2040 | Linux · Wayland · Hardware | +| [Blog](https://blog.jrodriiguezg.link) | Technical writing in English and Spanish | Writing · Linux · Systems | +| Lab | Two servers, 5.6TB storage, no cloud | HP EliteDesk · Raspberry Pi 4B | + +## Contact + +- **Email:** [hola@jrodriiguezg.link](mailto:hola@jrodriiguezg.link) +- **LinkedIn:** [juanraulrodriguezgil](https://www.linkedin.com/in/juanraulrodriguezgil/) +- **GitHub:** [@jrodriiguezg](https://github.com/jrodriiguezg) + +--- + +© 2026 Juan Raul Rodriguez Gil diff --git a/favicon.jpg b/favicon.jpg new file mode 100644 index 0000000..e90aa83 Binary files /dev/null and b/favicon.jpg differ diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..9175290 Binary files /dev/null and b/favicon.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..336d525 --- /dev/null +++ b/index.html @@ -0,0 +1,181 @@ + + + + + + Juan Rodriguez Gil — Deployment & Infrastructure + + + + + + + + + + + + +
+
+

+ Infrastructure
+ that just works. +

+
+
+

+ I design and deploy Linux and Docker-based stacks for teams that can't afford surprises in production. From a single service to a full AI pipeline. +

+ Talk to me → +
+
+ + +
+ + +
+ +
+

Services

+
+
+

Container Architecture

+

Translating complex application dependencies into clean, reproducible Docker Compose stacks. Every service isolated, every config versioned.

+
+
+

AI & LLM Infrastructure

+

Private deployment of language models and RAG pipelines. Local Ollama setups, ChromaDB integration, and intelligent request routing.

+
+
+

Linux Systems Engineering

+

Server setup, hardening, and long-term administration. Debian, RHEL, Ubuntu, Fedora.

+
+
+

Infrastructure Audit

+

A deep review of your current deployment — finding the things that will hurt you before they do.

+
+
+
+ +
+

Tools & Skills

+
+
+

Infrastructure

+

Docker · Docker Compose · Podman · Cloudflare · Nginx · Bash · Git · Python

+
+
+

Linux & Systems

+

Debian · RHEL · Ubuntu · Fedora · Windows Server · Windows administration

+
+
+

Networking

+

DNS · Reverse proxy · VPN · LAN/WAN · Cloudflare Tunnels · Firewall configuration

+
+
+

AI & Data

+

Ollama · ChromaDB · LlamaIndex · OpenWebUI · AnythingLLM · Jupyter · Python

+
+
+

Electronics & Hardware

+

Circuit design · Soldering · Arduino · ESP32 · Raspberry Pi · KiCad · FreeCAD

+
+
+

Business Software

+

Odoo ERP · Microsoft Excel · Office 365

+
+
+

Design & Documentation

+

Inkscape · Canva · Markdown · FreeCAD

+
+
+
+ + + Home Lab +

Two Linux servers running 15+ self-hosted services. See the hardware and what's deployed on it.

+ View the lab → +
+ +
+ + +
+ +
+

Projects

+ +
+ +
+

Contact

+

If you need a reliable infrastructure partner — someone who understands your stack end to end — reach out.

+ + +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..32db233 --- /dev/null +++ b/styles.css @@ -0,0 +1,381 @@ +:root { + --bg: #111111; + --surface: #181818; + --text: #e2e2e2; + --muted: #666; + --border: #242424; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { scroll-behavior: smooth; } + +body { + font-family: 'Inter', sans-serif; + background: var(--bg); + color: var(--text); + font-size: 1rem; + line-height: 1.7; + -webkit-font-smoothing: antialiased; +} + +/* ─── NAV ─── */ + +nav { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1.8rem 4rem; + border-bottom: 1px solid var(--border); +} + +.nav-name { + font-size: 0.95rem; + font-weight: 500; + color: var(--text); + text-decoration: none; +} + +.nav-links { + display: flex; + gap: 2.5rem; +} + +.nav-links a { + font-size: 0.85rem; + color: var(--muted); + text-decoration: none; + transition: color 0.2s; +} + +.nav-links a:hover { color: var(--text); } + +/* ─── DESKTOP LAYOUT ─── */ + +/* Hero: full width, 2 columns */ +header { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; + align-items: end; + padding: 6rem 4rem 5rem; + border-bottom: 1px solid var(--border); +} + +.hero-left { } + +.hero-right { + padding-bottom: 0.4rem; +} + +h1 { + font-size: clamp(2.4rem, 4vw, 3.8rem); + font-weight: 600; + line-height: 1.1; + letter-spacing: -0.03em; + margin-bottom: 0; +} + +h1 em { + font-style: italic; + font-weight: 300; +} + +.tagline { + font-size: 1rem; + color: var(--muted); + font-weight: 300; + line-height: 1.8; + margin-bottom: 2rem; +} + +.cta { + display: inline-block; + font-size: 0.9rem; + font-weight: 500; + color: var(--bg); + background: var(--text); + text-decoration: none; + padding: 0.65rem 1.4rem; + border-radius: 4px; + transition: opacity 0.2s; +} + +.cta:hover { opacity: 0.8; } + +/* ─── MAIN CONTENT AREA ─── */ + +.content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0; + padding: 0 4rem; +} + +/* Left column */ +.col-left { + padding: 4rem 4rem 4rem 0; + border-right: 1px solid var(--border); + display: flex; + flex-direction: column; + gap: 4rem; +} + +/* Right column */ +.col-right { + padding: 4rem 0 4rem 4rem; + display: flex; + flex-direction: column; + gap: 4rem; +} + +/* ─── SECTION TITLES ─── */ + +h2 { + font-size: 0.72rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--muted); + margin-bottom: 2rem; +} + +/* ─── SERVICES ─── */ + +.service-list { + display: flex; + flex-direction: column; + gap: 1.8rem; +} + +.service-title { + font-size: 0.95rem; + font-weight: 500; + margin-bottom: 0.3rem; +} + +.service-desc { + font-size: 0.88rem; + color: var(--muted); + font-weight: 300; + line-height: 1.7; +} + +/* ─── PROJECTS ─── */ + +.projects { + display: flex; + flex-direction: column; + gap: 0; +} + +.project { + display: block; + padding: 1.4rem 0; + text-decoration: none; + color: inherit; + border-top: 1px solid var(--border); + transition: padding-left 0.2s; +} + +.project:last-child { + border-bottom: 1px solid var(--border); +} + +.project:hover { padding-left: 0.5rem; } + +.project-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.4rem; +} + +.project-name { + font-size: 0.95rem; + font-weight: 500; +} + +.project-arrow { + font-size: 0.8rem; + color: var(--muted); +} + +.project p { + font-size: 0.88rem; + color: var(--muted); + font-weight: 300; + margin-bottom: 0.8rem; + line-height: 1.6; +} + +.project-stack { + font-size: 0.75rem; + color: var(--muted); + opacity: 0.6; +} + +/* ─── TOOLS / SKILLS ─── */ + +.skills-grid { + display: flex; + flex-direction: column; + gap: 1.4rem; +} + +.skill-group-title { + font-size: 0.78rem; + font-weight: 500; + color: var(--text); + margin-bottom: 0.2rem; +} + +.skill-group p:last-child { + font-size: 0.85rem; + color: var(--muted); + font-weight: 300; + line-height: 1.7; +} + +/* ─── LAB CALLOUT ─── */ + +.lab-callout { + display: flex; + flex-direction: column; + gap: 0.6rem; + padding: 1.5rem; + border: 1px solid var(--border); + border-radius: 4px; + text-decoration: none; + color: inherit; + transition: border-color 0.2s, background 0.2s; +} + +.lab-callout:hover { + background: #181818; + border-color: #333; +} + +.lab-callout-label { + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--muted); +} + +.lab-callout p { + font-size: 0.88rem; + color: var(--muted); + font-weight: 300; + line-height: 1.6; +} + +.lab-callout-link { + font-size: 0.85rem; + font-weight: 500; + color: var(--text); +} + +/* ─── CONTACT ─── */ + +.contact p { + font-size: 0.95rem; + color: var(--muted); + font-weight: 300; + margin-bottom: 1.5rem; + line-height: 1.8; +} + +.email-link { + display: inline-block; + font-size: 1rem; + font-weight: 500; + color: var(--text); + text-decoration: none; + border-bottom: 1px solid var(--border); + padding-bottom: 2px; + margin-bottom: 1.5rem; + transition: border-color 0.2s; +} + +.email-link:hover { border-color: var(--muted); } + +.social-links { + display: flex; + gap: 1.5rem; +} + +.social-links a { + font-size: 0.85rem; + color: var(--muted); + text-decoration: none; + transition: color 0.2s; +} + +.social-links a:hover { color: var(--text); } + +/* ─── FOOTER ─── */ + +footer { + padding: 1.5rem 4rem; + border-top: 1px solid var(--border); + font-size: 0.8rem; + color: var(--muted); + display: flex; + justify-content: space-between; +} + +/* ─── TABLET ─── */ + +@media (max-width: 900px) { + nav { padding: 1.5rem 2rem; } + + header { + grid-template-columns: 1fr; + gap: 2rem; + padding: 4rem 2rem; + } + + .content { + grid-template-columns: 1fr; + padding: 0 2rem; + } + + .col-left { + padding: 3rem 0; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .col-right { padding: 3rem 0; } + + footer { padding: 1.5rem 2rem; } +} + +/* ─── MOBILE ─── */ + +@media (max-width: 520px) { + nav { + padding: 1.2rem 1.2rem; + } + + .nav-links { gap: 1.2rem; } + + header { padding: 3rem 1.2rem; } + + h1 { font-size: 2.2rem; } + + .content { padding: 0 1.2rem; } + + footer { + padding: 1.5rem 1.2rem; + flex-direction: column; + gap: 0.3rem; + } + + .social-links { flex-wrap: wrap; gap: 1rem; } +} \ No newline at end of file