Student Information System

InfoStudia

A requirements-led case study translating academic roles, rules, and states into one shared web application.

At a glance

Role
Systems analysis, UI design, front-end
Team
5 students
Timeline
4 months · Feb to May 2025
Platform
Full-stack web application

Challenge

Connect academic administration and course activity without flattening their different responsibilities.

My contribution

I structured the use-case inventory and modeled registration and assessment states, then contributed UI foundations and selected role workflows.

Evidence boundary

This is a requirements-led systems case study, not a claim of research validation or measured product impact.

01 · Starting point

One academic journey was split across two product contexts.

As an HCMUS student, I moved between the university portal for administrative work and Moodle for course activity. InfoStudia began as an opportunity hypothesis: what if registration, schedules, course delivery, assessment, and records shared one role-aware product model?

Starting observation

One academic journey was split across two interface contexts.

Administration context

Academic portal

  • Course registration
  • Academic records
  • Tuition

Course activity context

Moodle / LMS

  • Learning materials
  • Assignments and quizzes
  • Announcements

InfoStudia concept

A shared course context with role-aware access.

  • Registration connected to schedule
  • Course activity in the same product
  • Views shaped by responsibility
This is an opportunity hypothesis based on the documented division between academic administration and course delivery, not a claim that either existing system lacked functionality.

Fragmented context

A course appeared in more than one system.

Registration and records belonged to an administrative portal, while materials, deadlines, and assessments lived in an LMS. The student had to reconnect that context mentally.

Connected consequence

One action should change what comes next.

A successful course registration should affect the student's schedule, course access, future assessment, and academic history, not end at a confirmation message.

Different responsibility

The same data needed different controls.

A student joins and learns. A lecturer teaches and evaluates. Academic Affairs configures the semester and governs access. One object cannot expose one identical UI.

02 · Requirements

Thirty use cases became five product capabilities.

The specification was comprehensive, but a numbered use-case list was too implementation-oriented to become navigation directly. I regrouped the functions around user goals and the shared academic objects they changed.

3+1
Actors

Student, Lecturer, Academic Affairs, plus Guest

30
Specified use cases

Primary and alternative flows

5
Capability groups

A portfolio-level product model

1
Shared course object

Different actions by role and state

How thirty InfoStudia use cases were regrouped into five product capabilities
CapabilityRepresentative use casesProduct meaning
Identity & accessLogin, logout, profile, role controlEstablish who can see and change each academic object.
Academic planningSemester publication, registration, schedulesConnect institutional setup to the student's plan.
Course deliveryMaterials, deadlines, course notificationsKeep teaching activity attached to the right course context.
Assessment & participationExams, grading, attendance, evaluationRepresent timed, review-dependent, and recoverable states.
Records & administrationResults, tuition, discipline, usersPreserve institutional records and governance over time.

Evidence

The source documents defined actors, permissions, main flows, alternatives, data relationships, and system states.

Insight

These artifacts were strong evidence of what the software had to support, but weak evidence of how people would understand it.

Design response

Use requirements as systems evidence, then label behavioral assumptions and retrospective interface recommendations explicitly.

03 · Dependencies

The product was one semester lifecycle viewed through different responsibilities.

Mapping the semester as a sequence exposed dependencies that a page inventory could not: an offering must exist before registration, registration changes schedule and access, assessment can wait for review, and closing the term must preserve the record.

Cross-role sequence

One semester, several responsibilities.

Scroll horizontally to follow the lifecycle on a smaller screen.

Semester lifecycle showing documented responsibilities for Academic Affairs, the system, lecturers, and students.
Role01Plan02Register03Study04Assess05Result
Academic AffairsConfigure semesters and course offeringsGovern the published offeringMaintain semester and course contextControl assessment contextControl result visibility
SystemRepresent roles and offeringsCheck capacity and credit limitUpdate the student scheduleAutosave and auto-submit at expiryExpose pending, hidden, or available state
LecturerWork from an assigned course contextNo registration actionManage course materialsCreate and grade assessmentsPublish or keep results hidden
StudentSee published academic contextSelect an open courseUse the updated schedule and materialsComplete the assessmentSee an explicit availability state
Guest access remains outside this operational lifecycle: its documented scope is public information and authentication.

The navigation could group features. The lifecycle had to explain their consequences.

04 · Critical workflow

A single Enroll action concealed several business rules.

The documented flow required the system to show open offerings, validate the selection, handle full classes and credit-limit failures, support cancellation during the allowed period, and update the student's schedule after success.

Evidence

The use case defined two explicit failure branches: the class is full, or the student exceeds the credit limit. A successful registration updates the timetable.

Insight

If rules appear only after submission, the interface makes the student discover eligibility through failure.

Design response

Expose capacity, credits, registration status, and the resulting schedule before confirmation; then return specific recovery guidance.

Interactive requirement trace

One enrollment action, five rule-driven outcomes.

The sample values are illustrative. The interaction is limited to the documented rules: registration availability, course capacity, credit limit, schedule update after success, and the cancellation window.

Alternative scenarios

Course offering

Software Architecture

4 credits

Registration
Active
Capacity
21 / 32 enrolled
Credit load
12 / 20 credits
Cancellation
Within permitted window

Ready to enroll. The registration period is active, capacity is available, and the resulting credit load stays within the limit.

Image placeholder · Registration

Image placeholder
Add the opened-courses screen here. Annotate where capacity, credits, eligibility, and the enrollment action become visible.

Image placeholder · Updated schedule

Image placeholder
Add the updated schedule screen here. Show the registered course as the visible consequence of a successful action.

Documented rule

01

Capacity

Registration must handle a course offering that is already full.

Interface implication: A full-capacity state needs a specific, visible reason.

Documented rule

02

Credit limit

The system checks whether the selected load exceeds the allowed limit.

Interface implication: Credit totals and a blocking explanation need to accompany the action.

Documented rule

03

Schedule update

A successful registration changes the student schedule.

Interface implication: Confirmation should make the resulting schedule change explicit.

05 · Permissions

One course stayed recognizable while responsibility changed.

Consistency did not mean giving every role the same course page. It meant preserving the course identity and system status while adapting metadata, navigation, actions, and table columns to each person's responsibility.

One course · Three responsibility views

The course identity stays fixed. Permissions change around it.

Switch roles to see how the same course object exposes the metadata and actions each responsibility requires.

Student view

Follow the assigned course, access learning activity, and review personal academic progress.

Schedule
Published class time
Lecturer
Assigned lecturer
Learning
Materials and assessments
Records
Attendance and grades

Permitted actions

Student responsibility view selected.

Guest
01
Public information and authentication
Student
02
Registration, schedule, courses, assessments, and records
Lecturer
03
Assigned courses, materials, assessments, attendance, and grading
Academic Affairs
04
Semesters, offerings, people, schedules, access, and notifications

Image placeholder · Student

Image placeholder
Add the student course workspace here, prioritizing materials, assessments, attendance, and results.

Image placeholder · Lecturer

Image placeholder
Add the lecturer course workspace here, showing roster, content, assessment, attendance, and grading controls.

Image placeholder · Academic Affairs

Image placeholder
Add the Academic Affairs course view here, showing semester, capacity, lecturer assignment, status, and governance.

These reserved frames keep the role comparison in place without publishing source screens. Guest remains in the role model, but the visual comparison focuses on the three authenticated operational roles.

How the shared course object changes by role
RoleNeeds to understandPermitted actions
StudentTime, lecturer, materials, deadlines, resultsLearn, submit, attend, evaluate
LecturerRoster, materials, assessments, attendancePublish, schedule, grade, communicate
Academic AffairsSemester, capacity, staffing, course statusConfigure, assign, publish, govern

06 · Interaction logic

The screen was only one state in a longer transaction.

Assessment made the value of state modeling especially visible. Leaving the page, reaching the time limit, waiting for manual grading, or hiding a result all required different feedback and recovery, not one generic empty state.

Assessment state model

The interface must explain what happens before, during, and after an exam.

  1. Access01

    Not available

    The assessment cannot be started before it becomes available.

    Availability is explicit

  2. Access02

    Available

    The student can enter the assessment within its defined window.

    Start action is enabled

  3. Attempt03

    In progress

    Work is preserved while the student completes the assessment.

    Autosaved

  4. Submission04

    Submitted

    Submission can be deliberate or triggered automatically when time expires.

    Timer expiry → auto-submit

  5. Marking05

    Awaiting grade

    The attempt is complete, but a result is not yet available to the student.

    Pending is not an error

  6. Visibility06

    Result state

    The result is shown as hidden or available rather than leaving an empty view.

    Hidden / available

The flow separates system behavior, autosave and automatic submission, from the result visibility controlled after grading.
How documented assessment rules imply interface states
Documented ruleExperience riskInterface implication
Leaving mid-assessment preserves the current work.A student cannot tell whether an answer is safe.Show a persistent saved status and a clear resume path.
The system submits when the time limit ends.Submission can feel unexpected or irreversible.Keep time visible and warn before the transition.
Multiple choice can be automatic; written answers wait for review.No immediate score can look like a failure.Use an explicit awaiting-review state instead of a blank result.
Lecturers or Academic Affairs may hide a result.Unavailable data can appear broken or missing.Explain availability and who controls the next transition.

07 · Delivery

Architecture turned backend behavior into interface obligations.

The coded course project used a React and MUI client with state and Axios layers, backed by NestJS controllers and services, Mongoose and MongoDB, plus storage and email integrations. That made permission, validation, latency, and failure part of the product design.

  1. 01

    Presentation expresses intent

    React and MUI render the role-specific navigation, forms, course workspaces, tables, and action states.

  2. 02

    Application state preserves context

    Client state and Axios carry the current role, request state, selected data, and feedback across the API boundary.

  3. 03

    Services enforce business rules

    NestJS DTOs, controllers, and services validate input, apply permissions, and coordinate academic operations.

  4. 04

    Data and integrations close the loop

    MongoDB preserves records while storage and SMTP support documents, images, password recovery, and notifications.

How architecture decisions affect the user experience
Architecture concernSystem responsibilityUX consequence
Role-based accessAuthorize routes and operations by role.Hide irrelevant actions and explain permission boundaries.
DTO and service validationReject invalid input without corrupting data.Keep entered values and attach errors to the responsible field or rule.
MongoDB and MongooseReflect one academic object across roles.Show the same status consistently in student, lecturer, and admin views.
API, storage, and emailComplete work outside the immediate click.Represent loading, success, failure, retry, and delayed notification.

08 · Outcome

The strongest outcome was a coherent model, not a usability metric.

The team delivered a software design package and full-stack codebase spanning student, lecturer, and Academic Affairs work. The most defensible design outcome is the translation from operational rules into a structured role-based product.

What worked

Requirements became visible product structure.

Use cases clarified what had to happen. Role boundaries, lifecycle dependencies, and state models then helped turn that inventory into navigation and feedback.

Largest limitation

System correctness was not user validation.

The original project did not document sufficient usability testing. It cannot support claims about comprehension, task success, accessibility, or real-world impact.

Next iteration

Test the three highest-risk workflows first.

I would observe course registration with students, assessment completion with students and lecturers, and semester setup with Academic Affairs before expanding scope.

A complete feature list does not automatically create a coherent product.