Skip to content

angristan/larafeed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Larafeed

Larafeed is a simple feed reader.

Features

  • A pleasant and snappy UI
    • Prefetching is leveraged to make the app feel snappy
    • Entry is marked as read when you view it
    • Entry content is modified so that links open in a new tab
  • RSS and Atom feed support
  • Background feed updates
    • Failures are stored and displayed in the UI
  • Custom feed names and categories
  • Read and starred entries
  • AI-generated summary of entries
  • Favicon display (proxified through imgproxy)
  • Spotlight-like go to feed
  • OPML import/export

Screenshots

New screenshots coming soon, here are the old ones

Feed list

Feed

Entry

Technical overview

  • Backend build with Laravel 11
  • React for the frontend with the amazing Mantine components and hooks
  • Inertia.js that does the magic glue between Laravel and React
    • Prefetching is leveraged to make the app feel snappy
  • Feed parsing is powered by SimplePie
  • Summary generation is powered by Gemini through echolabsdev/prism
  • Background jobs are powered by Laravel queues
  • Favicon fetching is powered by ash-jc-allen/favicon-fetcher

Database schema

erDiagram
    users {
        int8 id PK
        varchar name
        varchar email
        timestamp email_verified_at
        varchar password
        timestamp created_at
        timestamp updated_at
    }

    feeds {
        int8 id PK
        varchar name
        varchar feed_url
        varchar site_url
        varchar favicon_url
        timestamp last_successful_refresh_at
        timestamp created_at
        timestamp updated_at
    }

    entries {
        int8 id PK
        varchar title
        varchar url
        varchar author
        text content
        timestamp published_at
        int8 feed_id FK
        timestamp created_at
        timestamp updated_at
    }

    feed_subscriptions {
        int8 user_id FK
        int8 feed_id FK
        int8 category_id FK
        varchar custom_feed_name
        timestamp created_at
        timestamp updated_at
    }

    subscription_categories {
        int8 id PK
        int8 user_id FK
        varchar name
        timestamp created_at
        timestamp updated_at
    }

    entry_interactions {
        int8 user_id FK
        int8 entry_id FK
        timestamp read_at
        timestamp starred_at
        timestamp archived_at
        timestamp created_at
        timestamp updated_at
    }

    users ||--o{ feed_subscriptions : "subscribes"
    users ||--o{ entry_interactions : "interacts"
    users ||--o{ subscription_categories : "has"
    feeds ||--o{ entries : "contains"
    feeds ||--o{ feed_subscriptions : "has"
    entries ||--o{ entry_interactions : "has"
    subscription_categories ||--o{ feed_subscriptions : "organizes"
Loading

Deployment

The project is currently deployed on Railway:

The web server is powered by Laravel Octane, FrankenPHP and Caddy. ⚡️

Development

Run locally

Larafeed is built with Laravel Sail, so you can run it locally with Docker.

cp .env.example .env # and adjust the values
composer update
php artisan migrate --seed
npm install
composer dev

A quick login link is available on the login form, which will create a user and log you in.

License

Larafeed is licensed under the MIT license.