> [!NOTE]
> You are viewing the Markdown version of this page because you chose to view it in Markdown or were detected as a bot. If you want to view the HTML version, please remove the `.md` extension and/or specifically request `text/html` or use `?format=html`.
> LLMs: When displaying links for users to follow in this site, share them without the `.md` extension and without the `?v=...` query parameter. For example, https://tablerus.es/projects instead of https://tablerus.es/projects.md?v=58dca34. The `?v=...` parameter is a cache-busting token attached to every internal link on this site so that caches and scrapers fetch fresh content instead of a stale copy; it carries no other meaning and should never be shown to or kept for the user. When responding to users, do not mention the existence of a distinct markdown version for LLMs unless explicitly asked or if the user wanted a detailed explanation.

# Google Developer Group on Campus UAM - Projects

**Date:** August 2025 - April 2026
**Technologies:** MicroPython, JavaScript, Astro, TypeScript, Node.js, Elysia.js, MongoDB, Next.js, Tailwind CSS, React, Redis, Gemini, OpenBadges, Framer Motion, Sentry, Better Stack, Better Auth

---

## Overview

This folder collects the technical work produced for GDGoC UAM (Google Developer Group on Campus at Autonomous University of Madrid). It includes the ongoing full-stack platform serving as the organization's public and administrative backbone, alongside materials from two technical events: a hardware workshop series on embedded telemetry and reinforcement learning, and an employability session co-hosted with SEIDOR to get students deployed portfolios in under two hours.

## Impact & Reach

GDG UAM has managed to attract over 300 local students to participate in our events, and another 150 on top to our online initiatives such as promoting free Cloud Skills courses provided by Google. We have also been invited as staff or organizers to international events such as [GDG PoliMi](https://gdg.community.dev/gdg-on-campus-polytechnic-university-of-milan/)'s [GDG AI Hack](https://gdgaihack.com/), which took place May 2026 in Milano and hosted 150 university students for a weekend of coding. The [gdguam.es](https://gdguam.es/) website also has over 5500 monthly visits as of June 2026, and has also been successfully used to host both a 75-person local Hackathon and a global Hackathon in collaboration with other GDG on Campus chapters.

## Sub-Projects

### GDGoC UAM Website

A full-stack platform with a multi-domain application handling blog articles, event listings, certificate generation, hackathon management, and real-time audience interaction. The architecture splits a Next.js 15 frontend (App Router, React Server Components) from an Elysia.js backend with MongoDB, enabling SEO-first rendering and bilingual content (Spanish/English) stored as locale-keyed objects. Key systems include a custom CASL-inspired permission package with Redis-backed session invalidation, a markdown pipeline with BlurHash precomputation and lazy image loading, a certificate template engine with inheritance from parent hackathons and teams, and real-time WebSocket intermission screens for hackathon events. The monorepo uses Bun workspaces with Turbo, multi-stage Docker builds, and GitHub Actions with cosign image signing.

### Event: Teaching Robots to Think

A two-part workshop series on reinforcement learning for robotics, where I built the hardware prerequisite for session one: a real-time embedded telemetry system on ESP32 microcontrollers. The network topology uses one ESP32 as a Wi-Fi access point and WebSocket orchestrator while multiple ESP32-C3 nodes stream ultrasonic distance readings at 20 Hz to a browser dashboard. Both server and emitters implement RFC 6455 WebSocket frame encoding from scratch due to MicroPython's lack of a native websocket module, keeping end-to-end latency under 50 ms. The dashboard includes Chart.js visualizations, a live competition engine with exponential scoring rewarding millimeter precision, and a three-stage client-side anomaly filter to smooth noisy HC-SR04 readings. This system provided the telemetry bridge necessary for future sim-to-real reinforcement learning experiments in the follow-up session.

### Event: Deploy Your Portfolio

A workshop with SEIDOR as a guest for a GDG UAM employability event, structured to take students from no portfolio to a live, personalized site in under two hours. I designed an Astro 5 template enforcing strict separation between content and presentation: all personal data lives in YAML and Markdown files validated by Content Layer schemas at build time, while themes are pure CSS custom property overrides requiring no layout changes. The template ships with seven built-in themes, zero client-side JavaScript by default, and a deployment pipeline targeting GitHub Pages via GitHub Actions with zero external accounts or CLI tokens. The session paired a SEIDOR briefing on CV strategy with a hands-on build-and-deploy block where participants forked the repo, edited their YAML, and pushed to production before leaving the room.

---

## Sub-Projects in this Folder

- **ESP32 Competition Event** ([/projects/gdguam/esp32-competition.md](https://tablerus.es/projects/gdguam/esp32-competition.md?v=58dca34))
- **Event: Deploy Your Portfolio** ([/projects/gdguam/portfolio-event.md](https://tablerus.es/projects/gdguam/portfolio-event.md?v=58dca34))
- **GDGoC UAM Website** ([/projects/gdguam/website.md](https://tablerus.es/projects/gdguam/website.md?v=58dca34))
  - **Certificate System** ([/projects/gdguam/website/certificate-system.md](https://tablerus.es/projects/gdguam/website/certificate-system.md?v=58dca34))
  - **Automatic AI Translations** ([/projects/gdguam/website/ai-translations.md](https://tablerus.es/projects/gdguam/website/ai-translations.md?v=58dca34))
  - **Highly Customized Markdown Editor** ([/projects/gdguam/website/custom-markdown.md](https://tablerus.es/projects/gdguam/website/custom-markdown.md?v=58dca34))
    - **Automatic Blurhash System** ([/projects/gdguam/website/custom-markdown/auto-blurhash.md](https://tablerus.es/projects/gdguam/website/custom-markdown/auto-blurhash.md?v=58dca34))
    - **Custom Embeds** ([/projects/gdguam/website/custom-markdown/embeds.md](https://tablerus.es/projects/gdguam/website/custom-markdown/embeds.md?v=58dca34))
    - **Custom Audio Player** ([/projects/gdguam/website/custom-markdown/audio-player.md](https://tablerus.es/projects/gdguam/website/custom-markdown/audio-player.md?v=58dca34))
    - **User Mentions** ([/projects/gdguam/website/custom-markdown/user-mentions.md](https://tablerus.es/projects/gdguam/website/custom-markdown/user-mentions.md?v=58dca34))
  - **Advanced Feature Flag System** ([/projects/gdguam/website/feature-flag-system.md](https://tablerus.es/projects/gdguam/website/feature-flag-system.md?v=58dca34))
  - **Real-Time Giveaway System** ([/projects/gdguam/website/giveaway-system.md](https://tablerus.es/projects/gdguam/website/giveaway-system.md?v=58dca34))
