Skip to content

BENZOOgataga/feedcentral

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

156 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FeedCentral

A professional RSS feed aggregator built with Next.js 14, designed to centralize news from verified sources with a clean, Vercel-inspired interface. Stay informed without the noise, ads, or algorithmic manipulation.

✨ Features

Core Functionality

  • πŸ“° RSS Feed Aggregation - Automatic fetching and normalization of RSS/Atom feeds from trusted sources
  • οΏ½ Automated Updates - Scheduled feed refresh every 30 minutes via Vercel Cron jobs
  • πŸ—‚οΈ Smart Categorization - Organize articles by Technology, Science, Business, and Security
  • πŸ” Full-text Search - PostgreSQL-powered search across titles, descriptions, and content with relevance ranking
  • πŸ“‘ Bookmarks System - Save articles permanently with user-linked bookmarks that survive article cleanup
  • πŸ—‘οΈ Smart Cleanup - Three-tier article lifecycle: soft-delete (7 days), preservation for bookmarks, hard-delete (14 days)

User Experience

  • 🎨 Vercel-inspired Design - Clean, minimal, professional UI with dark-first theme
  • πŸŒ™ Theme Switching - Dark/light mode with system preference support
  • ⚑ Instant Search - Cmd+K search palette with keyboard navigation
  • 🎭 Smooth Animations - Framer Motion powered transitions and micro-interactions
  • πŸ“± Responsive Design - Optimized for desktop, tablet, and mobile devices
  • β™Ώ Accessibility - WCAG AA compliant with keyboard navigation and screen reader support

Authentication & Security

  • πŸ” JWT Authentication - Secure httpOnly cookie-based authentication with 7-day sessions
  • πŸ‘₯ User Management - Role-based access control (ADMIN/USER)
  • πŸ›‘οΈ Protected Routes - Middleware-protected API endpoints and admin pages
  • πŸ”‘ Password Security - bcrypt hashing with salt rounds

Admin Panel

  • πŸŽ›οΈ Source Management - Add, edit, toggle, and delete RSS sources
  • πŸ“Š Job Monitoring - Real-time feed refresh job tracking with status indicators
  • πŸ‘€ User Administration - Manage user accounts and permissions
  • πŸ“ˆ Dashboard Statistics - Total articles, active sources, job history

Developer Features

  • πŸ“Š Analytics - Vercel Analytics and Speed Insights integrated
  • πŸš€ TypeScript - Full type safety across the entire codebase
  • πŸ—„οΈ Prisma ORM - Type-safe database queries with PostgreSQL
  • 🎯 RESTful API - Well-structured API routes with consistent responses
  • πŸ“ Comprehensive Logging - Detailed job logs and error tracking

πŸ› οΈ Tech Stack

Frontend

  • Framework: Next.js 14 (App Router) with React 19
  • Language: TypeScript 5
  • Styling: Tailwind CSS v4 with custom design tokens
  • Components: shadcn/ui (Radix UI primitives)
  • Animations: Framer Motion for smooth transitions
  • Icons: Lucide React
  • Theme: next-themes for dark/light mode

Backend

  • Runtime: Node.js with Edge Runtime support
  • Database: PostgreSQL 14+
  • ORM: Prisma 6 with driver adapters
  • Authentication: JWT (jsonwebtoken) + bcrypt
  • RSS Parsing: rss-parser with custom normalization
  • Cron Jobs: Vercel Cron for automated feed fetching

Developer Tools

  • Analytics: Vercel Analytics & Speed Insights
  • Fonts: Geist Sans & Geist Mono
  • Linting: ESLint with Next.js config
  • Type Checking: TypeScript strict mode
  • Package Manager: npm

Infrastructure

  • Deployment: Vercel (optimized)
  • Database Hosting: Vercel Postgres or any PostgreSQL provider
  • Edge Functions: API routes with edge runtime
  • Monitoring: Built-in job logging and error tracking

πŸš€ Getting Started

Prerequisites

  • Node.js 18+ (LTS recommended)
  • PostgreSQL 14+ (local or cloud-hosted)
  • npm or yarn package manager
  • Git

Quick Start (5 minutes)

The fastest way to get FeedCentral running locally:

# Clone the repository
git clone https://github.com/BENZOOgataga/feedcentral.git
cd feedcentral

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your database credentials

# One-command setup (validates env, generates Prisma client, pushes schema, seeds data)
npm run setup

