Skip to content

evanschoffstall/Librerss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

847 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


LibreRSS logo

LibreRSS

Your feeds. Your rules. Zero noise.

Next.js 16 React 19 TypeScript 5 Bun MIT License

A self-hosted, open-source RSS reader built for calm, focused reading.
Fast feeds. Clean layouts. No clutter. Your data stays yours.



What is LibreRSS?

LibreRSS is a self-hosted RSS reader you run on your own server. Subscribe to any RSS or Atom feed, organize sources into categories, and read distraction-free articles — all from a single dashboard you fully control.

It also speaks the GReader API, so native clients like NetNewsWire and Reeder connect without any plugins or adapters.


Features

Feature Description
📡 Universal feed support Subscribe to any RSS, Atom, or JSON feed
🗂️ Category organization Group feeds however makes sense to you
🧘 Distraction-free reading Clean article view, no clutter
🔗 GReader API Works natively with NetNewsWire, Reeder, and more
🌙 Dark & light mode Looks great either way
🔒 Self-hosted Your data stays on your server, always
🚪 Invite-only mode Disable public signup whenever you want
Streaming refresh Feeds update in real time via server-sent events

Quick Start

1 · Install dependencies

bun install

2 · Configure your environment

This repo ships with a committed .env containing sane defaults. Create .env.local at the project root for machine-specific overrides:

DATABASE_URL="postgres://user:password@host:5432/dbname"
ALLOW_SIGNUP="false"
NODE_ENV="development"
LOG_LEVEL="warn"

3 · Provision the database

bun run db:provision

Verifies your connection and applies the full schema in one shot.

4 · Start the dev server

bun dev

Open http://localhost:3000 and you're reading.

GReader clients — point them at http://localhost:3000/api/greader.php


Stack

Layer Technology
⚡ Framework Next.js 16 · React 19 · TypeScript 5
🎨 UI Tailwind CSS v4 · shadcn/ui · Radix UI · Lucide Icons
🗄️ Database PostgreSQL · Drizzle ORM
🏎️ Runtime Bun

Database Commands

Command Description
bun run db:provision Verify connection and apply full schema
bun run db:push Push schema changes directly (no migration files)
bun run db:generate Generate SQL migration files via Drizzle Kit
bun run db:studio Open Drizzle Studio in the browser

User Management

When public signup is disabled, create accounts directly from the CLI:

bun run create-user <email> <password>

Inserts a user into the database. Password must be at least 8 characters.


Project Structure

librerss/
├── src/
│   ├── app/
│   │   ├── api/          # Feed, article, and GReader API routes
│   │   ├── dashboard/    # Main reader UI
│   │   └── landing/      # Marketing / login page
│   └── lib/
│       ├── db/           # Drizzle schema and database client
│       └── api/          # Service layer
├── scripts/              # CLI utilities (provision, create-user, check)
└── public/               # Static assets

Made with ❤️ by Evan Schoffstall

MIT License · Free forever · Self-host it

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages