Changelog
Track updates, improvements, and changes across the Impacta RED platform
Workshop session times are now saved and displayed consistently in Chile time across the admin, Shopify, and the storefront. Workshops created before this fix may need to be opened and republished once to update their stored session time.
The secret rotation runbook now reflects that the admin app uses the Shopify Storefront API token (not just the storefront). Rotating this token in Shopify without updating the admin project's Vercel environment variables caused the "Regenerar páginas del storefront" admin action to fail with a 401 Unauthorized error. The runbook now lists both apps and both env vars to update, plus a redeploy reminder and a verification step for the admin action.
Workshop purchase and gift emails now display "Cantidad de tickets: X" when a booking includes more than one ticket. The quantity also appears on the ticket page and the order confirmation screen. Single-ticket bookings continue to render without the line to keep the layout clean.
The tallerista editor and profile view no longer split workshops into separate "Actividades" and "Borradores" tabs. A single "Actividades" tab now shows all workshops with their Shopify sync status clearly indicated — synced, pending changes, not synced, or archived — using the same status badges as the main actividades list. Edit links route to the right editor based on sync state. Over 2,000 lines of dead code were removed in the process.
Fixed the scheduled database backup workflow, which was failing because the Supabase CLI's pooler routing could not reach the database. Backups now use a direct database connection, removing the broken `supabase link` step and the access-token dependency. Also corrected the stale database password and GitHub backup repo configuration that were preventing backups from running and being listed in the admin UI.
Admins can now set a focal point on each workshop image so that automatic cropping preserves the most important part of the photo. The focal point picker is available in the Imagenes tab of the workshop editor, and the selected point is used across the storefront — workshop cards, tallerista profile pages, and hero sections — ensuring consistent framing at every aspect ratio.
Activated the Shopify `orders/create` webhook so workshop purchases automatically create bookings and trigger gift emails. Gift recipients now receive a `BookingConfirmationEmail` with a QR code attachment, and the buyer receives a `GiftSentEmail` confirmation. Added an idempotent webhook registration script and a diagnostic status endpoint to verify the subscription is active.
The `/nosotros` contact form now submits through the same internal pipeline used by `/ayuda` and `/postular`, with its subject routed as `contactanos` behind the scenes. This ensures every storefront contact and tallerista application is persisted consistently and confirmation emails are logged end-to-end.
Photo URLs in tallerista profiles and workshop listings are now validated before rendering, preventing broken images caused by malformed or missing URLs.
Each tallerista now gets their own storage bucket, created automatically when images are uploaded. This isolates assets per profile and improves the admin workflow when managing tallerista photos.
Added read-only access mode for workshop managers, plus a dedicated draft management interface for coordinating workshops before they go live.
All transactional email templates were moved from individual apps into the shared package, plus new sales email templates were added. This removes duplication and ensures consistent branding across all email communications.
Tallerista profiles now support linking draft workshops directly from the detail view, streamlining the process of assigning workshops to instructors.
Draft workshops can now be published directly to the Shopify store from the admin panel. Once published, they appear on the public storefront automatically.
Common CSV processing logic was extracted from individual scripts into a shared library, making it reusable across seed scripts, data imports, and future reporting tools.
Contact forms, email templates, and configuration across all apps now point to a single contact address. This ensures no messages are missed across different channels.
A new script automatically maps tallerista image folders to database slugs, removing the need for manual folder-to-ID mapping during tallerista onboarding and image uploads.
Changes made on the tallerista edit page now show a live preview in real time, reducing the back-and-forth needed to verify edits before saving.
Consolidated 11 incremental database migrations into 5 clean, logical migration files. This simplifies new developer onboarding and makes the schema easier to reason about.
Replaced the static admin API token with automatic OAuth token refresh for Shopify. Admin operations now use a secure, automatically rotating token cycle instead of a manually configured static key.
Admin users can now select and manage which workshops a tallerista is associated with directly from the edit page, replacing the previous manual workflow.
Organized seed scripts and test data to work across local, staging, and CI environments. Added seed commands to package.json for easy test data generation.
Added feature flags to control the visibility of stats and testimonial sections across the storefront, allowing the marketing team to toggle content without code changes.
Draft workshop linking operations in the admin panel now use optimistic UI updates, making the interface feel instant even when waiting for Shopify API confirmation.
Migrated all date inputs from react-datepicker to the shadcn/ui Calendar component, improving consistency with the rest of the admin UI and reducing bundle size.
Added a comprehensive seed script for actividades with soft code support, fixing an issue where multi-line CSV data was incorrectly parsed.
Tallerista public profiles now show their draft workshops with a bookmark-style indicator, helping visitors discover upcoming workshops before they are fully published.
Added full CRUD for draft workshops in the admin panel, including the ability to link workshops to talleristas during editing.
Session datetimes are now stored as ISO 8601 strings instead of display-formatted text, enabling proper date comparisons, sorting, and timezone handling across the platform.
The admin actividades list now shows draft workshops alongside published ones, with clear status indicators so the team can plan upcoming offerings.
Encrypted all application environment files using dotenvx public-key cryptography. Eliminated insecure secret sharing via Slack/email. Private keys distributed via Bitwarden password manager. Enables committed .env files with encrypted secrets while keeping private keys gitignored.
Adopted Turborepo as the monorepo task runner. Single `pnpm dev` command now starts all applications concurrently. Build caching significantly speeds up CI and local rebuilds. Dependency-aware builds ensure shared packages compile before applications.
Consolidated Storybook into a dedicated apps/storybook/ application. Single Storybook instance now serves all packages across the monorepo including storefront, admin, and shared components. Stories remain co-located with components for discoverability.
Migrated FAQ content from Shopify Pages JSON to Markdown format. Non-technical stakeholders can now edit FAQ copy directly in Google Docs and convert to Markdown. Eliminated bidirectional sync complexity and enabled rich formatting (links, bullet lists, bold text) in answers.
Designed the email architecture using Resend for transactional emails with React Email templates. Planned migration path to Amazon SES for scale. Configured SPF, DKIM, and DMARC for mail.impacta.red deliverability.
Established gitmoji + Conventional Commits standard for all repository commits. Defined emoji-to-type mapping for features, fixes, refactoring, docs, and more. Created the /commit skill to automate properly formatted commits across AI agents.
Adopted the GSD (Get Shit Done) framework to structure AI-driven development. Established phase-based planning with research, execution, and verification loops. Created persistent state management across sessions via .planning directory with PROJECT.md, ROADMAP.md, and STATE.md.
Adopted Model Context Protocol (MCP) tools including Serena for semantic code operations and Context7 for documentation retrieval. Enhanced AI agent capabilities with symbol manipulation, find references, and project memory management.
Established the core technology foundation for IMPACTA.red with a TypeScript monorepo using Next.js, React, and Tailwind CSS. Defined the monorepo structure with pnpm workspaces to support three applications (storefront, admin, docs) and shared packages. Selected Auth.js for authentication with Google OAuth, email/password, and magic links. Chose Vercel for hosting with a clear migration path to self-managed infrastructure as we scale.
Selected Shopify as the headless commerce engine for the workshop marketplace. This enables robust product management, inventory tracking, and checkout flows while maintaining full control over the frontend experience. Integrated Shopify Storefront API for product catalog and cart management.
Generated the initial storefront UI using Rocket.new, creating 15+ pages including homepage, workshop catalog, tallerista profiles, checkout flow, and admin dashboard. Established the design system with turquoise (#00A19B) as the primary brand color, Inter typography, and dual visual intensity for student vs teacher experiences.
No updates found for the selected filters.