# Start development server
npm run dev

Open http://localhost:3000 to see the app.

Detailed Setup

1. Clone and Install

git clone https://github.com/BENZOOgataga/feedcentral.git
cd feedcentral
npm install

2. Environment Configuration

Create a .env file in the root directory:

# Database (use one of these)
DATABASE_URL="postgresql://user:password@localhost:5432/feedcentral"
# OR for Vercel Postgres
POSTGRES_URL="postgres://..."

# JWT Secret (min 32 characters, generate with: openssl rand -base64 32)
JWT_SECRET="your-super-secret-jwt-key-min-32-chars"

# Admin Credentials (for initial setup)
ADMIN_USERNAME="admin@feedcentral.local"
ADMIN_PASSWORD="admin123"

# Optional: Cron job security
CRON_API_KEY="your-cron-secret-key"

# Optional: Database seeding security
SEED_SECRET_KEY="your-seed-secret-key"

πŸ“ See docs/ENVIRONMENT_SETUP.md for complete configuration guide.

3. Database Setup

# Validate environment variables
npm run check-env

# Generate Prisma client
npm run db:generate

# Push schema to database (creates tables)
npm run db:push

# Seed with initial data (categories, sources, admin user)
npm run db:seed

Or use the all-in-one command:

npm run setup

4. Run Development Server

npm run dev

The application will be available at http://localhost:3000

Default Credentials

After seeding, you can login with:

  • Email: admin@feedcentral.local (or your ADMIN_USERNAME)
  • Password: admin123 (or your ADMIN_PASSWORD)

⚠️ Important: Change these credentials immediately in production!

πŸš€ Deployment

Deploy to Vercel (Recommended)

FeedCentral is optimized for Vercel deployment with zero configuration.

Quick Deploy

  1. Connect Repository

    • Push your code to GitHub
    • Import project in Vercel dashboard
    • Vercel auto-detects Next.js configuration
  2. Configure Database

    • Add Vercel Postgres from the Storage tab
    • Database URL is automatically added to environment variables
  3. Set Environment Variables

    In Vercel dashboard, add:

    JWT_SECRET=<generate-with-openssl-rand-base64-32>
    ADMIN_USERNAME=your-admin-email@domain.com
    ADMIN_PASSWORD=your-secure-password
    CRON_API_KEY=<optional-cron-security-key>
    SEED_SECRET_KEY=<optional-seed-security-key>
    
  4. Deploy

    • Click "Deploy"
    • Vercel builds and deploys automatically
    • Access deployment URL provided by Vercel
  5. Seed Database

    After first deployment:

    curl "https://your-app.vercel.app/api/admin/seed?key=YOUR_SEED_SECRET_KEY"
  6. Set up Cron Jobs

    Vercel Cron is already configured in vercel.json:

    {
      "crons": [{
        "path": "/api/cron/fetch-feeds",
        "schedule": "*/30 * * * *"
      }]
    }

Environment Variables Reference

Variable Required Description Example
DATABASE_URL Yes* PostgreSQL connection string postgresql://user:pass@host:5432/db
POSTGRES_URL Yes* Vercel Postgres URL (auto-set) postgres://...
JWT_SECRET Yes Secret for JWT signing (min 32 chars) openssl rand -base64 32
ADMIN_USERNAME No Initial admin email admin@feedcentral.local
ADMIN_PASSWORD No Initial admin password admin123
CRON_API_KEY No Cron endpoint security key your-secret-key
SEED_SECRET_KEY No Seed endpoint security key your-secret-key

*Use either DATABASE_URL or POSTGRES_URL (Vercel auto-provides the latter)

Deploy to Other Platforms

FeedCentral can be deployed to any platform supporting Node.js and PostgreSQL:

  • Railway: Connect GitHub repo, add PostgreSQL plugin
  • Render: Create Web Service + PostgreSQL database
  • DigitalOcean: App Platform with managed PostgreSQL
  • AWS: Elastic Beanstalk + RDS PostgreSQL
  • Self-hosted: Any VPS with Node.js 18+ and PostgreSQL 14+

General Deployment Steps

  1. Set up PostgreSQL database
  2. Configure environment variables
  3. Build: npm run build
  4. Run: npm run start
  5. Seed database via API endpoint
  6. Set up cron job to hit /api/cron/fetch-feeds every 30 minutes

