Skip to content

wingeek/reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Reader App

An elegant reader application built with Astro + React + Tailwind CSS 4 + Convex.

Tech Stack

  • Astro 5.0 - Modern web framework with SSR/SSG support
  • React 19 - Latest UI library
  • TypeScript 5.7 - Type-safe development
  • Tailwind CSS 4.0 - Utility-first CSS framework
  • Convex - Real-time database and backend services
  • Bun - Fast JavaScript runtime
  • Playfair Display & Inter - Elegant typography fonts

Features

Core Pages

  • 🏠 Home - Welcome page displaying reading progress
  • πŸ“‘ Subscriptions - Manage content sources (GitHub repos, more coming soon)
  • πŸ“° Feed - View collected articles from your subscriptions
  • πŸ”– Bookmarks - Save and manage favorite articles

Subscription Management (Phase 1)

  • GitHub Integration - Subscribe to repositories to track releases and issues
  • Automatic Collection - Hourly cron jobs collect new content
  • Feed View - Real-time updates from all subscriptions
  • Organization - Categorize and filter collected articles

Design Philosophy

  • πŸ“± Mobile-First - Fully responsive design with touch-friendly interface
  • 🎨 Elegant Typography - Italic serif headings with clean sans-serif body text
  • 🎭 Monochromatic - Single-tone color scheme for focused reading
  • ⚑ Performance - Fast loading with Astro SSR and optimized rendering

Getting Started

Prerequisites

  • Node.js 18+ or Bun
  • A Convex account (free tier works)

Installation

# Install dependencies
bun install

# Start Convex dev server (in a separate terminal)
bun dev:convex

# Start web application
bun dev

Visit http://localhost:4321 to view the application.

Environment Variables

Create .env.local:

# Deployment used by `npx convex dev`
CONVEX_DEPLOYMENT=anonymous:anonymous-web

CONVEX_URL=http://127.0.0.1:3210
PUBLIC_CONVEX_URL=http://127.0.0.1:3210

CONVEX_SITE_URL=http://127.0.0.1:3211

Build for Production

bun build

Preview Production Build

bun preview

Project Structure

reader/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ reader/              # Core reader components
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.tsx       # Desktop top navigation
β”‚   β”‚   β”‚   β”œβ”€β”€ MobileBottomNav.tsx  # Mobile bottom navigation
β”‚   β”‚   β”‚   β”œβ”€β”€ HomePage.tsx     # Home page
β”‚   β”‚   β”‚   β”œβ”€β”€ SubscriptionsPage.tsx  # Subscription management
β”‚   β”‚   β”‚   β”œβ”€β”€ FeedPage.tsx      # Article feed
β”‚   β”‚   β”‚   β”œβ”€β”€ BookmarksPage.tsx     # Bookmarks management
β”‚   β”‚   β”‚   β”œβ”€β”€ ArticleDetailPage.tsx # Article reading
β”‚   β”‚   β”‚   └── AddSubscriptionModal.tsx # Add subscription modal
β”‚   β”‚   β”œβ”€β”€ ui/                  # UI base components
β”‚   β”‚   β”‚   β”œβ”€β”€ button.tsx       # Button component
β”‚   β”‚   β”‚   └── badge.tsx        # Badge component
β”‚   β”‚   └── ReaderApp.tsx        # Main app with routing
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── Layout.astro         # Page layout
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── convex.tsx           # Convex client setup
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   └── index.astro          # App entry
β”‚   └── styles/
β”‚       └── global.css           # Global styles
β”œβ”€β”€ convex/                     # Backend (Convex)
β”‚   β”œβ”€β”€ schema.ts               # Database schema
β”‚   β”œβ”€β”€ subscriptions/
β”‚   β”‚   β”œβ”€β”€ queries.ts          # Subscription queries
β”‚   β”‚   └── mutations.ts        # Subscription mutations
β”‚   β”œβ”€β”€ articles/
β”‚   β”‚   β”œβ”€β”€ queries.ts          # Article queries
β”‚   β”‚   └── mutations.ts        # Article mutations
β”‚   β”œβ”€β”€ collections/
β”‚   β”‚   └── github.ts           # GitHub collector
β”‚   β”œβ”€β”€ crons.ts                # Cron job logic
β”‚   └── crons.ts                # Cron configuration
β”œβ”€β”€ public/                     # Static assets
β”œβ”€β”€ astro.config.mjs            # Astro configuration
β”œβ”€β”€ tailwind.config.mjs         # Tailwind configuration
β”œβ”€β”€ tsconfig.json               # TypeScript configuration
└── package.json                # Project dependencies

Design System

Colors

  • Primary: Black (#000000)
  • Grays: #CCCCCC, #888888, #666666, #E0E0E0
  • Border: Subtle gray for separation

Typography

  • Headings: Playfair Display (italic)
  • Body: Inter (clean and readable)

Responsive Breakpoints

  • Mobile: Default (< 768px)
  • Desktop: md: breakpoint (β‰₯ 768px)

Development

Available Scripts

bun dev          # Start all services (web + convex)
bun dev:web      # Start web server only
bun dev:convex   # Start Convex dev server only
bun build        # Build for production
bun preview      # Preview production build

Type Checking

astro check      # Astro type check
tsc --noEmit     # TypeScript type check

Architecture

Client-Side Routing

The app uses state-based routing (not URL-based) managed by ReaderApp.tsx:

  • Tab: 'home' | 'subscriptions' | 'feed' | 'bookmarks'
  • View: Tab | 'article-detail'

Backend (Convex)

Database Tables:

  • subscriptions - Content source subscriptions
  • articles - Collected articles from sources
  • collectionJobs - Collection job history

API Structure: Functions follow filesystem paths

  • api.subscriptions.queries.listAll
  • api.subscriptions.mutations.create
  • api.articles.queries.listRecent

Roadmap

Phase 1: Foundation βœ…

  • GitHub subscription support
  • Basic feed view
  • Automatic content collection
  • Bookmark management

Phase 2: More Sources (Planned)

  • HackerNews integration
  • Product Hunt integration
  • WeChat article collection
  • Advanced filtering

Phase 3: AI Agent (Planned)

  • Natural language subscription management
  • Chat interface for content control
  • AI-powered content summarization

Phase 4: Digests (Planned)

  • Daily/weekly curated digests
  • AI-generated summaries
  • Personalized recommendations

Contributing

See CLAUDE.md for detailed development documentation.

License

MIT

About

reader

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages