---
url: /developers.md
---

# Developers Handbook

Welcome to the Open Library Handbook! This guide provides developers with the information needed to get started, understand the codebase, contribute effectively, and participate in the community.

> \[!TIP]
> **New to Open Library?** Start with [Step 1 of the Getting Started flow](#getting-started).

## Canonical Guides

Use these as the source of truth for contributor workflows:

* Setup and first contribution: [Quick Start](/developers/quick-start.md)
* Git and PR workflow: [Git Workflow](/developers/tools/git.md)
* Linting and CI checks: [Pre-Commit Guide](/developers/tools/pre-commit.md)
* Running tests: [Testing Guide](/developers/tools/testing.md)
* Community norms and contribution standards: [Contributing](/developers/CONTRIBUTING.md)

## Development Tools

Guides for the tools we use to build Open Library:

* [Development Tools Overview](/developers/tools/index.md) - IDE setup, local dev configuration, and links to tool-specific guides

## Getting Started

New to Open Library development? Follow this order:

1. [Quick Start](/developers/quick-start.md) - environment setup and first PR
2. [Git Workflow](/developers/tools/git.md)
3. [Testing Guide](/developers/tools/testing.md)
4. [Pre-Commit Guide](/developers/tools/pre-commit.md)
5. [Browse Good First Issues](/developers/good-first-issues.md), a live in-docs list of open issues tagged for newcomers

## Understanding the Codebase

Learn how the Open Library application is structured:

* [Understand Infogami](/developers/backend/infogami.md)
* [Trace the **step-by-step** Lifecycle of a Network Request](/developers/misc/request-lifecycle.md)
* [Add a new Endpoint (Plugin Tutorial)](https://github.com/internetarchive/openlibrary/tree/master/openlibrary/plugins#tutorial-implementing-a-new-route)
* [Technical Tour & System Overview (1h video)](https://archive.org/details/openlibrary-tour-2020/technical_overview.mp4)

## Contributing to the Front-end

Guidance for working on the user interface:

* **HTML Templates:**
  * [Work with HTML Templates (Frontend Guide)](/developers/frontend/frontend-guide.md)
  * [Template Rendering Guide (deep dive)](/developers/frontend/template-rendering.md)
  * [Jinja Templates Guide](/developers/frontend/jinja.md)
  * [Asynchronously load Template Partials](/developers/frontend/frontend-guide.md#partials)
  * [Internationalize (i18n) Templates](/everyone/internationalization.md)
* **CSS & JavaScript:**
  * [Work with and build CSS (Frontend Guide)](/developers/frontend/frontend-guide.md#working-with-css)
  * [Work with and build JavaScript (Frontend Guide)](/developers/frontend/frontend-guide.md#working-with-javascript)
* **Design Resources:**
  * [Refer to our Design Pattern Library](/designers/design-pattern-library.md)
  * [Explore the Figma Design System](https://www.figma.com/file/dYQkIJOJeMo9hx7ewZQH9x/Open-Library%3A-Design-System-%26-Component-Library)

## Contributing to the Back-end

Information for server-side development:

* **Local Environment:**
  * [See How the Local Docker Services Fit Together](/developers/backend/local-architecture.md)
* **Data & Search:**
  * [Understand our Database Model (DDL)](/developers/backend/understanding-the-data-model.md)
  * [Work with the Solr search engine](/advanced/solr.md)
  * [Work on the Import Pipeline](/advanced/data-importing.md)
  * [Write Librarian Bots](/developers/backend/writing-bots.md)
* **APIs & Architecture:**
  * [Use or Write APIs](https://openlibrary.org/developers/api)
  * [Diagram the Production Architecture](/advanced/production-service-architecture.md)

## Managing Your Developer Environment

Tips for local development:

* [Import production data into your local environment](/developers/misc/loading-production-book-data.md)
* [Create new users locally](/advanced/local-user-setup.md#creating-and-logging-into-new-users)

## Common Coding Recipes & Techniques

Quick references for frequent tasks:

* [Lookup Common Recipes](/developers/misc/coding-recipes.md)
  * [Use cache](/advanced/using-cache.md)
  * [Work with cookies](/developers/misc/coding-recipes.md#setting--unsetting-a-cookie-on-login-or-registration)
  * [Fetch data efficiently from the database](/developers/misc/coding-recipes.md#fetching-things-in-bulk)

## Participating in the Community

Get involved with other contributors:

* [Request a Slack Invite](https://openlibrary.org/volunteer)
* [Attend Weekly Community Calls (Tues @ 9:00 AM PT)](/everyone/community-call.md)
* [Volunteer for a Fellowship](/everyone/fellowships.md)
* [Apply for Google Summer of Code (GSoC)](/everyone/google-summer-of-code.md)

## Specific Feature Developer Guides

Video walkthroughs and documents for key areas:

* [BookWorm / Affiliate Server Guide](https://docs.google.com/document/d/1KRtKYFEp40rgWlxWR1G3v60YSKIQBXbKQTjTloD0Vbg/edit#heading=h.xmcr55qgzsig)
* [Developing the My Books & Reading Log (Video)](https://archive.org/embed/openlibrary-tour-2020/openlibrary-mybooks-primer.mp4)
* [Developing the Books Page (Video)](https://archive.org/details/openlibrary-tour-2020/book-page-developers-guide.mp4)
* [Understanding the "Read" Button Logic (Video)](https://archive.org/details/openlibrary-tour-2020/openlibrary-availability-button-technical-walkthrough.mp4)

## Project & Team Resources

High-level project management and related team portals:

### Project Management

1. [Directory of Projects](https://docs.google.com/document/d/1Kliq7Hs8qpTCtAAp7LKSS8ULenX7l5hQADdo3Y6O8Is/)
2. [Important Documents by Year](https://docs.google.com/document/d/1KJr3A81Gew7nfuyo9PnCLCjNBDs5c7iR4loOGm1Pafs/)
3. [Responsibilities Matrix](https://docs.google.com/document/d/1frjwLxsa3J_ZyU8p0glUwLI_K8OL6yF9xRkyylbwktw/edit#heading=h.ff2pas7bc7ye)
