Technology Stack
PBS Knowledge is built with modern, well-supported technologies chosen for developer experience and maintainability.
Frontend
| Technology | Version | Purpose |
|---|---|---|
| Svelte | 5.x | Reactive UI framework |
| Vite | 6.x | Build tool and dev server |
| TypeScript | 5.x | Type-safe JavaScript |
| Tailwind CSS | 3.x | Utility-first CSS |
| Felte | 1.x | Form management |
| AJV | 8.x | JSON Schema validation |
| Cytoscape.js | 3.x | Network 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
| Technology | Version | Purpose |
|---|---|---|
| Node.js | 20.x | Runtime environment |
| Fastify | 5.x | Web framework |
| TypeScript | 5.x | Type-safe JavaScript |
| BullMQ | 5.x | Job queue |
| node-fetch | 3.x | HTTP 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
| Technology | Version | Purpose |
|---|---|---|
| TerminusDB | 11.2.x | Knowledge graph database |
| Redis | 7.x | Cache 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
| Technology | Purpose |
|---|---|
| SAML 2.0 | Dartmouth SSO integration |
| Firebase Auth | Token management |
| JWT | API authentication |
Infrastructure
| Technology | Purpose |
|---|---|
| Docker | Containerization |
| Docker Compose | Container orchestration |
| NGINX | Reverse proxy, SSL |
| GitHub Actions | CI/CD |
External APIs
| API | Purpose |
|---|---|
| Dartmouth Developer API | People, courses, enrollments |
| OpenAlex | Publications, citations |
| AWS SES | Email delivery |
Development Tools
| Tool | Purpose |
|---|---|
| ESLint | Code linting |
| Prettier | Code formatting |
| Vitest | Unit testing |
| TypeScript | Type 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.