University of Peradeniya crestSCS Documentation
University of Peradeniya crestSCS Documentation
Department website

Start here

Repository handbookRepository overviewDevelopment

System design

ArchitectureAuthentication and authorizationPublic dataAPI contractsSchemas
UI system

Applications

Department Web applicationPeople applicationProjects applicationPortal application
Application internals
People application internalsPeople published data and directoriesPeople profile interpretation

Services

API serviceGitHub App serviceMailer service

Shared packages

Schemas packageUI packageTypeScript configuration packageESLint configuration package

Development workflow

Testing and verificationDependency managementDocumentation authoringUI quality assurance

Operations

Continuous integrationEnvironment variablesOperationsSecurityTroubleshooting

Reference

Route referenceGlossary
Application internalsPeople internals

How staff and student fields become labelled profile sections, how directory context differs from academics, and how project roles are shown.

People profile interpretation

People is responsible for presenting schema fields without changing their meaning. It must not infer a department, honours programme, status, or project role from nearby fields.

Student semantics

ConceptSource and presentation rule
directory programmemanifest membership confirmed by the batch's student list
student rolealumni, postgraduate, honours undergraduate, or general undergraduate
programmelabelled postgraduate programme, otherwise honours programme
subjectseach subject code rendered with its own label
academic department/unitrendered from their dedicated schema fields
level and SLQF levelseparately labelled when present

Directory context determines breadcrumbs and collection membership. It does not overwrite the profile's academic department, unit, subjects, or programme. The Overview and Academic tabs should therefore avoid presenting the same value as an unexplained duplicate badge.

For students, a postgraduate programme takes presentation precedence over an honours programme when both fields are present. Subjects remain a separate list; a subject is not a replacement for the programme or department. Staff rank, staff type, academic support position, and non-academic position likewise use explicit mappings rather than formatted guesses where the schema has a defined label set.

Profile and project loading

Profile records and by-person project summaries load concurrently. The project tab failing does not hide an otherwise valid person. Each project displays the role published for that project; the application must not collapse multiple roles into a single global title such as supervisor or contributor.

If no public person record loads but the Projects index contains entries for the username, the route renders a project-only profile. It identifies the username, explains that no public directory profile is available, and lists roles beside their respective projects. If neither source provides a usable identity, the page shows the person-not-found state.

External project cards use normal anchors to the configured Projects origin. Social, publication, and profile links opened in a new tab include noopener noreferrer. Profile tab controls and cards must preserve keyboard focus, explicit active state, and semantic labels described in UI quality assurance.

People published data and directories

Data origins, validation, cache behavior, manifests, staff groups, student batches, search, prefetching, and sitemap scope.

Projects application internals

Runtime map of project discovery paths, canonical filters, published data, detail rendering, and related-project ranking.

On this page

People profile interpretationStudent semanticsProfile and project loading