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.