Skip to content

Repository files navigation

IA Candente — Astro site

Sitio web del podcast IA Candente, construido con Astro 5 + Tailwind v4 + TypeScript. Diseño retro-terminal definido en DESIGN.md.

Stack

  • Astro 5 (Content Layer con colecciones en Markdown)
  • Tailwind v4 con tokens de diseño en @theme (src/styles/tokens.css)
  • TypeScript estricto
  • oxlint + oxfmt como linter/formateador únicos
  • Worker de newsletter en Cloudflare con Resend (doble opt-in)

Estructura

src/
  content.config.ts          # esquemas zod de podcasts y participants
  content/
    podcasts/*.md            # un markdown por episodio
    participants/*.md        # un markdown por persona
  layouts/BaseLayout.astro   # cabecera, footer, scanlines, fuentes
  components/
    nav/                     # Header + Hamburger
    ui/                      # Button, Chip, Card, FallbackImage, Scanline, MonitorFrame
    podcast/                 # PodcastTeaser, PodcastSmall, PodcastFull (view modes)
    participant/             # ParticipantTeaser, ParticipantSmall, ParticipantFull
    newsletter/              # NewsletterForm (custom element), NewsletterBox
    sections/                # Hero, LastEpisode, Hosts, CliHelp, Newsletter, QuickLinks
  pages/
    index.astro
    podcasts/{index,[slug]}.astro
    participants/{index,[slug]}.astro
    newsletter/success.astro
  styles/
    tokens.css               # tokens DESIGN.md + utilidades CRT
    global.css
  utils/podcasts.ts          # helpers de collections

workers/newsletter-api/      # Cloudflare Worker (Resend + doble opt-in)

public/images/               # covers y avatares placeholder (terminal-themed)

Scripts

Comando Descripción
pnpm dev Servidor de desarrollo
pnpm build Build de producción
pnpm preview Previsualizar el build
pnpm check astro check — verificación de tipos
pnpm lint oxlint
pnpm lint:fix oxlint --fix
pnpm fmt oxfmt --write
pnpm fmt:check oxfmt --check
pnpm worker:dev wrangler dev para la API del newsletter
pnpm worker:deploy Desplegar el Worker a Cloudflare

Variables de entorno

Copia .env.example a .env y rellena los valores:

  • RESEND_API_KEY — API key de Resend
  • RESEND_AUDIENCE_ID — ID de la audiencia donde se guardan los contactos
  • FROM_EMAIL — dirección remitente de los correos
  • WORKER_URL — URL del Worker (en dev: http://localhost:8787)
  • SITE_URL — URL pública del sitio (en dev: http://localhost:4321)
  • ALLOWED_ORIGIN — origen permitido por CORS
  • PUBLIC_NEWSLETTER_API_URL — URL expuesta al cliente, base de la API

Para wrangler dev, copia workers/newsletter-api/.dev.vars.example a workers/newsletter-api/.dev.vars.

Despliegue

  • Web: GitHub Actions → GitHub Pages (workflow .github/workflows/deploy.yml). Requiere el secreto PUBLIC_NEWSLETTER_API_URL en el repo.
  • Worker: GitHub Actions → Cloudflare Workers (workflow .github/workflows/deploy-worker.yml). Requiere CLOUDFLARE_API_TOKEN y CLOUDFLARE_ACCOUNT_ID.
  • CI: fmt:check + lint + check + build en cada PR (.github/workflows/ci.yml).

Colecciones (Drupal-style view modes)

Cada colección expone tres componentes Astro equivalentes a los modos teaser/small/full:

  • Podcast: PodcastTeaser, PodcastSmall, PodcastFull
  • Participant: ParticipantTeaser, ParticipantSmall, ParticipantFull

Licencia

Privado.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages