Skip to content

Abdulkareemoj/bookmarkreader

Repository files navigation

BookmarkReader: Cross-Platform Bookmark & RSS Manager

🎯 Overview

A personal cross-platform bookmark and RSS reader app built for desktop (Tauri + React), web, and mobile (Expo + React Native). The app helps users organize, tag, and read bookmarked links and RSS feeds offline. Syncing and user accounts ill be added later.

📊 Current Development Status

Stage: Early Phase 1 - Core Functionality & Cross-Platform Polish Readiness: ~65% complete for basic functionality

  • ✅ Project architecture and monorepo setup
  • ✅ Database schema and basic Drizzle ORM setup
  • ✅ Agent framework with CRUD operations
  • ✅ UI components for web/desktop and mobile
  • ✅ Cross-platform build configurations
  • 🔄 Agent implementations (metadata fetching, RSS parsing)
  • 🔄 Database abstraction for mobile
  • 🔄 UI consistency verification
  • ❌ Testing suite
  • ❌ Error handling & logging
  • ❌ CI/CD pipeline
  • ❌ Production deployments

🧩 Core Goals

  • Manage and organize bookmarks with metadata (title, description, tags, favicon, etc.)
  • Read and manage RSS feeds directly within the app
  • Local-first data storage (SQLite / AsyncStorage)
  • Consistent design system across platforms
  • Offline-ready with future sync support

🏗️ Architecture Overview

Monorepo (Turborepo)

apps/
  web/        → React + shadcn/ui (Tailwind)
  desktop/    → Tauri + React (reuses web UI)
  mobile/     → React Native (Expo)
packages/
  db/         → Drizzle ORM schema + migrations
  utils/      →  logic (bookmark parsers, feed fetchers)
hooks/
store/      → Zustand state management
  api/        → Future sync and server API helpers
Layer Tools
Frontend (Web/Desktop) React + Vite + TailwindCSS + shadcn/ui
Frontend (Mobile) React Native (Expo) + Uniwind
App Shell Tauri (for desktop app bundling)
ORM / Data Layer Drizzle ORM (SQLite / AsyncStorage)
State Management Zustand
RSS Parsing rss-parser or custom fetcher using DOMParser
Local Storage SQLite (Drizzle) for desktop/web, AsyncStorage for mobile
Build & Tooling Turborepo + TypeScript + ESlint + Prettier

🧠 Core Modules & Responsibilities

  1. Bookmark
  • Handles creation, organization, and metadata management for bookmarks.
  • Responsibilities
  • Add/edit/delete bookmarks
  • Group by tags or collections
  • Auto-fetch title, favicon, description from URL
  • Local caching and search filtering
  • Handle favorites and read-later lists

Core Types

type Bookmark = {
  id: string;
  title: string;
  url: string;
  description?: string;
  favicon?: string;
  tags?: string[];
  dateAdded: string;
  favorite?: boolean;
};
  1. RSS Reader
  • Manages feed subscriptions, parsing, and article reading.
  • Responsibilities
  • Add/edit/remove RSS feeds
  • Fetch and parse feed XML into articles
  • Track read/unread states
  • Cache feed data locally
  • Refresh feeds periodically

Core Types

type Feed = {
  id: string;
  title: string;
  feedUrl: string;
  siteUrl?: string;
  lastFetched?: string;
  unreadCount?: number;
};

type Article = {
  id: string;
  feedId: string;
  title: string;
  link: string;
  contentSnippet?: string;
  content?: string;
  pubDate?: string;
  read?: boolean;
};
  1. UI
  • Defines the shared design principles and reusable components.
  • Responsibilities
  • Maintain consistent theme (light/dark)
  • Define typography, spacing, and color tokens
  • Provide shared UI elements:
  • Buttons, Cards, Tabs, Modals, Inputs
  • Bookmark List + Feed List layouts
  • Empty States and Skeleton Loaders

Web: Built with shadcn/ui + Tailwind Mobile: Built with Uniwind reusing component patterns.

  1. Storage
  • Handles persistence and data migration.
  • Responsibilities
  • Manage SQLite connections via Drizzle
  • Migrate schema on version updates
  • Abstract AsyncStorage or SQLite (for mobile)
  • Provide CRUD methods to BookmarkAgent and RssAgent
  1. Sync Agent (Future)
  • Will handle user accounts, syncing, and backups (e.g. Supabase, remote API).
  • Responsibilities
  • User authentication
  • Cloud backup and restore
  • Conflict resolution
  • Cross-device syncing
  1. Utility Agent
  • Provides cross-platform helpers and services.
  • Responsibilities
  • RSS XML parsing
  • Bookmark URL metadata extraction (via Open Graph tags)
  • Date formatting
  • Error handling and logging
  • Network helpers and caching

🧩 Future Enhancements

  • Browser extension for quick bookmark saving
  • Full-text search (using SQLite FTS)
  • Notifications for new RSS posts
  • Custom article reader view (distraction-free)
  • AI summarization or tag suggestions
  • User authentication & cloud sync

About

A personal cross-platform bookmark and RSS reader app built for desktop (Tauri + React), web, and mobile (Expo + React Native). The app helps users organize, tag, and read bookmarked links and RSS feeds offline. Syncing and user accounts to be added later.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages