An open-source EPUB/PDF reader application built with Angular 21, NgRx, Express, and PostgreSQL.
The fastest way to run LibReader is with Docker Compose. This starts the Angular frontend, the Express backend, and a PostgreSQL database — all in one command.
- Docker and Docker Compose (v2+)
git clone https://github.com/<your-org>/light-reader.git
cd light-readerCopy the example env file and adjust values if needed:
cp .env.example .env| Variable | Default | Description |
|---|---|---|
POSTGRES_USER |
libreader |
PostgreSQL username |
POSTGRES_PASSWORD |
libreader_pass |
PostgreSQL password |
POSTGRES_DB |
libreader |
PostgreSQL database name |
APP_PORT |
4600 |
Port the app is accessible on |
docker compose up -dThis builds and starts three containers:
| Container | Description |
|---|---|
libreader-frontend |
Angular app served by Nginx |
libreader-backend |
Express API server |
libreader-db |
PostgreSQL 16 database |
The database migrations run automatically on first startup.
Navigate to http://localhost:4600 in your browser.
docker compose downTo also delete stored data (books, database):
docker compose down -vgit pull
docker compose up -d --buildnpm install
npm startOpen http://localhost:4200/. The app auto-reloads on file changes.
cd backend
npm install
npm run devng buildBuild artifacts are stored in dist/.
npm testTests use Vitest.
- Frontend: Angular 21 standalone components, NgRx state management, Angular Material
- Backend: Express + TypeORM (PostgreSQL)
- Storage: File uploads stored on disk (
uploads/volume), metadata in PostgreSQL
See LICENSE for details.