Xandrov StudioAtlas of shipped systems
← The territory/ IV. Tools & Infrastructure/ № 15 — Library Portal
Dossier № 15 / 19 — Tools & Infrastructure — Full-stack build · Local-first

College Library Portal

Institutional software with no cloud dependency.

File
№ 15 / 19
Territory
Tools & Infrastructure
Classification
Full-stack build · Local-first
Status
Working build
§ 01 Context

Institutional software usually runs on the cloud. A college library, however, needs a system that runs on the desk — no uptime guarantees from a vendor, no vendor lock-in, no data sitting on someone else's servers.

This project builds a complete library management system: catalog, circulation (checkout and return), member accounts, and admin tools. It's designed to run end-to-end on a single machine, with no hosted infrastructure required, and serves the reality of institutional IT: budget constraints, network isolation, and the need to own the entire stack.

§ 02 The problem

Local-first institutional software faces three hard problems. First, setup: deploying a production system on a local machine means no cloud dashboard to guide configuration — everything must be scriptable and documented for a technician who may have no software experience.

Second, services: a library system needs users, authentication, backups, and reporting without managed cloud APIs. Third, data integrity: ACID transactions, concurrent checkouts, and member records cannot corrupt across power failures or crashes, which usually means leaning on infrastructure you don't own. Solving these on the desk requires discipline.

§ 03 The approach

The system is built as a TypeScript monorepo on npm workspaces, with three main units: apps/web (the user-facing catalog and circulation interface), apps/api (Node server handling business logic), and shared type packages that define the contract between client and server. All three are built from the same type definitions — when the API changes its data shape, the client compiler fails immediately.

This prevents the common drift that kills institutional software: a deployed client expecting a field the server no longer sends. Persistence is SQL-backed. Local setup is scripted — a technician runs one command and gets a working system with seed data and running services. Tests and typecheck are part of the build step, not an afterthought.

The stack is entirely open-source and runs on commodity hardware: Node, npm, and a local SQL database.

A complete library system that runs on the desk, with no one else's infrastructure to blame.

§ 04 Decisions that mattered
D1
Shared types across client and server
The API contract lives in a shared TypeScript package. When the server changes a field, the client fails to compile. Type drift becomes impossible.
D2
Local-first is a non-negotiable requirement
No cloud fallback. The system must work on a single machine with no vendor dependency, even if it means more code and more local operational responsibility.
D3
SQL for transactional integrity
Library checkouts require ACID semantics — a checkout cannot succeed halfway. SQL guarantees this. The system uses SQL as its sole persistence layer.
D4
Scripted setup, no manual configuration
A technician who has never deployed software before should be able to start the system. All setup is automated: database schema, seed data, service startup.
D5
No managed services
Authentication, backups, and reporting are built locally. The system owns the entire operational stack.
§ 05 Where it stands

The system is a complete, working library management portal. It handles catalog browsing, member registration, checkout and return workflows, and admin functions for librarians and staff. All of it runs on one machine without cloud infrastructure. The codebase is production-ready and serves as a template for other institutional software projects that need to run locally.

TS monoreponpm workspacesNode APISQL
§ 06 — Sanitization record

There is no institution's data to protect here — the build ships with its own schema and seed structure, not a live catalog or member roll. What the dossier documents is the engineering: the monorepo layout, the shared type contract, and the scripted local setup, exactly as built.

Have a system like this worth building?

Fixed scope, quoted after one working session, first output inside two weeks. Read by a person within one working day.