Skip to content

devadigapratham/RSServe

Repository files navigation

RSS Feed Aggregator and Scraper

Description

The RSS Feed Aggregator and Scraper is a blog aggregator service built in Go. This project showcases the construction of a RESTful API using Go, integrated with production-ready database tools such as PostgreSQL, SQLc, Goose, and pgAdmin. Unlike standard CRUD applications, this service features a long-running service worker that fetches data from remote locations over the internet, making it a robust solution for aggregating and scraping blog content.

Features

  • Sleek RESTful API built with the magic of Go.
  • Swift routing with chi router 🚦.
  • Rock-solid database management using PostgreSQL.
  • Smooth database migrations with the help of Goose 🦢.
  • SQL wizardry courtesy of SQLc.
  • Keep tabs on your database kingdom with pgAdmin 🏰.
  • A diligent service worker that fetches data without breaking a sweat.

Technologies Used

  • Go
  • Chi router
  • SQLc
  • Goose
  • pgAdmin
  • PostgreSQL

Installation and Setup

Follow these steps to get your aggregator up and running:

  1. Clone the project
git clone <repository-url>
  1. Run database migrations
cd sql/schema
goose postgres 'postgres://postgres:root@localhost:5432/rssagg' up

make sure you have PostgresQL database installed, I recommend creating a new database named "rssagg" using pgadmin

  1. Run the application
go build && ./go-RssAggregator.exe

📚 API Documentation

Our service contains a set of API calls. You can use the Thunder Client to try them out:

  1. Health Check

  1. Simulate Error

  1. Create User

{
  "name": "User Name"
}
  1. Get User

  • Endpoint: GET http://localhost:8080/v1/user
  • Description: Retrieves user information. API_KEY can be retrieved from database
  • Headers:
    • Authorization: ApiKey YOUR_API_KEY
  • Body: None
  1. Create Feed

{
  "name": "Lanes Blog",
  "url": "https://www.wagslane.dev/index.xml"
}
  1. Create Feed

  1. Create Feed Follow

{
   "feed_id": "529c8b81-3259-4699-994e-112fbbe93600"
}
  1. Get Feed Follows

  1. Delete Feed Follows

  1. Get User Posts

Authentication

For endpoints requiring authentication, include an Authorization header with your API key:

Authorization: ApiKey YOUR_API_KEY

Your API key can be obtained from a user in the database.

About

building a fully fledged RSS aggregator project in Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages