Inforario can export your parsed UTM schedule as a standards-compliantDocumentation 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.
.ics file (iCalendar format), letting you import your timetable into any calendar application that supports the RFC 5545 standard — including Apple Calendar, Google Calendar, Microsoft Outlook, Thunderbird, and others. The file encodes every class session as a VEVENT with a weekly recurrence rule, so each subject appears automatically on the correct weekday for the entire academic semester without any manual entry.
The ICS file uses floating local time — date-time values are written without a UTC offset (e.g.
20240311T080000 rather than 20240311T110000Z). Import the file on a device already set to your local timezone to ensure classes appear at the correct time. If you import across timezones, adjust your calendar application’s import settings accordingly.How to Export
Open the Calendar Export Modal
From the schedule dashboard, click the Export Calendar button. The
CalendarModal opens and presents two export options.Click Generate and Download (.ics)
Click the Generar y Descargar (.ics) button. Inforario internally computes the semester window (next Monday as start, approximately 4.5 months ahead as end) and calls
generateICS(schedule, semesterStart, semesterEnd).generateICS
The single exported function from icsGenerator.ts. It builds the full VCALENDAR text, creates a Blob, and triggers a browser file download — all without a server round-trip.
Parameters
Parameters
The full parsed schedule object. Its
sessions array is iterated to produce VEVENT entries. The academic_period field is used to name the downloaded file.The first day of the academic semester. Used by
getFirstOccurrence to compute the exact DTSTART of each class.The last day of the academic semester. Serialized to
YYYYMMDDTHHMMSSZ (UTC midnight + T235959Z) and used as the UNTIL value in each RRULE.Sessions that are excluded
Sessions that are excluded
A session is skipped and will not appear as a
VEVENT if any of the following are true:session.isVirtual === true— the session has no physical time slotsession.dayisundefinedor emptysession.startTimeisundefinedor emptysession.endTimeisundefinedor empty
conflict: true sessions — conflicting classes are exported as-is and the user’s calendar application will display the overlap.File naming
File naming
The downloaded file is named using the schedule’s
academic_period field, with spaces replaced by underscores:getFirstOccurrence
An internal helper that calculates the exact Date of the first class occurrence on or after the semester start date, for a given weekday and start time.
The semester start date. The function walks forward from this date to find the first matching weekday.
A Spanish day name:
'Lunes', 'Martes', 'Miércoles', 'Jueves', or 'Viernes'.The class start time in
"HH:mm" format (e.g. "08:00"). Applied directly to the resulting Date object.Date.getDay() indices via the DAY_TO_NUM lookup table, computes the forward distance to the target weekday, and applies the time components using setHours.
formatICSDate
An internal helper that formats a JavaScript Date object into the floating local time string required by RFC 5545 for DTSTART and DTEND fields.
YYYYMMDDTHHMMSS — no trailing Z and no timezone offset. This is floating local time: the event is interpreted in whichever timezone the user’s calendar application is set to at import time. See the DTSTART row in the VEVENT table below for context.
ICS File Structure
VCALENDAR Header
Every generated file opens with a standard header block:DAY_TO_ICS_DAY Map
The module-level DAY_TO_ICS_DAY constant maps Spanish weekday names to RFC 5545 BYDAY tokens used in the RRULE and the BYDAY field of each VEVENT:
| Spanish | ICS Token |
|---|---|
| Lunes | MO |
| Martes | TU |
| Miércoles | WE |
| Jueves | TH |
| Viernes | FR |
| Sábado | SA |
| Domingo | SU |
DAY_TO_NUM Map
The DAY_TO_NUM constant maps Spanish day names to JavaScript Date.getDay() index values (0 = Sunday). It is used by getFirstOccurrence to compute the forward distance from the semester start date to the first matching weekday:
VEVENT Fields
Each class session produces oneVEVENT block:
| Field | Value |
|---|---|
UID | {crypto.randomUUID()}@inforario.utm — unique per event per export |
DTSTAMP | UTC timestamp of export generation (YYYYMMDDTHHMMSSZ) |
DTSTART | Floating local datetime of the first occurrence (YYYYMMDDTHHMMSS) |
DTEND | Floating local datetime of the first occurrence end |
RRULE | FREQ=WEEKLY;UNTIL={semesterEnd}T235959Z;BYDAY={MO/TU/WE/TH/FR} |
SUMMARY | Subject name (session.subject) |
LOCATION | Classroom / building (session.location) |
DESCRIPTION | Docente: {teacher}\nSGU Inforario UTM |
Example VEVENT
Full File Example
Compatibility
Apple Calendar
Double-click the
.ics file on macOS or iOS. All events import immediately into the default calendar. The recurrence rule is fully supported.Google Calendar
Use Settings → Import and select the
.ics file. Alternatively, drag and drop the file onto the Google Calendar web interface.Microsoft Outlook
Double-click the
.ics file or use File → Open & Export → Import/Export → Import an iCalendar (.ics) file.Thunderbird / Other
Any RFC 5545-compliant calendar application can import the file. The
METHOD:PUBLISH header signals a static schedule (not an invitation).ICS vs Google Calendar Sync
| Feature | ICS Export | Google Calendar Sync |
|---|---|---|
| Requires Supabase account | ❌ No | ✅ Yes |
| Works offline | ✅ Yes | ❌ No |
| Skips conflicted sessions | ❌ No (exported as-is) | ✅ Yes |
| Skips virtual sessions | ✅ Yes | ✅ Yes |
| Updates automatically | ❌ Re-export needed | ❌ Re-sync needed |
| Calendar app support | Any RFC 5545 app | Google Calendar only |