Skip to content

tmarcum6/gross

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gRoSS

gRoSS is a lightweight, self-hosted RSS feed reader built in Go. No Electron. No Node. No nonsense. Just a single binary, a SQLite database, and your feeds.


Features

  • Add any RSS or Atom feed — via URL
  • Auto-polling — feeds refresh every 15 minutes in the background
  • Filters — focus on what you want
  • Zero dependencies to run — single binary + SQLite file
  • Server-rendered HTML — works in any browser, no JS framework

Getting Started

Prerequisites

  • Go 1.21+
  • GCC (required for SQLite via go-sqlite3)

Install & Run

# Clone the repo
git clone https://github.com/tmarcum6/gross.git
cd gross

# Install dependencies
go mod tidy

# Run
go run .

Then open http://localhost:8080 in your browser.


Project Structure

go-rss/
├── main.go               # Entry point, router, handlers
├── go.mod
├── rss.db                # Auto-created SQLite database
├── db/
│   ├── db.go             # DB init & table creation
│   ├── feeds.go          # Feed queries
│   └── articles.go       # Article queries
├── models/
│   └── feed.go           # Feed & Article types
├── poller/
│   └── poller.go         # Background feed polling
└── templates/
    ├── templates.go      # Template loader & renderer
    ├── layout.html       # Base layout with sidebar
    ├── index.html        # Homepage / all articles
    └── feed.html         # Single feed view

Routes

Method Path Description
GET / Homepage — all articles
GET /?unread=true Unread articles only
POST /feeds Add a new feed
GET /feeds/{id} View articles for a feed
POST /articles/{id}/read Mark an article as read

Testing

# Run all tests
go test ./...

# Run with verbose output
go test ./... -v

# Check coverage
go test ./... -cover

Tests use SQLite's :memory: mode — no files created, no cleanup needed.


Tech Stack

Layer Tech
Language Go
Router chi
RSS Parsing gofeed
Database SQLite via go-sqlite3
Templates html/template

Roadmap

  • OPML import / export
  • Feed categories / folders
  • Full-text search
  • Article preview pane
  • Dark / light theme toggle
  • Docker support
  • Tailwind CSS
  • RSS Lookup
  • Tracking for Read and Saved
  • Hot-Reload
  • Social
  • Custom feeds

About

RSS Site made with Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors