From 7ae96b465485a2baa966dd718599d781a9a28dab Mon Sep 17 00:00:00 2001 From: jv Date: Mon, 18 May 2026 00:30:47 -0500 Subject: [PATCH] feat: initial homelab configuration layout --- .gitignore | 13 ++ argocd/main.tf | 135 +++++++++++++ argocd/providers.tf | 13 ++ container-registry/registry-deployment.yaml | 43 ++++ container-registry/registry-storage.yaml | 27 +++ gittea/docker_gitea_backup.tf | 33 ++++ gittea/host_prep.tf | 18 ++ gittea/k8s_gitea.tf | 134 +++++++++++++ gittea/providers.tf | 31 +++ gittea/variables.tf | 26 +++ test | 1 - web-app/Dockerfile | 36 ++++ web-app/buildkitd.toml | 7 + web-app/cv.php | 134 +++++++++++++ web-app/gnu.webp | Bin 0 -> 4086 bytes web-app/images/jv.webp | Bin 0 -> 61307 bytes web-app/images/profile.webp | Bin 0 -> 61307 bytes web-app/index.php | 81 ++++++++ web-app/lang/en.php | 53 +++++ web-app/lang/nah.php | 64 ++++++ web-app/lang_helper.php | 30 +++ web-app/partials/footer.php | 3 + web-app/partials/header.php | 11 ++ web-app/partials/translation_ui.php | 52 +++++ web-app/save_lang.php | 58 ++++++ web-app/styles.css | 205 ++++++++++++++++++++ web-app/translation.js | 198 +++++++++++++++++++ web-app/web-app.yaml | 47 +++++ 28 files changed, 1452 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 argocd/main.tf create mode 100644 argocd/providers.tf create mode 100644 container-registry/registry-deployment.yaml create mode 100644 container-registry/registry-storage.yaml create mode 100644 gittea/docker_gitea_backup.tf create mode 100644 gittea/host_prep.tf create mode 100644 gittea/k8s_gitea.tf create mode 100644 gittea/providers.tf create mode 100644 gittea/variables.tf delete mode 100644 test create mode 100644 web-app/Dockerfile create mode 100644 web-app/buildkitd.toml create mode 100644 web-app/cv.php create mode 100644 web-app/gnu.webp create mode 100644 web-app/images/jv.webp create mode 100644 web-app/images/profile.webp create mode 100644 web-app/index.php create mode 100644 web-app/lang/en.php create mode 100644 web-app/lang/nah.php create mode 100644 web-app/lang_helper.php create mode 100644 web-app/partials/footer.php create mode 100644 web-app/partials/header.php create mode 100644 web-app/partials/translation_ui.php create mode 100644 web-app/save_lang.php create mode 100644 web-app/styles.css create mode 100644 web-app/translation.js create mode 100644 web-app/web-app.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0196cce --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Ignore OpenTofu / Terraform state and backups +*.tfstate +*.tfstate.backup +.terraform/ +.terraform.lock.hcl + +# Ignore local archive dumps and backups +*.tar +*.zip +gittea/gittea-docker-backup + +# Ignore older source iterations +*.old diff --git a/argocd/main.tf b/argocd/main.tf new file mode 100644 index 0000000..9420823 --- /dev/null +++ b/argocd/main.tf @@ -0,0 +1,135 @@ +resource "kubernetes_namespace" "argocd" { + metadata { + name = "argocd" + } +} + +data "http" "argocd_manifest" { + url = "https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml" +} + +resource "kubernetes_manifest" "argocd_core" { + for_each = { for idx, doc in provider::kubernetes::manifest_decode_multi(data.http.argocd_manifest.response_body) : idx => doc } + + manifest = merge( + each.value, + contains(["ClusterRole", "ClusterRoleBinding", "CustomResourceDefinition", "Namespace"], lookup(each.value, "kind", "")) ? {} : { + metadata = merge( + try(each.value.metadata, {}), + { + namespace = kubernetes_namespace.argocd.metadata[0].name + } + ) + }, + lookup(each.value, "kind", "") == "Service" && lookup(try(each.value.metadata, {}), "name", "") == "argocd-server" ? { + spec = merge( + try(each.value.spec, {}), + { + type = "NodePort" + ports = [ + { + name = "http" + port = 80 + protocol = "TCP" + targetPort = 8080 + nodePort = 30501 + }, + { + name = "https" + port = 443 + protocol = "TCP" + targetPort = 8080 + } + ] + } + ) + } : {} + ) + + field_manager { + force_conflicts = true + } + + depends_on = [kubernetes_namespace.argocd] +} + +resource "kubernetes_secret_v1" "argocd_private_repo" { + metadata { + name = "my-homelab-repo-secret" + namespace = kubernetes_namespace.argocd.metadata[0].name + labels = { + "argocd.argoproj.io/secret-type" = "repository" + } + } + + data = { + type = "git" + url = "http://192.168.100.68:30300/jv/my-homelab-configs" + username = "jv" + password = "Summer12#$" + } + + depends_on = [kubernetes_manifest.argocd_core] +} + +resource "kubernetes_manifest" "argocd_app_registry" { + manifest = { + apiVersion = "argoproj.io/v1alpha1" + kind = "Application" + metadata = { + name = "container-registry" + namespace = "argocd" + } + spec = { + project = "default" + source = { + repoURL = "http://192.168.100.68:30300/jv/my-homelab-configs" + targetRevision = "HEAD" + path = "container-registry" # Points to the folder containing your registry YAMLs + } + destination = { + server = "https://kubernetes.default.svc" + namespace = "container-registry" # Deploys into this namespace + } + syncPolicy = { + automated = { + prune = true + selfHeal = true + } + syncOptions = ["CreateNamespace=true"] + } + } + } + depends_on = [kubernetes_manifest.argocd_core] +} + +resource "kubernetes_manifest" "argocd_app_web_app" { + manifest = { + apiVersion = "argoproj.io/v1alpha1" + kind = "Application" + metadata = { + name = "php-web-app" + namespace = "argocd" + } + spec = { + project = "default" + source = { + repoURL = "http://192.168.100.68:30300/jv/my-homelab-configs" + targetRevision = "HEAD" + path = "web-app" # ArgoCD ignores the PHP/Docker files and grabs web-app.yaml + } + destination = { + server = "https://kubernetes.default.svc" + namespace = "default" + } + syncPolicy = { + automated = { + prune = true + selfHeal = true + } + syncOptions = ["CreateNamespace=true"] + } + } + } + depends_on = [kubernetes_manifest.argocd_core] +} diff --git a/argocd/providers.tf b/argocd/providers.tf new file mode 100644 index 0000000..e3fca5f --- /dev/null +++ b/argocd/providers.tf @@ -0,0 +1,13 @@ +terraform { + required_providers { + kubernetes = { + source = "hashicorp/kubernetes" + version = "~> 2.24" + } + } +} + +provider "kubernetes" { + config_path = "~/.kube/config" + config_context = "kubernetes-admin@kubernetes" +} diff --git a/container-registry/registry-deployment.yaml b/container-registry/registry-deployment.yaml new file mode 100644 index 0000000..4bb0e3f --- /dev/null +++ b/container-registry/registry-deployment.yaml @@ -0,0 +1,43 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: local-registry + namespace: container-registry + labels: + app: local-registry +spec: + replicas: 1 + selector: + matchLabels: + app: local-registry + template: + metadata: + labels: + app: local-registry + spec: + containers: + - name: registry + image: registry:2 + ports: + - containerPort: 5000 + volumeMounts: + - name: registry-vol + mountPath: /var/lib/registry + volumes: + - name: registry-vol + persistentVolumeClaim: + claimName: registry-pvc +--- +apiVersion: v1 +kind: Service +metadata: + name: local-registry-svc + namespace: container-registry +spec: + type: NodePort + ports: + - port: 5000 + targetPort: 5000 + nodePort: 30500 + selector: + app: local-registry diff --git a/container-registry/registry-storage.yaml b/container-registry/registry-storage.yaml new file mode 100644 index 0000000..c3eee61 --- /dev/null +++ b/container-registry/registry-storage.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: registry-pv + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 20Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/home/k8s-storage/registry-data" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: registry-pvc + namespace: container-registry +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi diff --git a/gittea/docker_gitea_backup.tf b/gittea/docker_gitea_backup.tf new file mode 100644 index 0000000..92e16c7 --- /dev/null +++ b/gittea/docker_gitea_backup.tf @@ -0,0 +1,33 @@ +# Pull down the Gitea image locally via the Pi's Docker engine +resource "docker_image" "gitea_backup" { + name = "gitea/gitea:1.21.7" + keep_locally = true +} + +# Fire up the standalone container wrapper +resource "docker_container" "gitea_backup" { + name = "gitea-backup" + image = docker_image.gitea_backup.image_id + restart = "always" + + env = [ + "USER_UID=1000", + "USER_GID=1000", + "GITEA__database__DB_TYPE=sqlite3" + ] + + ports { + internal = 3000 + external = 3000 + } + + ports { + internal = 22 + external = 2222 + } + + volumes { + host_path = "/home/pi/gitea-backup-data" + container_path = "/data" + } +} diff --git a/gittea/host_prep.tf b/gittea/host_prep.tf new file mode 100644 index 0000000..9c328d3 --- /dev/null +++ b/gittea/host_prep.tf @@ -0,0 +1,18 @@ +resource "null_resource" "node_prep" { + for_each = var.nodes + + connection { + type = "ssh" + user = each.value.user + host = each.value.ip + private_key = file(var.ssh_key_path) + } + + provisioner "remote-exec" { + inline = [ + "sudo apt-get update", + "sudo apt-get install -y open-iscsi util-linux", + "sudo systemctl enable --now iscsid" + ] + } +} diff --git a/gittea/k8s_gitea.tf b/gittea/k8s_gitea.tf new file mode 100644 index 0000000..85df5e2 --- /dev/null +++ b/gittea/k8s_gitea.tf @@ -0,0 +1,134 @@ +resource "kubernetes_namespace" "gitea" { + metadata { + name = "gitea-system" + } +} + +resource "null_resource" "install_longhorn" { + depends_on = [null_resource.node_prep] + + provisioner "local-exec" { + command = "kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/deploy/longhorn.yaml" + } +} + +resource "kubernetes_persistent_volume_claim" "gitea_pvc" { + depends_on = [null_resource.install_longhorn] + + metadata { + name = "gitea-pvc" + namespace = kubernetes_namespace.gitea.metadata[0].name + } + spec { + access_modes = ["ReadWriteOnce"] + storage_class_name = "longhorn" + resources { + requests = { + storage = "10Gi" + } + } + } +} + +resource "kubernetes_deployment" "gitea_prod" { + metadata { + name = "gitea-prod" + namespace = kubernetes_namespace.gitea.metadata[0].name + } + spec { + replicas = 1 + selector { + match_labels = { + app = "gitea" + } + } + template { + metadata { + labels = { + app = "gitea" + } + } + spec { + container { + name = "gitea" + image = "gitea/gitea:1.21.7" + + port { + container_port = 3000 + name = "http" + } + port { + container_port = 22 + name = "ssh" + } + + env { + name = "USER_UID" + value = "1000" + } + env { + name = "USER_GID" + value = "1000" + } + env { + name = "GITEA__database__DB_TYPE" + value = "sqlite3" + } + + env { + name = "GITEA__repository__ENABLE_PUSH_MIRROR" + value = "true" + } + + env { + name = "GITEA__repository__ENABLE_PUSH_MIRROR" + value = "true" + } + + # ADD THIS NEW BLOCK: + env { + name = "GITEA__migrations__ALLOW_LOCALNETWORKS" + value = "true" + } + + volume_mount { + mount_path = "/data" + name = "gitea-storage" + } + } + + volume { + name = "gitea-storage" + persistent_volume_claim { + claim_name = kubernetes_persistent_volume_claim.gitea_pvc.metadata[0].name + } + } + } + } + } +} + +resource "kubernetes_service" "gitea_service" { + metadata { + name = "gitea-service" + namespace = kubernetes_namespace.gitea.metadata[0].name + } + spec { + type = "NodePort" + selector = { + app = "gitea" + } + port { + name = "http" + port = 3000 + target_port = 3000 + node_port = 30300 + } + port { + name = "ssh" + port = 22 + target_port = 22 + node_port = 32222 + } + } +} diff --git a/gittea/providers.tf b/gittea/providers.tf new file mode 100644 index 0000000..1cf17c0 --- /dev/null +++ b/gittea/providers.tf @@ -0,0 +1,31 @@ +terraform { + required_providers { + null = { + source = "hashicorp/null" + version = "~> 3.2" + } + docker = { + source = "kreuzwerker/docker" + version = "~> 3.0" + } + kubernetes = { + source = "hashicorp/kubernetes" + version = "~> 2.23" + } + } +} + +# Core Cluster API access +provider "kubernetes" { + config_path = "~/.kube/config" + config_context = "kubernetes-admin@kubernetes" +} + +# Remote Docker control over the Raspberry Pi +provider "docker" { + host = "ssh://jv@192.168.100.89:22" + ssh_opts = [ + "-o", "StrictHostKeyChecking=no", + "-i", var.ssh_key_path + ] +} diff --git a/gittea/variables.tf b/gittea/variables.tf new file mode 100644 index 0000000..f1339ec --- /dev/null +++ b/gittea/variables.tf @@ -0,0 +1,26 @@ +variable "home_dir" { + type = string + default = "/home/jv" +} + +variable "ssh_key_path" { + type = string + default = "/home/jv/.ssh/id_ed25519" +} + +variable "nodes" { + type = map(object({ + ip = string + user = string + })) + default = { + raspberrypi = { + ip = "192.168.100.89" + user = "jv" + } + debian_laptop = { + ip = "192.168.100.68" + user = "jv" + } + } +} diff --git a/test b/test deleted file mode 100644 index 9daeafb..0000000 --- a/test +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/web-app/Dockerfile b/web-app/Dockerfile new file mode 100644 index 0000000..6f4fc6e --- /dev/null +++ b/web-app/Dockerfile @@ -0,0 +1,36 @@ +FROM alpine:3.19 + +# Install Apache, PHP 8.2, and the SQLite extensions +RUN apk update && apk add --no-cache \ + apache2 \ + php82 \ + php82-apache2 \ + php82-pdo \ + php82-pdo_sqlite \ + php82-curl \ + curl \ + shadow + +# Symlink php82 to php so scripts run naturally if needed +RUN ln -sf /usr/bin/php82 /usr/bin/php + +# Alpine keeps Apache site configs here instead of a2enmod +RUN sed -i 's/#LoadModule rewrite_module/LoadModule rewrite_module/' /etc/apache2/httpd.conf && \ + sed -i 's/#LoadModule headers_module/LoadModule headers_module/' /etc/apache2/httpd.conf + +# Copy files directly into Alpine's default web root +COPY . /var/www/localhost/htdocs/ + +# Set up the database directory permissions +RUN mkdir -p /var/www/localhost/htdocs/db && \ + chown -R apache:apache /var/www/localhost/htdocs/db && \ + chmod -R 755 /var/www/localhost/htdocs/db + +# Match local user permissions for the runtime user (Alpine uses 'apache' instead of 'www-data') +RUN usermod -u 1000 apache && \ + groupmod -g 1000 apache + +EXPOSE 80 + +# Start Apache in the foreground +CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] diff --git a/web-app/buildkitd.toml b/web-app/buildkitd.toml new file mode 100644 index 0000000..4328ace --- /dev/null +++ b/web-app/buildkitd.toml @@ -0,0 +1,7 @@ +[registry."host.docker.internal:30500"] + http = true + insecure = true + +[registry."192.168.100.68:30500"] + http = true + insecure = true diff --git a/web-app/cv.php b/web-app/cv.php new file mode 100644 index 0000000..48fe2cd --- /dev/null +++ b/web-app/cv.php @@ -0,0 +1,134 @@ + + + + + + CV - <?php echo $text['name']; ?> + + + + + + +
+ +

+

+ +

+

+ +

+ +

+

+ +

+ +

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +

+

+ +

+

+ +

+ +
+ + + + + diff --git a/web-app/gnu.webp b/web-app/gnu.webp new file mode 100644 index 0000000000000000000000000000000000000000..90490608f21c40b1e2a308dcef655ad27f6dbbea GIT binary patch literal 4086 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 J`VSib_#c+tt;qlY literal 0 HcmV?d00001 diff --git a/web-app/images/jv.webp b/web-app/images/jv.webp new file mode 100644 index 0000000000000000000000000000000000000000..ee3fcf2faf7e4bd90b934a63b17b4809f41545cf GIT binary patch literal 61307 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�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 F|Jkp3c)9=p literal 0 HcmV?d00001 diff --git a/web-app/images/profile.webp b/web-app/images/profile.webp new file mode 100644 index 0000000000000000000000000000000000000000..ee3fcf2faf7e4bd90b934a63b17b4809f41545cf GIT binary patch literal 61307 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�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 F|Jkp3c)9=p literal 0 HcmV?d00001 diff --git a/web-app/index.php b/web-app/index.php new file mode 100644 index 0000000..69ce52d --- /dev/null +++ b/web-app/index.php @@ -0,0 +1,81 @@ + + + + + + <?php echo $text['name']; ?> + + + + + + +
+
+

+

+ +

+

+ +

+

+ +

+

+ +

+

+ + + + . +

+
+
+ profile +
+
+ + + + + + + diff --git a/web-app/lang/en.php b/web-app/lang/en.php new file mode 100644 index 0000000..c80d0d5 --- /dev/null +++ b/web-app/lang/en.php @@ -0,0 +1,53 @@ + 'Juvenal Diaz', + 'job_title' => 'Site Reliability Developer', + 'contacts' => 'Contacts: +52 449 217 6833, juvenaldiaz522@gmail.com', + + // Nav + 'nav_home' => 'Home', + 'nav_cv' => 'CV', + 'nav_blog' => 'Blog', + + // Index bio + 'bio_intro' => 'I work in infrastructure and reliability, focusing on building systems that are stable, scalable, and easy to operate.', + 'bio_story_1' => 'My interest in technology started with a simple curiosity about how systems behave — especially when they fail. Over time, that curiosity evolved into working with Linux environments, troubleshooting production systems, and improving how services run at scale.', + 'bio_story_2' => "I've spent more than a decade working across cloud platforms and distributed systems. My work has gradually shifted from reactive support to designing and maintaining platforms used by thousands of users, where reliability and clarity matter just as much as performance.", + 'bio_story_3' => 'I tend to approach problems with a strong sense of urgency, but also with a focus on long-term improvement — removing friction, simplifying systems, and preventing issues from recurring.', + 'bio_cta' => 'For a detailed breakdown of my experience, see my', + 'bio_cta_link' => 'CV', + + // CV sections + 'cv_summary_title' => 'Professional Summary', + 'cv_summary' => 'IT Professional with 12+ years of experience, specializing in Linux but also proficient in team management (local and global teams) and user satisfaction. My greatest strength is a sense of urgency which enables me to tackle issues in the most fast and efficient way, always focusing on continuous improvement and service excellence. I also enjoy learning new technologies as required.', + + 'cv_employment_title' => 'Employment History / Activities', + + 'cv_job1_period' => 'Aug 2024 → Current', + 'cv_job1_title' => 'Site Reliability Developer – Oracle | Spectra', + 'cv_job1_desc' => 'Manage a platform as a service (PaaS) that allows developers to build, run, and operate applications in a cloud environment, this service is used by 20,000+ users from internal development teams, it is based on Kubernetes / Terraform. Daily activities include planned maintenance of the platform, emergency changes, continuous improvement of internal tooling and documentation creation.', + + 'cv_job2_period' => 'June 2022 → July 2024', + 'cv_job2_title' => 'Site Reliability Developer – Oracle | Analytics', + 'cv_job2_desc' => 'Attend incidents for Oracle Analytics Cloud reported through Jira for 10,000+ external customers, related to general usage, Linux troubleshooting, SQL query tuning, and services/jobs configuration. Development of internal automation tools using Bash, Python, Ansible, and REST APIs in Bitbucket. SOP update and creation, working in a Scrum/Agile environment leading Continuous Improvement and Automation Epics. Top performer (Low TTM). Part of the onboarding team for new hires. Proposed on-call rotation improvement initiative (vNext).', + + 'cv_job3_period' => 'July 2021 → June 2022', + 'cv_job3_title' => 'Linux Support Engineer - Rackspace', + 'cv_job3_desc' => 'Attend incidents reported through phone calls and internal ticketing systems for several clients related to troubleshooting Linux, MySQL, Apache, NGINX, Varnish, PHP, VMware, DoS attacks, Storage, Backups, Firewalls, etc. Top performer (number of cases/tickets solved) of the MX and US team. Part of the onboarding team for new hires.', + + 'cv_job4_period' => 'March 2020 → July 2021', + 'cv_job4_title' => 'Linux Support Engineer - Softtek | Electronic Arts', + 'cv_job4_desc' => 'Provide infrastructure support for a PCI-compliant platform that handles 4M+ requests per minute with 30+ microservices using containers and orchestration technologies, using DevOps practices. Alerts creation and tuning.', + + 'cv_job5_period' => 'August 2017 → March 2020', + 'cv_job5_title' => 'Cross Functional Manager - Softtek | Electronic Arts', + 'cv_job5_desc' => 'Incident, Problem, Asset Management, and Automation (ITIL-based) process implementation, Continuous Improvement Assessments.', + + 'cv_job6_period' => 'September 2015 → August 2017', + 'cv_job6_title' => 'Linux Support Engineer / Tech Lead - Softtek | General Electric', + 'cv_job6_desc' => 'Incident, Change management, and monitoring for internal applications. Promoted to tech lead after one year in support position.', + + 'cv_job7_period' => 'February 2013 → August 2015', + 'cv_job7_title' => 'Customer Support Agent – Teleperformance | Comcast', + 'cv_job7_desc' => 'Provided customer support services taking calls from the US Southwest area to troubleshoot cable, phone, and internet services.', +]; diff --git a/web-app/lang/nah.php b/web-app/lang/nah.php new file mode 100644 index 0000000..a7fa5a7 --- /dev/null +++ b/web-app/lang/nah.php @@ -0,0 +1,64 @@ + 'Juvenal Diaz', + 'job_title' => 'Tlapixqui Tlahtoa Tlacuilolli', // Guardian of reliable systems + 'contacts' => 'Tlatemoliztli: +52 449 217 6833, juvenaldiaz522@gmail.com', + + // Nav + 'nav_home' => 'Nochan', // My home + 'nav_cv' => 'Notlahcuilol', // My document/record + 'nav_blog' => 'Notlahtol', // My words + + // Index bio + 'bio_intro' => 'Nitlatequitia ipan tlatecpanaliztli ihuan tlayeyecoliztli, niquitta in quenin tiquitasque tlapatlaliztli tlayecoliztli tlamantli nemiztli.', + // I work in infrastructure and reliability, seeing how we build stable, scalable systems + + 'bio_story_1' => 'Notlahtlaniliztli ipan āmantēcayōtl ōpeuh inic niquitta in quenin tlamantli mochihua — oc cequi in quenin polihui. Ic cauitl, in notlahtlaniliztli omochiuh inic nitlatequitia ipan Linux tlamantli, nitlapoa tlaneltoquiliztli, ihuan niquimati in quenin tlatequipanoa tlamantli ipan huey altepetl.', + // My curiosity about technology started by seeing how things work — especially how they fail. + + 'bio_story_2' => 'Ōnimacoc matlactli xihuitl ihuan achi ic tlatequitia ipan mixtlan tlamantilyotl ihuan nepapan tlamantli. Notequitl ōmoyolcuep in tlapalehuiloni itech inic niquitta ihuan niquimati in tlamantli mochihua ipan miec tlacame, in canin tlayeyecoliztli ihuan tlanextiliztli quinequi iuhqui in quenami tlatequipanoliztli.', + // I have spent a decade working on cloud platforms and distributed systems. + + 'bio_story_3' => 'Niquitta tlaneltoquiliztli inic niquixehua tlaneltoquiliztli — oc cequi ipan huehcauh tlapatlaliztli — niquitta in quenin ticchihua tlamantli nemiztli, tiquixehua quezqui tlamantli, ihuan ticmati in quenin ahmo mochihua occeppa.', + // I approach problems with urgency — also focusing on long-term improvement. + + 'bio_cta' => 'Inic ticita notequitl moch, xiquitta', + 'bio_cta_link' => 'Notlahcuilol', + + // CV sections + 'cv_summary_title' => 'Notequitl Tlahcuilolli', + 'cv_summary' => 'Tlapixqui āmantēcayōtl inic matlactli omome xihuitl, motemachtia Linux ihuan quimatia tlatecpanaliztli (ipan altepetl ihuan tlalpan) ihuan tlahtoa tlacame. Nohueyitequitl ic tlaneltoquiliztli niquixehua tlaneltoquiliztli inic achi ic niquichihua, moch ica tlapatlaliztli ihuan tlatequipanoliztli. Nixpampa nimati āmantēcayōtl yancuic quenin monequi.', + + 'cv_employment_title' => 'Notequitl Tlahcuilolli / Tlatequipanoliztli', + + 'cv_job1_period' => 'Ago 2024 → Axcan', + 'cv_job1_title' => 'Tlapixqui Tlahtoa Tlacuilolli – Oracle | Spectra', + 'cv_job1_desc' => 'Nitlapiya ce tlamantli inic tlatequipanoliztli (PaaS) in quimatia tlatecpanime inic quichihuasque, quimochihuiltisque ihuan quipixque tlamantli ipan mixtlan. In tlatequipanoliztli quimatia matlactli ompoalli tlamantilyotl ipan Kubernetes / Terraform. Cemilhuitl tlatequipanoliztli: tlachihualiztli, tlapatlaliztli, ihuan tlahcuilolli.', + + 'cv_job2_period' => 'Junio 2022 → Julio 2024', + 'cv_job2_title' => 'Tlapixqui Tlahtoa Tlacuilolli – Oracle | Analytics', + 'cv_job2_desc' => 'Nitlatoa tlaneltoquiliztli ipan Oracle Analytics Cloud inic matlactli tlamantilyotl tlacame, Linux, SQL, ihuan tlatequipanoliztli. Nitlachihua tlamantli inic Bash, Python, Ansible, ihuan REST APIs ipan Bitbucket. Scrum/Agile tlatequipanoliztli.', + + 'cv_job3_period' => 'Julio 2021 → Junio 2022', + 'cv_job3_title' => 'Linux Tlapalehuiani - Rackspace', + 'cv_job3_desc' => 'Nitlatoa tlaneltoquiliztli inic miec tlacame ipan Linux, MySQL, Apache, NGINX, Varnish, PHP, VMware, DoS, ihuan occequi. Huey tlapalehuiani ipan MX ihuan US.', + + 'cv_job4_period' => 'Marzo 2020 → Julio 2021', + 'cv_job4_title' => 'Linux Tlapalehuiani - Softtek | Electronic Arts', + 'cv_job4_desc' => 'Nitlapalehua tlamantilyotl inic PCI-compliant tlamantli in quichihua nauhpoalli tlamantilyotl ipan cempoallamatl inic DevOps.', + + 'cv_job5_period' => 'Agosto 2017 → Marzo 2020', + 'cv_job5_title' => 'Tlatecpanqui - Softtek | Electronic Arts', + 'cv_job5_desc' => 'ITIL tlatecpanaliztli, tlapatlaliztli, ihuan tlamantli tlatequipanoliztli.', + + 'cv_job6_period' => 'Septiembre 2015 → Agosto 2017', + 'cv_job6_title' => 'Linux Tlapalehuiani / Tech Lead - Softtek | General Electric', + 'cv_job6_desc' => 'Tlaneltoquiliztli, tlapatlaliztli, ihuan tlachihualiztli ipan tlamantli. Omotlacxitilli tech lead inic ce xihuitl.', + + 'cv_job7_period' => 'Febrero 2013 → Agosto 2015', + 'cv_job7_title' => 'Tlapalehuiani Tlacame – Teleperformance | Comcast', + 'cv_job7_desc' => 'Nitlapalehua tlacame ipan US inic cable, tepoztli, ihuan tlahtoa tlamantli.', +]; diff --git a/web-app/lang_helper.php b/web-app/lang_helper.php new file mode 100644 index 0000000..50f85e9 --- /dev/null +++ b/web-app/lang_helper.php @@ -0,0 +1,30 @@ + basename($f, '.php'), + glob(__DIR__ . '/lang/*.php') +); + +function getLang($supported) { + if (isset($_GET['lang']) && in_array($_GET['lang'], $supported)) { + return $_GET['lang']; + } + $browser = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? 'nah', 0, 2); + return in_array($browser, $supported) ? $browser : 'nah'; +} + +$lang = getLang($availableLangs); + +$file = __DIR__ . "/lang/$lang.php"; +if (!file_exists($file)) { + $lang = 'nah'; + $file = __DIR__ . "/lang/nah.php"; +} + +$text = include $file; + +// Always load English as translation source +$en = include __DIR__ . '/lang/en.php'; diff --git a/web-app/partials/footer.php b/web-app/partials/footer.php new file mode 100644 index 0000000..b557365 --- /dev/null +++ b/web-app/partials/footer.php @@ -0,0 +1,3 @@ +
+ © Juvenal Diaz +
diff --git a/web-app/partials/header.php b/web-app/partials/header.php new file mode 100644 index 0000000..6ea4d7f --- /dev/null +++ b/web-app/partials/header.php @@ -0,0 +1,11 @@ + diff --git a/web-app/partials/translation_ui.php b/web-app/partials/translation_ui.php new file mode 100644 index 0000000..b3795eb --- /dev/null +++ b/web-app/partials/translation_ui.php @@ -0,0 +1,52 @@ + +// Requires: $lang, $availableLangs — provided by lang_helper.php +?> + +
+ +
+
+ + + diff --git a/web-app/save_lang.php b/web-app/save_lang.php new file mode 100644 index 0000000..208d58d --- /dev/null +++ b/web-app/save_lang.php @@ -0,0 +1,58 @@ + 'Method not allowed']); + exit; +} + +$body = json_decode(file_get_contents('php://input'), true); + +if (!isset($body['lang'], $body['translations'])) { + http_response_code(400); + echo json_encode(['error' => 'Missing lang or translations']); + exit; +} + +$lang = preg_replace('/[^a-z]/', '', strtolower($body['lang'])); +$translations = $body['translations']; + +if (strlen($lang) < 2 || strlen($lang) > 5) { + http_response_code(400); + echo json_encode(['error' => 'Invalid lang code']); + exit; +} + +// Load English as base — ensures every key exists even if not translated +$base = include __DIR__ . '/lang/en.php'; + +// Overwrite only keys that were translated +foreach ($translations as $key => $value) { + if (array_key_exists($key, $base)) { + $base[$key] = $value; + } +} + +// Build PHP file content +$lines = [" $value) { + $key = addslashes($key); + $value = addslashes($value); + $lines[] = " '$key' => '$value',"; +} +$lines[] = "];"; +$content = implode("\n", $lines) . "\n"; + +$path = __DIR__ . "/lang/$lang.php"; +if (file_put_contents($path, $content) === false) { + http_response_code(500); + echo json_encode(['error' => 'Could not write file — check permissions on lang/']); + exit; +} + +echo json_encode(['success' => true, 'lang' => $lang, 'path' => "lang/$lang.php"]); diff --git a/web-app/styles.css b/web-app/styles.css new file mode 100644 index 0000000..96823be --- /dev/null +++ b/web-app/styles.css @@ -0,0 +1,205 @@ +body { + font-family: Arial, sans-serif; + margin: 40px; + background-color: #f8f9fa; + color: #333; +} + +.container { + max-width: 900px; + margin: auto; + background: #fff; + padding: 30px; + border-radius: 12px; + box-shadow: 0 0 10px rgba(0,0,0,0.1); +} + +/* Hero Section Styles */ +.hero-section { + display: flex; + align-items: center; + gap: 40px; + margin-bottom: 30px; + padding: 20px 0; +} + +.profile-container { + flex-shrink: 0; +} + +.profile-img { + width: 200px; + height: 200px; + border-radius: 50%; + object-fit: cover; + border: 5px solid #004085; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} + +.hero-content { + flex: 1; +} + +.hero-content h1 { + font-size: 2.5em; + margin-bottom: 10px; + color: #004085; +} + +.hero-content .title { + font-size: 1.3em; + color: #004085; + font-weight: bold; + margin: 10px 0; +} + +.hero-content .tagline { + font-size: 1.1em; + color: #666; + font-style: italic; + margin: 10px 0 20px 0; +} + +.contact-info { + background: #f8f9fa; + padding: 15px; + border-radius: 8px; + border-left: 4px solid #004085; +} + +.contact-info p { + margin: 5px 0; + color: #333; +} + +/* Welcome Section */ +.welcome { + text-align: center; + margin-bottom: 40px; + padding: 30px 0; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; +} + +.welcome h2 { + color: #004085; + margin-bottom: 20px; +} + +.welcome p { + font-size: 1.1em; + line-height: 1.6; + max-width: 800px; + margin: 0 auto 30px auto; +} + +.navigation { + margin: 30px 0; +} + +.cv-link { + display: inline-block; + background-color: #004085; + color: white; + padding: 12px 24px; + text-decoration: none; + border-radius: 6px; + font-weight: bold; + transition: all 0.3s ease; + font-size: 1.1em; +} + +.cv-link:hover { + background-color: #002752; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); +} + +/* Overview Grid */ +.overview-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-top: 20px; +} + +.overview-item { + background-color: #f8f9fa; + padding: 25px; + border-radius: 8px; + border-left: 4px solid #004085; + text-align: center; +} + +.overview-item h3 { + color: #004085; + margin-top: 0; + margin-bottom: 15px; + font-size: 1.2em; +} + +.overview-item p { + margin: 0; + color: #666; + line-height: 1.5; +} + +/* Responsive Design */ +@media (max-width: 768px) { + body { + margin: 20px; + } + + .hero-section { + flex-direction: column; + text-align: center; + gap: 20px; + } + + .profile-img { + width: 150px; + height: 150px; + } + + .hero-content h1 { + font-size: 2em; + } + + .overview-grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + .container { + padding: 20px; + } + + body { + margin: 10px; + } +} + +.interview-calendar, .wasm-demo { + background: #f8f9fa; + padding: 20px; + margin: 20px 0; + border-radius: 8px; +} + +.slot-item { + background: white; + padding: 15px; + margin: 10px 0; + border-radius: 6px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.hero-image img { + width: 500px; + height: 500px; + object-fit: cover; + border-radius: 50%; +} diff --git a/web-app/translation.js b/web-app/translation.js new file mode 100644 index 0000000..9c41ba9 --- /dev/null +++ b/web-app/translation.js @@ -0,0 +1,198 @@ +// translation.js +// Shared translation logic for all pages. +// Requires these vars injected by partials/translation_ui.php before this file loads: +// OLLAMA_HOST, OLLAMA_MODEL, SAVE_URL, STATIC_LANGS, CURRENT_LANG +// Optional per-page var: +// OTHER_PAGES — array of URLs to also translate in background (e.g. ['/cv.php']) + +const LANG_NAMES = { + en: 'English', es: 'Spanish', hu: 'Hungarian', + ro: 'Romanian', hi: 'Hindi', fr: 'French', + de: 'German', pt: 'Portuguese', it: 'Italian', + zh: 'Chinese', ja: 'Japanese', ko: 'Korean', + ar: 'Arabic', ru: 'Russian', pl: 'Polish', + tr: 'Turkish', sv: 'Swedish', nl: 'Dutch', + fi: 'Finnish', cs: 'Czech', sk: 'Slovak', + nah: 'Nahuatl', +}; + +const urlLang = new URLSearchParams(window.location.search).get('lang'); +const browserLang = (urlLang || navigator.language).slice(0, 2).toLowerCase(); +const langName = LANG_NAMES[browserLang] || browserLang.toUpperCase(); + +const badge = document.getElementById('translation-badge'); +const prompt = document.getElementById('translate-prompt'); +const btn = document.getElementById('translate-btn'); +const actionSpan = document.getElementById('translate-action'); +const detectedSpan = document.getElementById('detected-lang-name'); + +function showBadge(msg) { + if (badge) { + badge.textContent = msg; + badge.style.display = 'block'; + } +} + +function hidePrompt() { + if (prompt) prompt.style.display = 'none'; +} + +// Send all texts in one Ollama request, get back a JSON array +async function translateBatch(texts, targetLang) { + const name = LANG_NAMES[targetLang] || targetLang; + const prompt = `Translate each item to ${name}. +Return ONLY a valid JSON array of translated strings in the same order, no explanations, no markdown. +Example input: ["Hello", "How are you"] +Example output: ["Bonjour", "Comment allez-vous"] + +Input: ${JSON.stringify(texts)}`; + + const response = await fetch(`${OLLAMA_HOST}/api/generate`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + model: OLLAMA_MODEL, + prompt, + stream: false + }), + signal: AbortSignal.timeout(120000) + }); + + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const data = await response.json(); + const raw = data.response.trim().replace(/```json|```/g, '').trim(); + const result = JSON.parse(raw); + + if (!Array.isArray(result) || result.length !== texts.length) { + throw new Error(`Unexpected response: got ${result.length}, expected ${texts.length}`); + } + return result; +} + +// Save translated keys — merges with en.php base on the server +async function saveLang(lang, translations) { + try { + const res = await fetch(SAVE_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ lang, translations }) + }); + const data = await res.json(); + if (data.success) { + console.log(`Saved lang/${lang}.php — static next visit`); + } else { + console.warn('Save failed:', data.error); + } + } catch (e) { + console.warn('Could not save lang file:', e.message); + } +} + +// Collect translations from any document's [data-translate] elements +// Always reads data-en (English source) regardless of displayed language +async function collectPageTranslations(doc, targetLang) { + const elements = [...doc.querySelectorAll('[data-translate]')]; + if (!elements.length) return {}; + + const texts = elements.map(el => el.getAttribute('data-en') || el.textContent.trim()); + const translated = await translateBatch(texts, targetLang); + + const result = {}; + elements.forEach((el, i) => { + const key = el.getAttribute('data-key') || el.getAttribute('data-en'); + result[key] = translated[i]; + }); + return result; +} + +// Main translation flow — triggered by button click +async function doTranslation() { + hidePrompt(); + if (btn) btn.disabled = true; + + const elements = [...document.querySelectorAll('[data-translate]')]; + if (!elements.length) return; + + showBadge('Translating page...'); + elements.forEach(el => el.style.opacity = '0.4'); + + const allTranslations = {}; + + // Step 1 — batch translate current page elements live on screen + // Always uses data-en (English) as source, not whatever is displayed + try { + const texts = elements.map(el => el.getAttribute('data-en') || el.textContent.trim()); + const translated = await translateBatch(texts, browserLang); + + elements.forEach((el, i) => { + el.textContent = translated[i]; + const key = el.getAttribute('data-key') || el.getAttribute('data-en'); + allTranslations[key] = translated[i]; + }); + } catch (e) { + console.warn('Page translation failed:', e.message); + elements.forEach(el => el.style.opacity = '1'); + showBadge('Translation failed — showing original'); + return; + } + + elements.forEach(el => el.style.opacity = '1'); + + // Step 2 — fetch and batch translate OTHER_PAGES in virtual DOM + if (typeof OTHER_PAGES !== 'undefined' && OTHER_PAGES.length > 0) { + for (const url of OTHER_PAGES) { + showBadge(`Translating ${url}...`); + try { + const res = await fetch(url); + const html = await res.text(); + const parser = new DOMParser(); + const doc = parser.parseFromString(html, 'text/html'); + const pageTranslations = await collectPageTranslations(doc, browserLang); + Object.assign(allTranslations, pageTranslations); + } catch (e) { + console.warn(`Could not translate ${url}:`, e.message); + } + } + } + + // Step 3 — save everything in one call + await saveLang(browserLang, allTranslations); + showBadge(`Translated by Ollama / ${OLLAMA_MODEL}`); +} + +// Decide what to show based on three cases: +// +// Case 1 — Page is Nahuatl AND browser is not Nahuatl +// → "Switch to English" button (redirect, no Ollama) +// +// Case 2 — Browser lang already has a static file +// → nothing shown (PHP already served it) +// +// Case 3 — Browser lang is unsupported +// → "Translate to " button (calls Ollama, saves file) + +function initTranslation() { + + // Case 1 — Nahuatl default page, non-Nahuatl visitor + if (CURRENT_LANG === 'nah' && browserLang !== 'nah') { + if (actionSpan) actionSpan.textContent = 'Switch to'; + if (detectedSpan) detectedSpan.textContent = 'English'; + if (prompt) prompt.style.display = 'block'; + if (btn) btn.addEventListener('click', () => { + window.location.href = window.location.pathname + '?lang=en'; + }); + return; + } + + // Case 2 — already supported, PHP served it + if (STATIC_LANGS.includes(browserLang)) return; + + // Case 3 — unsupported lang, offer Ollama translation + if (browserLang === 'nah') return; // actual Nahuatl browser, nothing to do + if (actionSpan) actionSpan.textContent = 'Translate to'; + if (detectedSpan) detectedSpan.textContent = langName; + if (prompt) prompt.style.display = 'block'; + if (btn) btn.addEventListener('click', doTranslation); +} + +initTranslation(); diff --git a/web-app/web-app.yaml b/web-app/web-app.yaml new file mode 100644 index 0000000..20fb5bc --- /dev/null +++ b/web-app/web-app.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: php-website-deployment + namespace: website-production + labels: + app: php-website +spec: + replicas: 2 + selector: + matchLabels: + app: php-website + template: + metadata: + labels: + app: php-website + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app + operator: In + values: + - php-website + topologyKey: "kubernetes.io/hostname" + containers: + - name: php-app + image: 192.168.100.68:30500/my-php-app:v1 + imagePullPolicy: Always + ports: + - containerPort: 80 +--- +apiVersion: v1 +kind: Service +metadata: + name: php-website-service + namespace: website-production +spec: + type: NodePort + ports: + - port: 80 + targetPort: 80 + nodePort: 30080 + selector: + app: php-website