Production Checklist

  • Change default admin credentials
  • Set strong JWT_SECRET (min 32 characters)
  • Configure secure database credentials
  • Set up SSL/TLS certificates
  • Enable CORS if needed
  • Configure rate limiting
  • Set up error monitoring (Sentry, etc.)
  • Configure backup strategy for database
  • Test cron job execution
  • Verify analytics integration

πŸ“ See docs/DEPLOYMENT.md for detailed deployment guide.

πŸ—οΈ Project Structure

feedcentral/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ (app)/                   # Main app route group
β”‚   β”‚   └── [category]/          # Dynamic category pages
β”‚   β”œβ”€β”€ admin/                   # Admin panel
β”‚   β”‚   β”œβ”€β”€ page.tsx             # Admin dashboard
β”‚   β”‚   β”œβ”€β”€ sources/             # RSS source management
β”‚   β”‚   β”œβ”€β”€ jobs/                # Feed job monitoring
β”‚   β”‚   β”œβ”€β”€ users/               # User management
β”‚   β”‚   └── settings/            # Admin settings
β”‚   β”œβ”€β”€ api/                     # API routes
β”‚   β”‚   β”œβ”€β”€ articles/            # Article CRUD endpoints
β”‚   β”‚   β”œβ”€β”€ auth/                # Authentication (login, logout, me)
β”‚   β”‚   β”œβ”€β”€ bookmarks/           # Bookmark management
β”‚   β”‚   β”œβ”€β”€ search/              # Full-text search
β”‚   β”‚   β”œβ”€β”€ stats/               # Dashboard statistics
β”‚   β”‚   β”œβ”€β”€ sources/             # Public source listing
β”‚   β”‚   β”œβ”€β”€ admin/               # Admin API (sources, jobs, users, seed)
β”‚   β”‚   β”œβ”€β”€ cron/                # Cron job endpoints
β”‚   β”‚   └── user/                # User profile endpoints
β”‚   β”œβ”€β”€ app/                     # User-facing app
β”‚   β”‚   β”œβ”€β”€ page.tsx             # Main feed dashboard
β”‚   β”‚   β”œβ”€β”€ bookmarks/           # Saved articles
β”‚   β”‚   β”œβ”€β”€ dashboard/           # User dashboard
β”‚   β”‚   └── settings/            # User preferences
β”‚   β”œβ”€β”€ article/[id]/            # Article reader
β”‚   β”œβ”€β”€ login/                   # Login page
β”‚   β”œβ”€β”€ changelog/               # Changelog page
β”‚   β”œβ”€β”€ privacy/                 # Privacy policy
β”‚   β”œβ”€β”€ terms/                   # Terms of service
β”‚   β”œβ”€β”€ page.tsx                 # Landing page
β”‚   β”œβ”€β”€ layout.tsx               # Root layout
β”‚   └── globals.css              # Global styles
β”‚
β”œβ”€β”€ components/                   # React components
β”‚   β”œβ”€β”€ admin/                   # Admin-specific components
β”‚   β”‚   └── AddSourceDialog.tsx  # Add RSS source dialog
β”‚   β”œβ”€β”€ analytics/               # Analytics wrappers
β”‚   β”œβ”€β”€ changelog/               # Changelog notifications
β”‚   β”œβ”€β”€ feed/                    # Feed display components
β”‚   β”‚   β”œβ”€β”€ FeedCard.tsx         # Article card
β”‚   β”‚   β”œβ”€β”€ FeedList.tsx         # Article list container
β”‚   β”‚   β”œβ”€β”€ FeedSkeleton.tsx     # Loading skeleton
β”‚   β”‚   └── EmptyState.tsx       # Empty state UI
β”‚   β”œβ”€β”€ layout/                  # Layout components
β”‚   β”‚   β”œβ”€β”€ TopNav.tsx           # Top navigation bar
β”‚   β”‚   β”œβ”€β”€ SideNav.tsx          # Sidebar navigation
β”‚   β”‚   β”œβ”€β”€ AppTabs.tsx          # Category tabs
β”‚   β”‚   β”œβ”€β”€ AdminSideNav.tsx     # Admin sidebar
β”‚   β”‚   └── UserMenu.tsx         # User dropdown menu
β”‚   β”œβ”€β”€ reader/                  # Article reader components
β”‚   β”‚   β”œβ”€β”€ ArticleHeader.tsx    # Article metadata header
β”‚   β”‚   └── ArticleContent.tsx   # Article content display
β”‚   β”œβ”€β”€ search/                  # Search components
β”‚   β”‚   └── CommandSearch.tsx    # Cmd+K search palette
β”‚   β”œβ”€β”€ theme/                   # Theme management
β”‚   β”‚   β”œβ”€β”€ ThemeProvider.tsx    # Theme context provider
β”‚   β”‚   └── ThemeToggle.tsx      # Dark/light mode toggle
β”‚   β”œβ”€β”€ providers/               # React context providers
β”‚   β”‚   └── PreferencesProvider.tsx
β”‚   └── ui/                      # shadcn/ui components
β”‚       β”œβ”€β”€ button.tsx
β”‚       β”œβ”€β”€ dialog.tsx
β”‚       β”œβ”€β”€ input.tsx
β”‚       β”œβ”€β”€ toast.tsx
β”‚       └── ...
β”‚
β”œβ”€β”€ lib/                         # Utilities and services
β”‚   β”œβ”€β”€ auth.ts                  # Authentication utilities (verifyAuth, requireAuth, requireAdmin)
β”‚   β”œβ”€β”€ prisma.ts                # Prisma client singleton
β”‚   β”œβ”€β”€ rss-parser.ts            # RSS feed parser with normalization
β”‚   β”œβ”€β”€ env.ts                   # Environment variable validation
β”‚   β”œβ”€β”€ utils.ts                 # Helper functions (cn, formatters)
β”‚   β”œβ”€β”€ decode-html.ts           # HTML entity decoder
β”‚   β”œβ”€β”€ changelog-data.ts        # Changelog content
β”‚   └── hooks/                   # Custom React hooks
β”‚       β”œβ”€β”€ useAuth.tsx          # Auth context and hooks
β”‚       └── useToast.ts          # Toast notifications
β”‚
β”œβ”€β”€ prisma/                      # Database
β”‚   β”œβ”€β”€ schema.prisma            # Database schema
β”‚   β”œβ”€β”€ seed.ts                  # Seed script
β”‚   β”œβ”€β”€ migrations/              # Database migrations
β”‚   └── README.md                # Prisma documentation
β”‚
β”œβ”€β”€ scripts/                     # Build and utility scripts
β”‚   β”œβ”€β”€ check-env.js             # Environment validation
β”‚   β”œβ”€β”€ postbuild.js             # Post-build tasks
β”‚   └── ...
β”‚
β”œβ”€β”€ docs/                        # Documentation
β”‚   β”œβ”€β”€ QUICK_START.md           # 5-minute setup guide
β”‚   β”œβ”€β”€ DEVELOPER_GUIDE.md       # Architecture and development
β”‚   β”œβ”€β”€ ENVIRONMENT_SETUP.md     # Environment configuration
β”‚   β”œβ”€β”€ DEPLOYMENT.md            # Deployment instructions
β”‚   β”œβ”€β”€ IMPLEMENTATION_SUMMARY.md # Feature implementation status
β”‚   └── ...
β”‚
β”œβ”€β”€ types/                       # TypeScript type definitions
β”‚   └── index.ts
β”‚
β”œβ”€β”€ public/                      # Static assets
β”œβ”€β”€ .env                         # Environment variables (gitignored)
β”œβ”€β”€ .env.example                 # Environment template
β”œβ”€β”€ package.json                 # Dependencies and scripts
β”œβ”€β”€ tsconfig.json                # TypeScript configuration
β”œβ”€β”€ next.config.js               # Next.js configuration
β”œβ”€β”€ tailwind.config.ts           # Tailwind CSS configuration
β”œβ”€β”€ vercel.json                  # Vercel deployment config
└── README.md                    # This file

πŸ“š Documentation

Comprehensive guides for developers, administrators, and contributors:

Getting Started

Development

Operations

Additional Resources

πŸ“œ Available Scripts

Development

npm run dev              # Start development server at http://localhost:3000
npm run build            # Build for production
npm run start            # Start production server
npm run lint             # Run ESLint
npm run lint:fix         # Run ESLint and auto-fix issues
npm run type-check       # Run TypeScript compiler without emitting files

Database Management

npm run check-env        # Validate environment configuration
npm run setup            # One-command setup (check-env + generate + push + seed)
npm run db:generate      # Generate Prisma client from schema
npm run db:push          # Push schema changes to database (dev)
npm run db:migrate       # Create and run migrations (production)
npm run db:seed          # Seed database with initial data
npm run db:studio        # Open Prisma Studio GUI for database management
npm run db:reset         # Reset database (DANGEROUS: deletes all data)

Post-installation

npm run postinstall      # Automatically runs after npm install (generates Prisma client)

🌐 API Overview

FeedCentral provides a comprehensive RESTful API for articles, authentication, bookmarks, and admin operations.

Public Endpoints

Endpoint Method Description
/api/articles GET Fetch articles with pagination, category/source filtering
/api/articles/[id] GET Get single article by ID
/api/search GET Full-text search with PostgreSQL FTS and relevance ranking
/api/stats GET Dashboard statistics (total articles, sources, jobs)
/api/sources GET List all active RSS sources

