https://github.com/internetarchive/openlibrary
One webpage for every book ever published!
https://github.com/internetarchive/openlibrary
books hacktoberfest internet-archive library-catalogue open-source
Last synced: 11 days ago
JSON representation
One webpage for every book ever published!
- Host: GitHub
- URL: https://github.com/internetarchive/openlibrary
- Owner: internetarchive
- License: agpl-3.0
- Created: 2008-10-30T05:20:14.000Z (over 17 years ago)
- Default Branch: master
- Last Pushed: 2025-05-09T16:15:53.000Z (10 months ago)
- Last Synced: 2025-05-12T13:21:16.792Z (10 months ago)
- Topics: books, hacktoberfest, internet-archive, library-catalogue, open-source
- Language: Python
- Homepage: https://openlibrary.org
- Size: 93.3 MB
- Stars: 5,628
- Watchers: 173
- Forks: 1,543
- Open Issues: 932
-
Metadata Files:
- Readme: Readme.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-python-applications - Repo
- awesome-python-applications - Repo
- awesome-starred - internetarchive/openlibrary - One webpage for every book ever published! (open-source)
- stars - internetarchive/openlibrary - One webpage for every book ever published! (Python)
README
# Open Library
🌍 Read this in other languages: [简体ä¸ć–‡](Readme_chinese.md) | [Español](Readme_es.md) | [Tiáşżng Việt](Readme_vn.md)


[](https://gitter.im/theopenlibrary/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://github.com/internetarchive/openlibrary/graphs/contributors)
[Open Library](https://openlibrary.org) is an open, editable library catalog, building towards a web page for every book ever published.
Are you looking to get started? [This is the guide](https://github.com/internetarchive/openlibrary/blob/master/CONTRIBUTING.md) you are looking for. You may wish to learn more about [Google Summer of Code (GSoC)?](https://github.com/internetarchive/openlibrary/wiki/Google-Summer-of-Code) or [Hacktoberfest](https://github.com/internetarchive/openlibrary/wiki/Hacktoberfest).
## Table of Contents
- [Overview](#overview)
- [Installation](#installation)
- [Code Organization](#code-organization)
- [Architecture](#architecture)
- [The Frontend](https://github.com/internetarchive/openlibrary/wiki/Frontend-Guide)
- [The Backend](#the-backend)
- [The Service Architecture](https://github.com/internetarchive/openlibrary/wiki/Production-Service-Architecture)
- [Developer's Guide](#developers-guide)
- [Running Tests](#running-tests)
- [Contributing](#contributing)
- [Public APIs](https://openlibrary.org/developers/api)
- [FAQs](https://openlibrary.org/help/faq)
## Overview
Open Library is an effort started in 2006 to create "one web page for every book ever published." It provides access to many public domain and out-of-print books, which can be read online.
Here's a quick public tour of Open Library to get you familiar with the service and its offerings (10min).
[](https://archive.org/embed/openlibrary-tour-2020/openlibrary.ogv)
- [Learn more about the Open Library project](https://openlibrary.org/about)
- [The Vision (Dream) of OpenLibrary](https://openlibrary.org/about/vision)
- [Visit the Blog](https://blog.openlibrary.org)
## Installation
Run `docker compose up` and visit http://localhost:8080
Need more details? Checkout the [Docker instructions](https://github.com/internetarchive/openlibrary/blob/master/docker/README.md)
or [video tutorial](https://archive.org/embed/openlibrary-developer-docs/openlibrary-docker-set-up.mp4).
### Developer's Guide
You can also find more information regarding Developer Documentation for Open Library in the Open Library [Wiki](https://github.com/internetarchive/openlibrary/wiki/).
## Code Organization
* [*openlibrary/core*](/openlibrary/core) - core openlibrary functionality, imported and used by www
* [*openlibrary/plugins*](/openlibrary/plugins) - other models, controllers, and view helpers
* [*openlibrary/views*](/openlibrary/views) - views for rendering web pages
* [*openlibrary/templates*](/openlibrary/templates) - all the templates used in the website
* [*openlibrary/macros*](/openlibrary/macros) - macros are like templates, but can be called from wikitext
## Architecture
### The Backend
OpenLibrary is developed on top of the Infogami wiki system, which is itself built on top of the web.py Python web framework and the Infobase database framework.
- [Overview of Backend Web Technologies](https://openlibrary.org/about/tech)
Once you've read the overview of OpenLibrary Backend technologies, it's highly encouraged you read the developer primer which explains how to use Infogami (and its database, Infobase).
- [Infogami Developer Tutorial](https://openlibrary.org/dev/docs/infogami)
If you want to dive into the source code for Infogami, see the [Infogami repo](https://github.com/internetarchive/infogami).
## Running tests
Open Library tests can be run using docker. Kindly look up on our [Testing Document](https://github.com/internetarchive/openlibrary/wiki/Testing) for more details.
```
docker compose run --rm home make test
```
## Contributing
There are many ways volunteers can contribute to the Open Library project, from development and design to data management and community engagement. Here’s how you can get involved:
### Developers
- **Getting Started:** Check out our [Contributing Guide](https://github.com/internetarchive/openlibrary/blob/master/CONTRIBUTING.md) for instructions on how to set up your development environment, find issues to work on, and submit your contributions.
- **Good First Issues:** Browse our [Good First Issues](https://github.com/internetarchive/openlibrary/issues?q=is%3Aissue+is%3Aopen+-linked%3Apr+label%3A%22Good+First+Issue%22+no%3Aassignee) to find beginner-friendly tasks.
### Designers
- **Design Contributions:** We welcome designers to help improve the user experience. You can start by looking at [design-related issues](https://github.com/internetarchive/openlibrary/labels/design).
### Librarians and Data Enthusiasts
- **Data Contributions:** Learn how to contribute to our catalog and help improve book data on Open Library. Visit our [volunteer page](https://openlibrary.org/volunteer) for more information.
### Community Engagement
- **Join our Community Calls:** Open Library hosts weekly community and design calls. Check the [community call schedule](https://github.com/internetarchive/openlibrary/wiki/Community-Call) for times and details.
- **Ask Questions:** If you have any questions, request an invitation to our Slack channel on our [volunteers page](https://openlibrary.org/volunteer).
For more detailed information, refer to the [Contributing Guide](https://github.com/internetarchive/openlibrary/blob/master/CONTRIBUTING.md).
## License
All source code published here is available under the terms of the [GNU Affero General Public License, version 3](https://www.gnu.org/licenses/agpl-3.0.html).