Inforario is a React 19 + TypeScript single-page application built for students at the Universidad Técnica de Manabí (UTM). It eliminates the tedious, error-prone task of manually copying your semester schedule by reading UTM’s Sistema de Gestión Universitaria (SGU) PDF exports directly — extracting every subject, time block, classroom code, and teacher name in seconds and rendering them as an interactive, exportable timetable.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/DavidCevallos15/inforario-IA-null/llms.txt
Use this file to discover all available pages before exploring further.
What Is Inforario?
Inforario is a client-first web application powered by Vite, React 19, and strict TypeScript. It uses pdfjs-dist to extract raw text from SGU-formatted PDFs entirely in the browser, meaning your academic data never leaves your device during the primary parsing step. When the local regex parser encounters an ambiguous or scanned PDF, the app automatically falls back to an AI extraction pipeline — a Supabase Edge Function running on Deno that calls thellama-3.3-70b-versatile model on the Groq API. For fully scanned image-based PDFs, Tesseract.js provides an additional OCR fallback layer, all within the same seamless upload flow.
The frontend persists schedules locally via localStorage for guests and syncs to a Supabase PostgreSQL database for authenticated users. Google Calendar OAuth2 integration and standard .ics file export mean your timetable can live wherever your calendar does.
Who Is It For?
Inforario is designed specifically for UTM students who receive their semester schedule as a PDF from the SGU portal. Instead of screenshot-cropping or re-typing every class block into a planner, students drop their PDF onto the app and get a fully rendered, color-coded timetable in under ten seconds — with automatic conflict warnings if two subjects overlap.Two Parsing Paths
Inforario uses a dual-path strategy to handle the full range of SGU PDF formats:Local Regex Parser
sguRegexParser.ts uses carefully tuned regular expressions to parse the structured text extracted by pdfjs-dist from digital PDFs. It captures subject names (stripping curriculum suffixes like (A19)), day/time combinations, classroom codes (COD. AMB.), and teacher names. This path runs entirely offline with zero latency.AI Edge Function Fallback
When the regex parser cannot confidently extract a complete schedule, the
extract-schedule Supabase Edge Function takes over. It sends the raw PDF text to the Groq API using the llama-3.3-70b-versatile model and returns a structured JSON schedule. Tesseract.js OCR handles scanned image PDFs before this step.Key Features
SGU PDF Parsing
Drag-and-drop your UTM SGU schedule PDF. pdfjs-dist extracts the text client-side; the local regex parser or Groq AI fallback produces a typed
Schedule object in seconds.Conflict Detection
The
useConflictResolver hook and timeSelectors utilities automatically detect overlapping time blocks across subjects and surface them visually so you can resolve scheduling conflicts before your semester begins.Google Calendar Sync
Authenticate with Google OAuth2 and push your entire timetable as recurring weekly events using
buildCalendarEventsFromSchedule and syncCalendarEvents from the googleCalendarEdge service.ICS Export
Generate a standards-compliant
.ics file with generateICS and import it into Apple Calendar, Outlook, or any calendar application that supports the iCalendar format.Cloud Persistence
Authenticated users get full schedule persistence via Supabase PostgreSQL. Schedules sync across devices and can be managed (open, rename, delete, bulk-delete) from the Landing view.
Responsive Views
ScheduleGrid provides a desktop week-view table. ScheduleList delivers a mobile-optimized card list. Both views are driven by the useMediaQuery global hook and animated with Framer Motion shared-layout transitions.Architecture Overview
Inforario follows a Feature-Driven Architecture (FDA): business logic is split into isolated domain modules undersrc/features/, each owning its own components, hooks, and utilities. A thin App.tsx (~100 lines) acts as the sole view router, switching between states defined by the AppView enum. Supabase provides authentication, the PostgreSQL database, and serverless Edge Functions written in Deno as the backend layer.
| Layer | Technology |
|---|---|
| Frontend framework | React 19 + TypeScript (strict) |
| Build tool | Vite 6 |
| Styling | Custom CSS design tokens + tailwind-merge |
| Animations | Framer Motion 11 |
| PDF parsing | pdfjs-dist 4, Tesseract.js 5 |
| Backend / Auth / DB | Supabase (PostgreSQL + Edge Functions) |
| AI extraction | Groq API — llama-3.3-70b-versatile |
| Calendar export | Google Calendar API (OAuth2), ICS |
Application Views
TheAppView enum defines every top-level route the App.tsx router can render:
Feature Access Control
TheFeature enum drives the app’s permission model, separating free functionality from premium capabilities: