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

React & Vite SPA Course Filters, Calendar, Admin Controls (Tailwind) Django REST Backend DRF API, JWT Auth, XLSX parsers, Audit Logs PostgreSQL 16 Users, Courses, Plans, Lectures, Audit Logs OpenAI API Syllabus PDF / HWP AI Ingestion Pipeline JWT API Req JSON Data SQL Queries Parsed Text

What I Built

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.

Ajou Course Manager course table interface
Course Management Surface (과정 관리): The primary interface for education administrators. It features rapid filters for academic year (학년별 보기), calendars (캘린더 보기), and a comprehensive master table (모두 보기). Administrative staff can trigger bulk spreadsheet tasks or perform course merges easily in this unified view.

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.

Ajou Course Manager course plan editor interface
Course Plan Workflow (과정계획서 관리): This editor supports the nine required syllabus sections. Responsibility is split dynamically based on roles: lecturers (강의교수) have view-only access to prevent accidental overrides, while course directors (책임교수) can draft fields with AI assistance (AI 작성) and save (저장) or download (다운로드) the finished product.

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.

Frontend

React + Vite

Course, plan, lecture, analytics, logs, and admin screens with role-aware UI states.

Backend

Django REST Framework

JWT auth, object permissions, XLSX services, AI document parsing, and audit history.

Stack

React, Vite, Django, Django REST Framework, PostgreSQL, Docker Compose, OpenAI API, openpyxl, pdfminer.six, olefile, uv, npm.

(go back)