Ajou Course Manager
Medical school course administration
Issue / Solution
The Issue: Medical school course administration at Ajou University was heavily bogged down by thousands of rows of scattered spreadsheets, duplicate entry efforts, and syllabus formats that were hard to audit or keep consistent. Staff members had to spend weeks manually transcribing course schedules and lecture rosters, which frequently led to scheduling overlaps, role permission violations, and fragmented historical records.
The Solution: I built Ajou Course Manager, a production-grade course administration web platform. It unifies course tracking, course plans, lectures, user permissions, audit trails, and automated spreadsheet import/export paths in one secure workflow. By utilizing a highly structured relational database and an AI-driven syllabus ingestion module, the system converts hundreds of hours of manual work into a clean, drag-and-drop, and reviewable process.
Overview
Ajou Course Manager is a full-stack administration platform for Ajou University School of Medicine. The app supports the daily work of education administrators, academic-year administrators, course directors, and lecturers: course registration, course-plan editing, lecture scheduling, reports, analytics, account management, and role-scoped audit logs.
Requested by MD faculty, the platform is in active use at the School of Medicine, managing 40+ professors, 200+ medical students, and 100+ courses through automated CRUD workflows and analytics.
System Architecture
To support high reliability, role-scoped access control, and seamless AI document ingestion, the system is designed around a decoupled client-server architecture with an isolated relational data layer.
System Architecture
What I Built
- JWT-authenticated Django REST APIs for users, courses, course plans, lectures, analytics, and audit logs.
- React/Vite dashboard screens for course list views, calendar views, plan editing, lecture workflows, analytics, logs, and admin account tools.
- Role-aware access for EDU_ADMIN, ACADEMIC_ADMIN_N, COURSE_DIRECTOR, and LECTURER users.
- XLSX import/export paths for professor accounts, course master data, course plans, and lecture schedules.
- AI-assisted PDF/HWP/HWPX course-plan ingestion that extracts structured course and lecture data before applying it to the database.
- Audit logs that preserve who created or edited course, course-plan, and lecture records, with queryset scopes by role.
Workflow Details
The course-management screen supports multiple ways to inspect the same academic data: table view for bulk administration, calendar view for schedule reasoning, and grade/year filters for academic-year administrators. Course directors can be searched and matched by name, professor ID, affiliation, email, and phone metadata. The system also supports merging duplicate course records when a course plan and lecture schedule arrive as separate source files.
The course-plan workflow is built around the institution's existing plan structure. It includes nine plan sections, controlled input rules, read-only lecturer access where appropriate, and XLSX export so administrators can still produce familiar documents. For lecture schedules, the app handles period ranges, start/end times, recurring dates, previous-year import, and manual calendar adjustment before saving.
Implementation
The backend uses Django, Django REST Framework, PostgreSQL, and Docker Compose. Object-level permission classes keep lecturer edits scoped to lectures they are assigned to, while admin and course-director roles can access broader workflows. The spreadsheet paths use structured parsing rather than fragile column assumptions: course import uses header-based lookup and alias normalization, while course-plan export maps fields into the institution's template.
The AI document path extracts text from PDF, HWP, and HWPX files, asks the model for structured course and lecture data, matches existing courses by course name and director metadata, then applies the result to course plans and lecture rows. The goal was not to replace review, but to turn repetitive document transcription into a reviewable workflow.
Stack
React, Vite, Django, Django REST Framework, PostgreSQL, Docker Compose, OpenAI API, openpyxl, pdfminer.six, olefile, uv, npm.