Skip to content

enderahmetyurt/bloudme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Bloudme

Follow your favourite web sites, and read in minimal design.

A modern RSS feed reader built with Ruby on Rails, designed for a clean and distraction-free reading experience.

✨ Features

  • πŸ“– Clean, minimal reading interface
  • πŸ”„ Automatic feed updates via background jobs
  • πŸ”– Bookmark articles for later reading
  • 🎨 Modern, responsive design with Tailwind CSS
  • ⚑ Fast, SPA-like experience with Hotwire/Turbo
  • πŸ‘€ User authentication and personalized feeds
  • πŸ“§ Email confirmations and notifications
  • πŸ’³ Subscription management with LemonSqueezy integration

πŸš€ Tech Stack

  • Backend: Ruby on Rails (Edge)
  • Frontend: Hotwire/Turbo, Stimulus, Tailwind CSS
  • Database: PostgreSQL
  • Background Jobs: Solid Queue
  • Caching: Solid Cache
  • Real-time: Solid Cable
  • Testing: MiniTest
  • Deployment: Render.com
  • Monitoring: Sentry

πŸ“‹ Prerequisites

  • Ruby 3.2+
  • Node.js 18+
  • PostgreSQL 14+

πŸ› οΈ Installation

  1. Clone the repository

    git clone https://github.com/enderahmetyurt/bloudme.git
    cd bloudme
  2. Install dependencies

    bundle install
    npm install
  3. Setup credentials

    # This project uses Rails encrypted credentials instead of .env files
    # The .env.example file is provided for reference only
    # Configure your credentials using:
    rails credentials:edit --environment=development
  4. Setup database

    rails db:create
    rails db:migrate
    rails db:seed # See user password
  5. Build assets

    rails assets:precompile
  6. Start the development server

    bin/dev

Visit http://localhost:3000 in your browser.

πŸ”§ Development

Running tests

rails test
rails test:system

Code quality

bundle exec rubocop
bundle exec brakeman

Background jobs

Background jobs are handled by Solid Queue. In development, they run automatically.

Adding feeds

Feeds can be added through the web interface or programmatically:

feed = Feed.create!(
  name: "Example Blog",
  feed_url: "https://example.com/feed.xml",
  user: current_user
)

πŸ“‘ API

Authentication

The application uses session-based authentication. API endpoints require a valid session.

Endpoints

  • GET /feeds - List user's feeds
  • POST /feeds - Create a new feed
  • GET /articles - List articles from subscribed feeds
  • POST /bookmarks - Bookmark an article
  • DELETE /bookmarks/:id - Remove bookmark

🐳 Docker Development

docker-compose up -d

πŸš€ Production Deployment

The application is deployed on Render.com with automatic deployments from the main branch.

πŸ” Configuration

This project uses Rails encrypted credentials instead of .env files for better security. The .env.example file is provided only as a reference for the configuration keys needed.

Managing Credentials

# Edit development credentials
rails credentials:edit --environment=development

Required Configuration Keys

See .env.example for reference. Your encrypted credentials should include:

  • database_url - PostgreSQL connection string
  • sentry_dsn - Error tracking (optional)
  • resend_api_key - Email service (optional)
  • lemonsqueezy_api_key - Payment processing (optional)
  • lemonsqueezy_store_id - LemonSqueezy store ID (optional)
  • lemonsqueezy_variant_id - LemonSqueezy variant ID (optional)
  • secret_key_base - Rails secret key

Why Credentials Instead of .env?

  • Security: Credentials are encrypted and committed to the repository
  • Environment-specific: Different credentials for development, test, and production
  • Team collaboration: Secure sharing of configuration across team members
  • Deployment: No need to manage separate environment variable files

🀝 Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

πŸ“ License

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

πŸ›‘οΈ Security

If you discover a security vulnerability, please see SECURITY.md for reporting instructions.

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •