Skip to content

Latest commit

Β 

History

History
122 lines (93 loc) Β· 3.77 KB

File metadata and controls

122 lines (93 loc) Β· 3.77 KB

Innate Feeds

A full-stack web application for discovering and browsing GitHub trending and starred repositories. Supports dual deployment modes: a traditional API+SQLite backend, or a static GitHub Pages site with pre-exported JSON data.

Features

  • GitHub Trending β€” Browse daily, weekly, and monthly trending repositories with snapshot history.
  • GitHub Starred β€” View your starred repositories with starred_at timestamps and incremental sync.
  • Filtering & Search β€” Filter by language, topics, date snapshot, stars range; search by name/description; sort by stars, updated, created, or starred date.
  • Dual Mode β€” Run as a full-stack app (Hono API + SQLite) or deploy as a static site (GitHub Pages) with incremental JSON data chunks.
  • Multi-theme β€” Default, Notion, and Linear theme support.
  • Filter Persistence β€” Filter state is saved to localStorage and restored on page reload.

Quick Start

Prerequisites

  • Bun or Node.js 18+
  • GitHub CLI (gh) installed and authenticated (gh auth login)
  • Firecrawl API key (optional, falls back to gh CLI)

Install

git clone <repo-url>
cd innate-feeds
bun install
bun run install:all

Development

bun run dev

This starts:

  • Backend API at http://localhost:4000
  • Frontend dev server at http://localhost:3000 (proxies /api to backend)

Sync Data

cd backend

# Sync trending repos (all periods: daily, weekly, monthly)
bun run sync:trending

# Sync your starred repos (full)
bun run sync:starred

# Sync only recently starred (last 24h, incremental)
bun run sync:starred:recent

# View stats
bun run stats

Build for Production

API mode:

cd frontend && bun run build
# Serve frontend/dist/ and run backend with: cd backend && bun run start

Static mode (GitHub Pages):

# Export data + build frontend in static mode
bun run build:static

# For project pages with a sub-path
VITE_BASE_PATH=/your-repo bun run build:pages

Project Structure

innate-feeds/
β”œβ”€β”€ backend/
β”‚   └── src/
β”‚       β”œβ”€β”€ app/          # server.ts (Hono API), cli.ts (CLI)
β”‚       β”œβ”€β”€ collector/    # github.ts, firecrawl.ts, sync.ts
β”‚       β”œβ”€β”€ data/         # export/import static JSON
β”‚       └── db/           # SQLite schema, queries, path config
β”œβ”€β”€ frontend/
β”‚   └── src/
β”‚       β”œβ”€β”€ pages/        # TanStack Router routes (trending, starred)
β”‚       β”œβ”€β”€ components/   # FeedCard, FilterBar, AppSidebar, etc.
β”‚       β”œβ”€β”€ services/     # feeds.ts (API + static mode client)
β”‚       β”œβ”€β”€ hooks/        # usePersistedFeedFilters
β”‚       β”œβ”€β”€ lib/          # utils, theme, filter storage
β”‚       └── types/        # TypeScript domain types
β”œβ”€β”€ git-repo-scanner/     # Standalone Go CLI for scanning local git repos
└── package.json          # Root workspace scripts

Tech Stack

Layer Technology
Frontend React 19, TanStack Router, Vite 6, Tailwind CSS v4
Backend Hono 4, @hono/node-server
Database SQLite via better-sqlite3 (WAL mode)
Data Sources GitHub CLI (gh), Firecrawl
Validation Zod
Runtime Bun / Node.js 18+

Environment Variables

Variable Default Description
PORT 4000 Backend API server port
DB_PATH ~/.innate/feeds.db SQLite database file path
INNATE_HOME ~/.innate Data directory (DB_PATH overrides)
VITE_STATIC_MODE β€” Set to true for static/GitHub Pages mode
VITE_BASE_PATH / Base URL path for GitHub Pages project sites
GITHUB_TOKEN β€” Used by git-repo-scanner for higher API rate limits

License

Private project.