Authentication Endpoints

Endpoint Method Description Auth Required
/api/auth/login POST User login (returns JWT in httpOnly cookie) No
/api/auth/logout POST User logout (clears auth cookie) Yes
/api/auth/me GET Get current authenticated user Yes
/api/auth/register POST Register new user account No

User Endpoints

Endpoint Method Description Auth Required
/api/bookmarks GET Get user's bookmarks Yes
/api/bookmarks POST Add article to bookmarks Yes
/api/bookmarks DELETE Remove bookmark Yes
/api/user/profile GET Get user profile Yes
/api/user/profile PUT Update user profile Yes

Admin Endpoints (ADMIN role required)

Endpoint Method Description
/api/admin/sources GET List all RSS sources
/api/admin/sources POST Add new RSS source
/api/admin/sources/[id] PUT Update RSS source
/api/admin/sources/[id] DELETE Delete RSS source
/api/admin/jobs GET List feed job history
/api/admin/users GET List all users
/api/admin/users POST Create new user
/api/admin/users/[id] PUT Update user
/api/admin/users/[id] DELETE Delete user
/api/admin/seed GET Seed database (requires SEED_SECRET_KEY)

Cron Endpoints

Endpoint Method Description Auth Required
/api/cron/fetch-feeds GET/POST Trigger RSS feed fetch job CRON_API_KEY or Vercel Cron secret

Response Format

All API endpoints return JSON with a consistent structure:

{
  "success": true,
  "data": { /* response data */ },
  "error": "Error message (only if success: false)"
}

Authentication

Protected endpoints require a JWT token sent via:

  • Cookie: auth_token (httpOnly, secure in production)
  • Header: Authorization: Bearer <token>

Token validity: 7 days

🎨 Design Philosophy

FeedCentral follows a Vercel-inspired design system focused on clarity, professionalism, and user respect.

Design Principles

  • Minimal: No unnecessary elements or distractions
  • Elegant: Subtle animations and generous spacing
  • Professional: Clean, polished, and trustworthy
  • Dark-first: Optimized for low-light reading environments
  • Accessible: WCAG AA/AAA compliant with keyboard navigation

Visual Identity

Element Specification
Primary Color #7C5CFF (violet)
Background (dark) #0a0a0a
Card Background #121212
Border (glass) rgba(255, 255, 255, 0.08)
Typography Geist Sans, Geist Mono
Border Radius 8-12px (rounded corners)
Spacing 8px scale (8, 12, 16, 24, 32)
Animations 150-300ms with Vercel easing curve

Animation Guidelines

  • Duration: 150-300ms maximum
  • Easing: cubic-bezier(0.16, 1, 0.3, 1) (Vercel curve)
  • Stagger: 30ms delay for list items
  • Spring Animations: Stiffness 380-500, damping 30-40
  • Accessibility: Respects prefers-reduced-motion

Component Conventions

  • File Naming: PascalCase (e.g., FeedCard.tsx)
  • Client Components: Mark with 'use client' directive
  • Server Components: Default (no directive needed)
  • Props Interfaces: Named ComponentNameProps
  • Exports: Named exports preferred

πŸ§ͺ Testing & Quality

Code Quality Tools

  • ESLint: Next.js configuration with strict rules
  • TypeScript: Strict mode enabled
  • Prettier: (Recommended to add)

Run Checks

npm run lint              # Check for linting errors
npm run lint:fix          # Auto-fix linting issues
npm run type-check        # TypeScript compilation check

Database Tools

npm run db:studio         # Open Prisma Studio for database inspection

πŸ”§ Troubleshooting

Common Issues

Environment Variables Not Loaded

# Verify environment variables
npm run check-env

# Ensure .env file exists
cp .env.example .env

Database Connection Failed

# Check PostgreSQL is running
pg_isready

# Verify DATABASE_URL in .env
# Test connection with Prisma
npm run db:studio

Prisma Client Not Generated

# Regenerate Prisma client
npm run db:generate

# Or reinstall dependencies (triggers postinstall)
npm install

Seed Data Not Loading

# Run seed script directly
npm run db:seed

# Or via API endpoint (if deployed)
curl "http://localhost:3000/api/admin/seed?key=YOUR_SEED_SECRET_KEY"

Build Errors

# Clear Next.js cache
rm -rf .next

# Reinstall dependencies
rm -rf node_modules
npm install

# Rebuild
npm run build

Cron Jobs Not Running

  • Local Development: Cron jobs don't run automatically. Trigger manually:

    curl -X POST http://localhost:3000/api/cron/fetch-feeds \
      -H "Authorization: Bearer YOUR_CRON_API_KEY"
  • Vercel: Check cron configuration in vercel.json and deployment logs

Getting Help

If you encounter issues:

  1. Check docs/DEVELOPER_GUIDE.md for common pitfalls
  2. Search GitHub Issues
  3. Open a new issue with:
    • Environment details (OS, Node version, database)
    • Error messages and logs
    • Steps to reproduce

🀝 Contributing

We welcome contributions from the community! Whether it's bug fixes, new features, documentation improvements, or design enhancements.

How to Contribute

  1. Fork the repository

    git clone https://github.com/BENZOOgataga/feedcentral.git
    cd feedcentral
  2. Create a feature branch

    git checkout -b feature/your-feature-name
  3. Make your changes

    • Follow the existing code style and conventions
    • Add tests if applicable
    • Update documentation as needed
  4. Test your changes

    npm run lint
    npm run type-check
    npm run build
  5. Commit with clear messages

    git commit -m "feat: add new feature description"

    Use conventional commits:

    • feat: New feature
    • fix: Bug fix
    • docs: Documentation changes
    • style: Code style changes (formatting)
    • refactor: Code refactoring
    • test: Adding tests
    • chore: Maintenance tasks
  6. Push and create a Pull Request

    git push origin feature/your-feature-name

Contribution Guidelines

  • Read the Developer Guide to understand the architecture
  • Follow the Design Philosophy for UI/UX changes
  • Ensure your code passes linting and type checks
  • Write clear, descriptive commit messages
  • Update relevant documentation
  • Be respectful and constructive in discussions

Areas We Need Help

  • 🎨 UI/UX improvements and accessibility enhancements
  • πŸ› Bug fixes and error handling
  • πŸ“ Documentation and tutorials
  • 🌐 Internationalization (i18n) support
  • πŸ§ͺ Test coverage improvements
  • πŸš€ Performance optimizations
  • πŸ“± Mobile experience enhancements

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License

Copyright (c) 2024 FeedCentral

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

πŸ™ Acknowledgments

Open Source Projects

FeedCentral is built on the shoulders of giants. Special thanks to:

Design Inspiration

  • Vercel Dashboard - For the clean, professional design system
  • Linear - For interaction patterns and micro-animations
  • Raindrop.io - For bookmark organization concepts

Community

Thanks to all contributors who have helped make FeedCentral better!


πŸ“ž Contact & Support

Official Links

Support the Project

If you find FeedCentral useful, consider supporting its development:

  • ⭐ Star the repository on GitHub
  • πŸ’– Support on Patreon
  • πŸ› Report bugs and suggest features
  • πŸ“ Contribute code or documentation
  • 🌐 Share FeedCentral with others

Contact


πŸ”’ Privacy & Ethics

FeedCentral is built with privacy and user respect at its core:

  • βœ… No tracking - We don't use analytics cookies or tracking scripts
  • βœ… No ads - Zero advertising, ever
  • βœ… No data selling - Your reading habits are yours alone
  • βœ… GDPR compliant - Operated from France with full GDPR compliance
  • βœ… Open source - Full transparency, audit the code yourself
  • βœ… Self-hostable - Run your own instance with complete control

Read our Privacy Policy and Terms of Service for details.


Built with ❀️ for the open web

Take back control of your news feed.

Get Started β€’ Documentation β€’ Contribute

Releases

No releases published

Packages

 
 
 

Contributors