Skip to main content

Technology Stack

PBS Knowledge is built with modern, well-supported technologies chosen for developer experience and maintainability.

Frontend

TechnologyVersionPurpose
Svelte5.xReactive UI framework
Vite6.xBuild tool and dev server
TypeScript5.xType-safe JavaScript
Tailwind CSS3.xUtility-first CSS
Felte1.xForm management
AJV8.xJSON Schema validation
Cytoscape.js3.xNetwork visualization

Frontend Structure

frontend/
├── src/
│ ├── lib/
│ │ ├── api.ts # API client
│ │ ├── components/ # Reusable components
│ │ ├── forms/ # Schema-driven forms
│ │ ├── stores/ # Svelte stores
│ │ └── types/ # TypeScript types
│ ├── pages/ # Full-page components
│ └── routes/ # Route components
├── public/ # Static assets
└── tailwind.config.js # Tailwind configuration

Backend

TechnologyVersionPurpose
Node.js20.xRuntime environment
Fastify5.xWeb framework
TypeScript5.xType-safe JavaScript
BullMQ5.xJob queue
node-fetch3.xHTTP client

Backend Structure

backend/
├── src/
│ ├── routes/ # API route handlers
│ ├── services/ # Business logic
│ ├── plugins/ # Fastify plugins
│ ├── middleware/ # Request middleware
│ ├── workers/ # Background job processors
│ ├── schema/ # TerminusDB schema
│ └── types/ # TypeScript types
├── scripts/ # Utility scripts
└── data/ # Static data files

Database

TechnologyVersionPurpose
TerminusDB11.2.xKnowledge graph database
Redis7.xCache and job queue
Firebase Firestore-Document storage

Why TerminusDB?

TerminusDB was chosen for its:

  • Graph-native model - Natural fit for academic relationships
  • GraphQL API - Flexible querying
  • Schema enforcement - Type safety at database level
  • Version control - Branch and merge data changes

Authentication

TechnologyPurpose
SAML 2.0Dartmouth SSO integration
Firebase AuthToken management
JWTAPI authentication

Infrastructure

TechnologyPurpose
DockerContainerization
Docker ComposeContainer orchestration
NGINXReverse proxy, SSL
GitHub ActionsCI/CD

External APIs

APIPurpose
Dartmouth Developer APIPeople, courses, enrollments
OpenAlexPublications, citations
AWS SESEmail delivery

Development Tools

ToolPurpose
ESLintCode linting
PrettierCode formatting
VitestUnit testing
TypeScriptType checking

Browser Support

The frontend supports modern browsers:

  • Chrome/Edge (last 2 versions)
  • Firefox (last 2 versions)
  • Safari (last 2 versions)

Internet Explorer is not supported.