---
title: Library
---

Library (hereinafter the "Application") is Naomi's personal library tracking application for cataloguing and engaging with media collections.

## 1. User Documentation

The live instance is available at `https://library.nhcarrigan.com`.

The application is presented as Naomi's curated collection of media and includes books, games, music, shows, manga, and art.

Core user-facing capabilities include:

1. Browsing library entries by media type.
2. Engaging with content through comments and likes.
3. Submitting suggestions for new additions.
4. Viewing activity and leaderboard-style participation features.

## 2. Technical Documentation

The project is an `Nx` monorepo with a frontend app and a Fastify API.

Runtime and build scripts are managed from the repository root:

1. `pnpm dev` builds and runs the production-style API process with development environment values.
2. `pnpm build` generates Prisma client artifacts and builds all projects.
3. `pnpm test` runs configured test targets across the workspace.
4. `pnpm lint` runs lint targets across the workspace.

Architecture notes:

1. API routes are mounted under `/api` via autoloaded Fastify route modules.
2. The API includes dedicated modules for `books`, `games`, `music`, `shows`, `manga`, `art`, `suggestions`, `comments`, `likes`, `leaderboard`, `activity`, and `users`.
3. Security middleware and plugins include CSRF protection, rate limiting, CORS, helmet, and auth-related plugins.
4. Database access is managed with Prisma.

## 3. Legal Documentation

Project policy files reference global documentation:

1. License: `https://docs.nhcarrigan.com/#/license`
2. Terms: `https://docs.nhcarrigan.com/#/terms`
3. Privacy: `https://docs.nhcarrigan.com/#/privacy`
4. Security: `https://docs.nhcarrigan.com/#/security`

Copyright is held by Naomi Carrigan.

## 4. Contributing Documentation

Contributions are accepted through pull requests according to the repository's contributing guidelines and code of conduct.

Before opening a pull request:

1. Install dependencies with `pnpm install`.
2. Run `pnpm lint`.
3. Run `pnpm test`.
4. Run `pnpm build`.