2022-02-11 17:24:33 +00:00
# Omnivore
2025-07-30 07:26:38 +00:00
[](https://github.com/omnivore-app/omnivore/actions/workflows/build-self-host-docker-images.yaml)
2022-02-15 17:44:42 +00:00
[](https://discord.gg/h2z5rppzz9)
2023-10-27 15:44:26 +00:00
[](https://pkm.social/@omnivore)
2022-02-15 04:27:44 +00:00
[](https://twitter.com/OmnivoreApp)
2022-02-15 04:34:15 +00:00

2022-02-15 04:22:48 +00:00
2022-02-15 05:22:46 +00:00
< img align = "right" src = "https://avatars.githubusercontent.com/u/70113176?s=400&u=506b21d9f019f3160963c010ef363667fb24c7c9&v=4" height = "150px" alt = "Omnivore Logo" >
2022-02-11 17:24:33 +00:00
[Omnivore ](https://omnivore.app ) is a complete, open source read-it-later solution for people who like text.
We built Omnivore because we love reading and we want it to be more social. Join us!
- Highlighting, notes, search, and sharing
- Full keyboard navigation
- Automatically saves your place in long articles
2022-12-05 03:00:49 +00:00
- Add newsletter articles via email (with substack support!)
2022-02-11 17:24:33 +00:00
- PDF support
2022-10-01 14:26:06 +00:00
- [Web app ](https://omnivore.app/ ) written in Node.js and TypeScript
2023-10-19 03:42:42 +00:00
- [Native iOS app ](https://omnivore.app/install/ios ) ([source](https://github.com/omnivore-app/omnivore/tree/main/apple))
2023-02-20 07:36:20 +00:00
- [Android app ](https://omnivore.app/install/android ) ([source](https://github.com/omnivore-app/omnivore/tree/main/android/Omnivore))
2022-02-11 17:24:33 +00:00
- Progressive web app for Android users
2022-02-12 01:19:25 +00:00
- Browser extensions for [Chrome ](https://omnivore.app/install/chrome ), [Safari ](https://omnivore.app/install/safari ), [Firefox ](https://omnivore.app/install/firefox ), and [Edge ](https://omnivore.app/install/edge )
2022-04-19 15:58:28 +00:00
- Labels (aka tagging)
2022-12-05 03:00:49 +00:00
- Offline support
- Text to speech (iOS only)
- [Logseq ](https://logseq.com/ ) support via our [Logseq Plugin ](https://github.com/omnivore-app/logseq-omnivore )
2023-02-20 07:36:20 +00:00
- [Obsidian ](https://obsidian.md/ ) support via our [Obsidian Plugin ](https://github.com/omnivore-app/obsidian-omnivore )
2022-02-11 17:24:33 +00:00
Every single part is fully open source! Fork it, extend it, or deploy it to your own server.
2025-02-12 11:24:23 +00:00
A guide for running a self hosted server can be found [here ](./self-hosting/GUIDE.md )
2022-02-11 17:24:33 +00:00
2023-08-04 09:03:58 +00:00
< img width = "981" alt = "web-screenshot-listview" src = "https://github.com/omnivore-app/omnivore/assets/75189/df7c797a-4255-42f4-a686-ad94866cb580" >
2022-02-16 18:56:11 +00:00
## Join us on Discord! :speech_balloon:
2022-02-11 17:24:33 +00:00
2022-02-15 17:44:42 +00:00
We're building our community on Discord. [Join us! ](https://discord.gg/h2z5rppzz9 )
2022-02-11 17:24:33 +00:00
2022-02-12 01:19:25 +00:00
Read more about Omnivore on our blog. < https: / / blog . omnivore . app / p / getting-started-with-omnivore >
2022-02-16 18:56:11 +00:00
## Shoutouts :tada:
2022-02-16 18:43:38 +00:00
Omnivore takes advantage of some great open source software:
2023-06-22 02:24:51 +00:00
- [TypeScript ](https://www.typescriptlang.org/ ) - Most of our backend and frontend are written in TypeScript.
- [Next.js ](https://nextjs.org/ ) - Our frontend is a Next.JS app and is hosted on [Vercel ](https://vercel.com/ ).
- [SWR ](https://swr.vercel.app/ ) - We do all our data fetching on the web using SWR.
- [Stitches ](https://stitches.dev/ ) - We use Stitches on the frontend to style our components.
- [Mozilla Readability ](https://github.com/mozilla/readability ) - We use Mozilla's Readability library to make pages easier to read.
- [Swift GraphQL ](https://www.swift-graphql.com/ ) - We generate our GraphQL queries on iOS using Swift GraphQL.
2024-02-16 00:02:29 +00:00
- [Apollo GraphQL ](https://www.apollographql.com/ ) - We generate our GraphQL queries on Android using Apollo GraphQL.
2023-06-22 02:24:51 +00:00
- [Radix ](https://www.radix-ui.com/ ) - We use Radix UI's components on our frontend.
2025-02-12 11:24:23 +00:00
- [PDF.js ](https://github.com/mozilla/pdf.js ) - PDF.js is used to have open source pdf functionality.
2023-06-22 02:24:51 +00:00
- And many more awesome libraries, just checkout our package files to see what we are using.
2022-02-16 18:43:38 +00:00
2022-02-28 17:58:09 +00:00
## Importing Libraries
2024-01-22 07:46:04 +00:00
Check out our [docs ](https://docs.omnivore.app/using/importing.html ) for information on importing your data from other apps.
2022-02-16 18:43:38 +00:00
2022-02-16 18:56:11 +00:00
## How to setup local development :computer:
2022-02-11 17:24:33 +00:00
2023-06-22 02:24:51 +00:00
The easiest way to get started with local development is to use `docker compose up` . This will start a postgres container, our web frontend, an API server, and our content fetching microservice.
2022-02-12 00:05:26 +00:00
2022-02-13 16:47:22 +00:00
### Requirements for development
Omnivore is written in TypeScript and JavaScript.
2024-10-24 20:41:49 +00:00
- [Node.js ](https://nodejs.org/ ) (v18.16) and [Yarn ](https://classic.yarnpkg.com/lang/en/ ) -- Versions are managed by [Volta ](https://docs.volta.sh/guide/getting-started ).
- [Chromium ](https://www.chromium.org/chromium-projects/ ) -- See below for installation info.
2022-02-13 16:47:22 +00:00
2023-06-22 02:24:51 +00:00
### Running the web and API services
2022-02-11 23:01:41 +00:00
2024-10-24 20:36:55 +00:00
#### 1. Start docker compose
2022-02-11 23:01:41 +00:00
2022-02-12 00:05:26 +00:00
```bash
git clone https://github.com/omnivore-app/omnivore
cd omnivore
2023-06-22 02:24:51 +00:00
docker compose up
2022-02-12 00:05:26 +00:00
```
2022-02-28 18:03:38 +00:00
2022-02-11 23:01:41 +00:00
This will start postgres, initialize the database, and start the web and api services.
2024-10-24 20:36:55 +00:00
#### 2. Open the browser
2022-02-12 00:05:26 +00:00
Open < http: / / localhost:3000 > and confirm Omnivore is running
2022-02-11 23:01:41 +00:00
2024-10-24 20:36:55 +00:00
#### 3. Login with the test account
2022-02-12 00:05:26 +00:00
2023-10-17 22:49:37 +00:00
During database setup docker compose creates an account `demo@omnivore.app` , password: `demo_password` .
2022-02-12 00:05:26 +00:00
2023-04-26 11:32:19 +00:00
Go to < http: // localhost:3000 /> in your browser and choose `Continue with Email` to login.
2022-02-12 21:40:05 +00:00
### Frontend Development
If you want to work on just the frontend of Omnivore you can run the backend services
with docker compose and the frontend locally:
```bash
2023-06-22 02:24:51 +00:00
docker compose up api content-fetch
2022-02-12 21:40:05 +00:00
cd packages/web
2023-10-27 15:44:26 +00:00
cp .env.template .env.local
2022-02-12 21:40:05 +00:00
yarn dev
```
2023-10-27 15:44:26 +00:00
You will need to configure some values in the new `.env.local` file. These are
the values for running the `web` service directly on your host machine and
running `api` and `content-fetch` within docker:
```sh
NEXT_PUBLIC_BASE_URL=http://localhost:3000
NEXT_PUBLIC_HIGHLIGHTS_BASE_URL=http://localhost:3000
NEXT_PUBLIC_LOCAL_BASE_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_BASE_URL=http://localhost:4000
NEXT_PUBLIC_LOCAL_SERVER_BASE_URL=http://localhost:4000
```
2022-02-12 21:40:05 +00:00
### Running the puppeteer-parse service outside of Docker
2022-02-11 23:01:41 +00:00
2022-02-12 00:40:13 +00:00
To save pages you need to run the `puppeteer-parse` service.
2022-02-12 00:05:26 +00:00
2024-10-24 20:36:55 +00:00
#### 1. Install and configure Chromium
2022-02-11 23:01:41 +00:00
2024-10-24 20:36:55 +00:00
```bash
2022-02-12 00:05:26 +00:00
brew install chromium --no-quarantine
2022-02-11 23:01:41 +00:00
export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
2022-02-12 00:40:13 +00:00
export CHROMIUM_PATH=`which chromium`
2022-02-11 23:01:41 +00:00
```
2024-10-24 20:36:55 +00:00
#### 2. Navigate to the service directory, setup your env file, and install dependencies
2022-02-11 23:01:41 +00:00
2024-10-24 20:36:55 +00:00
```bash
2022-02-11 23:01:41 +00:00
cd packages/puppeteer-parse
2022-02-12 00:05:26 +00:00
cp .env.example .env
2022-02-11 23:01:41 +00:00
yarn
```
2024-10-24 20:36:55 +00:00
#### 3. Start the service
2022-02-11 23:01:41 +00:00
2024-10-24 20:36:55 +00:00
```bash
2022-02-11 23:01:41 +00:00
yarn start
```
This will start the puppeteer-parse service on port 9090.
2022-02-12 00:40:13 +00:00
In your browser go to < http: // localhost:3000 / home > , click the `Add Link` button,
and enter a URL such as `https://blog.omnivore.app/p/getting-started-with-omnivore` .
2022-02-11 23:01:41 +00:00
2022-02-12 00:40:13 +00:00
You should see a Chromium window open and navigate to your link. When the service
is done fetching your content you will see it in your library.
2022-02-11 23:01:41 +00:00
2022-02-11 17:24:33 +00:00
## How to deploy to your own server
2025-01-27 12:33:16 +00:00
A guide for running a self hosted server can be found [here ](./self-hosting/GUIDE.md )
2022-02-11 17:24:33 +00:00
## License
Omnivore and our extensions to Readability.js are under the AGPL-3.0 license.