Skip to content

Pro Sejongpeia · A little utopia for Sejong developers

Everything you need
to build on Sejong University

From student login to departments, lectures, the academic calendar and cafeterias. The public school data you get without logging in comes with the same methods and results in Java · Python · Node.js.

Fast and light · gentle on requests · never stores a password · checked against the real portal daily

  • Maven Central
  • PyPI
  • npm
  • License: MIT
  • Live portal check

What you get

One student verification and the school data you get without logging in. Open a card for the methods and result fields.

Why this library

Four promises, each with proof you can check in the code or the tests.

  • Fast and light

    • Zero runtime dependencies in Python and Node (standard library only)
    • Repeated requests are answered from the cache without calling the school server again
    • Integrated verification is one portal login that serves both DHC and SIS
    See the rules
  • Gentle on requests

    • Results cached in memory for 24 hours; simultaneous calls with the same arguments share one request
    • One request per call (only the cafeteria list sends one per number in a range, one after the other)
    • Failures remembered for 60 seconds, at most 500 cache entries (defaults)
    Cache and failure isolation
  • Safe

    • The password is never stored and never put into error messages
    • Stops at the first failure so the account is not locked, and reports a locked account as ACCOUNT_LOCKED
    • SIS extra fields always exclude session values, client IP, resident number, bank account, address and similar keys
    Login verdict and account safety
  • Trustworthy

    • At 09:00 KST every day all three languages sign in to the live portal, and a failure opens an issue automatically
    • Shared values live in spec/contract.json and the tests fail when the languages drift
    • CI checks that the public method list matches the sources and the docs
    The daily live check

Your first call in 30 seconds

Install it and write two lines. Paste the code below as it is.

Department codes without login

SejongPublicData publicData = new SejongPublicData(); // inject it as a bean in Spring
List<Department> departments = publicData.departments("20", "2026", "20"); // undergraduate, term values are the school's

Student verification

// build.gradle: implementation "kr.suhsaechan:sejongpeia:<version>" (latest: central.sonatype.com/artifact/kr.suhsaechan/sejongpeia)
SejongAuthResult result = sejongAuthEngine.authenticate("21011234", "password");
result.getName(); // "홍길동"
result.getMajor(); // "컴퓨터공학과"

Call it from your server only. Sending a student ID and password straight from a browser or an app exposes them to third-party code.

Try it live

Sign in with your own Sejong portal account and see exactly what the library returns.

Lookup

Nothing you type is stored. The demo server (lab.suhsaechan.kr) uses this library to sign in to the Sejong portal once and returns the result.

Result

Enter your student ID and password, then press Authenticate.

All three languages support everything

Features, result fields, error codes and value rules are the same. A shared contract test fails if they drift apart.

FeatureJavaPythonNode.js
Integrated verificationStudent info + classic reading + contact, one loginJava: SupportedPython: SupportedNode.js: Supported
DHC and SIS verificationLook up only the side you needJava: SupportedPython: SupportedNode.js: Supported
Academic business periodsCourse registration, grade lookup and more (login required)Java: SupportedPython: SupportedNode.js: Supported
Raw and extra optionsThe school's raw response and the remaining fieldsJava: SupportedPython: SupportedNode.js: Supported
Department and term codesCategories, terms, departments, course types, selective domainsJava: SupportedPython: SupportedNode.js: Supported
Course searchBy department, course name, instructorJava: SupportedPython: SupportedNode.js: Supported
CurriculumYear, semester, credits, course overviewJava: SupportedPython: SupportedNode.js: Supported
Academic calendarUndergraduate and graduateJava: SupportedPython: SupportedNode.js: Supported
Dormitory menu and notices7-day menu, notice searchJava: SupportedPython: SupportedNode.js: Supported
Cafeterias and menusCafeteria list, menus, pricesJava: SupportedPython: SupportedNode.js: Supported
Campus placesBuildings, facilities, coordinatesJava: SupportedPython: SupportedNode.js: Supported
Extracurricular programsSchedule by periodJava: SupportedPython: SupportedNode.js: Supported
10 error codesSame codes, same meaningJava: SupportedPython: SupportedNode.js: Supported
In-memory cache and failure isolationPublic data, 24 hours by defaultJava: SupportedPython: SupportedNode.js: Supported

Runtimes differ. Java 17+ (Spring Boot 3.x auto-configuration), Python 3.9+, Node.js 18+; Python and Node.js have no external dependencies. Only naming differs: Python snake_case, Node.js and Java camelCase.

What you would otherwise build

Portal login is trickier than it looks. The library handles all of this for you. Open a card for the details.

Read on

This is a personal open-source project by a Sejong student. It does not guarantee backward compatibility, so pin the version.

This project is not an official product of Sejong University and is not affiliated with it. The Sejong University seal belongs to Sejong University.