Skip to content

greg-hass/FeedStreamPWA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

378 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FeedStream PWA

A modern, self-hosted RSS/feed reader with support for RSS, YouTube, Reddit, and Podcasts.

Features

  • Multi-source support (RSS, YouTube, Reddit, Podcasts)
  • Full-text search with FTS5
  • Starred items and OPML import/export
  • Reader view and exponential backoff
  • Modern glassy UI with dark mode

Deployment

Ubuntu Server:

git pull
./scripts/deploy.sh

See DEPLOY.md for complete deployment instructions.

Architecture

  • Frontend: SvelteKit + TypeScript (static output)
  • Backend: Fastify + TypeScript + SQLite
  • Deployment: Docker Compose + Caddy (with Tailscale)

Project Structure

FeedStream-PWA/
├── web/              # SvelteKit frontend
│   ├── src/
│   │   ├── routes/   # Pages and layouts
│   │   └── app.html  # HTML template
│   ├── static/       # Static assets (icons, manifest, service worker)
│   └── build/        # Production build output (generated)
├── api/              # Fastify backend
│   ├── src/
│   │   └── index.ts  # Main server file
│   └── Dockerfile
├── scripts/
│   └── deploy.sh     # Automated deployment script
├── docker-compose.yml
├── Caddyfile
├── DEPLOY.md         # Deployment guide
└── .gitignore

Next Steps

1. Install Dependencies

# Frontend
cd web
npm install

# Backend
cd ../api
npm install
cd ..

2. Development Mode (Optional)

Test locally before building for production:

# Terminal 1 - Backend
cd api
npm run dev

# Terminal 2 - Frontend
cd web
npm run dev

Visit http://localhost:5173 (frontend dev server will proxy /api to backend).

3. Build for Production

# Build frontend static files
cd web
npm run build
# This creates web/build/ folder

# Build backend (optional - Docker will do this)
cd ../api
npm run build
cd ..

4. Deploy with Docker

# From FeedStream-PWA/ root
docker-compose up -d

What to expect:

5. Verify Deployment

Visit https://feedstream.swallow-cliff.ts.net in your browser:

  • You should see "FeedStream - Private feed reader"
  • Click "Health check" button
  • You should see JSON response: { "ok": true, "time": "..." }

6. Check Logs

# View all logs
docker-compose logs -f

# View specific service
docker-compose logs -f api
docker-compose logs -f caddy

7. Stop Services

docker-compose down

# To also remove volumes (database will be deleted!)
docker-compose down -v

Notes

  • Static Output: The frontend builds to web/build/ as configured in svelte.config.js
  • API Prefix: Caddy strips /api prefix before proxying to backend
  • Service Worker: Only registers in production builds (not in dev mode)
  • Icons: Replace placeholder files in web/static/icons/ with actual PNG icons
  • Database: Persists in Docker volume; survives container restarts

Customization

  • Change hostname: Edit Caddyfile line 1
  • Change port: Edit docker-compose.yml API service environment
  • Add routes: Create new files in web/src/routes/
  • Add API endpoints: Edit api/src/index.ts

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors