This project is a modern RSS Feed Reader built with Next.js, React, and Prisma. It allows users to manage and read articles from multiple RSS feeds in a clean, user-friendly interface.
- Add, edit, and delete RSS feeds
- Fetch and display articles from multiple feeds
- Filter articles by All Articles, Unread, or Starred
- Responsive design with a sidebar for feed management and a main content area for articles
- Real-time updates using Server-Sent Events (SSE)
- Dark mode support
- Modern and Newspaper themes
- List and Grid view options for articles
- Full article view with content extraction
- Reading time estimation
- Automatic feed refresh
- Search functionality (coming soon)
- Next.js 13+ (App Router)
- React 18+
- TypeScript
- Prisma (ORM)
- SQLite (Database)
- Tailwind CSS (Styling)
- Shadcn UI (Component Library)
- Clone the repository
- Install dependencies:
bun install
- Set up the database:
bunx prisma migrate dev
- Run the development server:
bun run dev
- Open http://localhost:3000 in your browser
- Start adding your favorite RSS feeds using the "Add Feed" button in the sidebar
app/
: Next.js app directoryapi/
: API routescomponents/
: React componentslib/
: Utility functions and Prisma clienttypes/
: TypeScript type definitions
prisma/
: Prisma schema and migrationspublic/
: Static assets
HomePage
: Main component that orchestrates the app's functionalitySidebar
: Manages feed list and feed operationsArticleList
: Displays articles from selected feedsHeader
: Contains filter buttons and current feed nameArticleItem
: Individual article displayArticleModal
: Modal for detailed article view
- Create new components in the
app/components/
directory - Add new API routes in the
app/api/
directory if needed - Update the Prisma schema in
prisma/schema.prisma
for any database changes - Implement new functionality in the
HomePage
component or create new page components as needed - Update types in
app/types.ts
to reflect any new data structures
- Follow the principles of Clean Code
- Use TypeScript for type safety
- Implement proper error handling and logging
- Write unit tests for new components and functions
- Use React hooks for state management and side effects
- Optimize performance using React's built-in features (e.g., useMemo, useCallback)
- Follow the Next.js App Router conventions for routing and API routes
To add new features:
- Plan the feature and how it fits into the existing architecture
- Create new components or modify existing ones as needed
- Update the database schema if required
- Implement any necessary API routes
- Add the feature to the main user interface (usually in the
HomePage
component) - Update this README with information about the new feature
Contributions are welcome! Please feel free to submit a Pull Request.