Skip to content

External Infrastructure Roadmap

This page documents all features currently marked as Aplazado (deferred) across the platform. Each requires external infrastructure, third-party APIs, or significant architectural changes that go beyond the current stack.


Avatar Storage Migration (S3 / Cloudflare R2)

Section titled “Avatar Storage Migration (S3 / Cloudflare R2)”
Page Profile
Current state Teacher avatar stored as data URI in teachers.avatarUrl. Works but inflates the teachers table row size and slows queries at scale.
What’s needed Object storage service (Cloudflare R2, AWS S3, or similar). Upload endpoint that stores the file, returns a URL, and saves only the URL in the DB.
Infrastructure Cloudflare R2 (recommended — no egress fees) or AWS S3
Effort Medium — new upload route, storage client, migration to rewrite existing data URIs
Priority Medium — becomes important with 500+ teachers
Page Public Profile
Current state Reviews are text-only (title + body + rating + quickTags). No video upload support.
What’s needed Video hosting/transcoding service. Upload flow for students, player component, moderation queue.
Infrastructure Cloudflare Stream, Mux, or AWS MediaConvert + S3
Effort High — video upload, transcoding pipeline, player component, storage costs, moderation
Priority Low — nice-to-have, not blocking any core flow

Page Messages
Current state Contact channels: WhatsApp (link), Email (mailto), Phone (tel). No SMS.
What’s needed Twilio account, SMS sending service, phone number validation, opt-in/opt-out tracking, per-message costs.
Infrastructure Twilio Programmable SMS (or alternatives: Vonage, MessageBird)
Effort Medium — Twilio SDK integration, phone validation, delivery tracking, cost management
Priority Low — WhatsApp covers most use cases in the target market (LATAM + Spain)
Page Messages
Current state Contact log records are created immediately. No scheduling for future sends.
What’s needed Job scheduling system for delayed message delivery. Requires either a dedicated queue or extending BullMQ with delayed jobs for WhatsApp/Email/SMS sends.
Infrastructure BullMQ delayed jobs (already available) + actual send integration (depends on SMS/WhatsApp Business API)
Effort Medium — delayed job scheduling is easy, but actual automated sending requires WhatsApp Business API or email automation beyond mailto links
Priority Low — teachers currently send manually via WhatsApp/Email links

Page Student Packages
Current state No coupon or promotional code field in the checkout flow. Discounts are managed directly in Stripe Dashboard.
What’s needed Stripe Coupons API integration. UI for teachers to create/manage coupons. Student-facing input field during checkout. Validation endpoint.
Infrastructure Stripe Coupons + Promotion Codes API (already part of Stripe, no new service)
Effort Medium — Stripe API already supports it, need teacher management UI + student checkout integration
Priority Medium — common feature request from teachers
Page Settings
Current state Default currency configurable. Stripe Connect handles payments. Invoice/receipt management done via Stripe Dashboard.
What’s needed In-app invoice management, multiple payment methods, tax configuration. Most of this already exists in Stripe Dashboard.
Infrastructure Stripe Invoicing API, Stripe Tax (optional)
Effort High — duplicating Stripe Dashboard features in-app has questionable ROI
Priority Low — Stripe Dashboard already provides this. Link to Stripe Dashboard already added.

Page Settings
Current state Google Meet is the only video conferencing integration (via Google Calendar). Meet links are auto-generated when creating calendar events.
What’s needed Zoom OAuth app, meeting creation API, webhook handling for meeting events. The oauth_connections table already supports multiple providers.
Infrastructure Zoom Marketplace App (OAuth 2.0), Zoom Meeting API v2
Effort Medium — OAuth flow reusable from Google pattern, but Zoom has different webhook/event model
Priority Medium — many teachers use Zoom instead of Google Meet
Page Settings
Current state WhatsApp contact uses wa.me links (opens WhatsApp app). No programmatic sending.
What’s needed WhatsApp Business API (via Meta Cloud API or BSP like Twilio/360dialog). Template messages, session messages, delivery receipts.
Infrastructure Meta Cloud API or BSP (Twilio WhatsApp, 360dialog)
Effort High — Meta approval process, template review, message window rules, per-conversation costs
Priority Medium — would enable automated reminders and scheduled messages
Page Reviews
Current state Reviews display in the language they were written in. International students may write in their native language.
What’s needed Google Cloud Translation API or DeepL API. Auto-detect language, translate on demand or at write time, store translations.
Infrastructure Google Cloud Translation API v3 or DeepL API
Effort Low-Medium — API call per review, cache translations, show toggle
Priority Low — only relevant for teachers with international student base

Page Profile
Current state Profile layout editor configures column count globally. Responsive behavior is automatic (CSS grid). Teachers cannot set different column orders for mobile vs desktop.
What’s needed Per-breakpoint layout configuration in profileLayout JSONB. Preview component showing mobile/tablet/desktop layouts side by side.
Infrastructure None (frontend-only) — but requires significant UI/UX rework of the layout editor
Effort High — complex drag-and-drop editor for multiple breakpoints, increased JSONB schema complexity
Priority Low — current auto-responsive layout works well for most profiles

Feature External Service Effort Priority Blocking?
Avatar storage (S3/R2) Cloudflare R2 / AWS S3 Medium Medium No
Video testimonials Cloudflare Stream / Mux High Low No
SMS via Twilio Twilio SMS Medium Low No
Scheduled messages WhatsApp Business API Medium Low No
Discount codes Stripe Coupons API Medium Medium No
Advanced payments Stripe Invoicing API High Low No
Zoom integration Zoom API Medium Medium No
WhatsApp Business API Meta Cloud API / BSP High Medium No
Auto-translation Google Translate / DeepL Low Low No
Responsive breakpoints None (frontend rework) High Low No
  1. Stripe Coupons — lowest effort, high teacher demand, no new service
  2. Zoom integration — reuses existing OAuth pattern, unlocks non-Google teachers
  3. Avatar storage migration — prevents DB bloat, straightforward S3/R2 integration
  4. WhatsApp Business API — enables automated messaging, unlocks scheduled messages + SMS
  5. Auto-translation — simple API integration, low effort
  6. Video testimonials — nice-to-have, high effort
  7. Responsive breakpoints — frontend-only but complex UX challenge
  8. Advanced payments — low ROI vs Stripe Dashboard