GoFeed is a simple and powerful backend for aggregating RSS feeds. It allows you to register users, follow RSS feeds, and read them in one place.
The easiest way to get GoFeed up and running is to use docker-compose up
command in the project directory. This will create a container for GoFeed server and a container for Postgres database.
GoFeed provides the following endpoints for interacting with the backend:
- User Management
- Create User (POST:
v1/user
) - Retrieve User (GET:
v1/user
)
- Create User (POST:
- Token Generation
- Generate Token (POST:
v1/token
)
- Generate Token (POST:
- Feed Management
- Create Feed (POST:
v1/feeds
) - Retrieve Feed (GET:
v1/feeds
)
- Create Feed (POST:
- Feed Follow Management
- Create Feed Follow (POST:
v1/feedfollow
) - Retrieve Feed Follow (GET:
v1/feedfollow
) - Delete Feed Follow (DELETE:
/feedfollow/{feedFollowId}
)
- Create Feed Follow (POST:
- Post Management
- Retrieve Posts (GET:
v1/posts
)
- Retrieve Posts (GET:
- Health Check
- Health (GET:
v1/healthz
)
- Health (GET:
- Error Simulation
- Error (GET:
v1/error
)
- Error (GET:
All endpoints except "Create User", "Health", "Error", and "Token" require authentication.
GoFeed supports two authentication mechanisms:
- API Key based authentication: Every user is assigned an API key at the time of creation, which can be used to make subsequent API requests.
- JWT Token based authentication: A JWT token can also be obtained by providing username and password to the
v1/token
endpoint, and then used for authentication.
You can find examples of how to call the endpoints in the insomnia_collection.json
file in the root of the project. This file can be imported into Insomnia or Postman.
This project was created as a learning exercise for Go programming language and various technologies related to it. However, the project is fully functional and can be used as a standalone backend for RSS feed aggregation.
Although the project is fully functional, there is a lot of room for improvement and new features. If you are interested in learning Go and contributing to an open source project, please feel free to create an issue and start working on it. I will do my best to support you by answering any questions you may have.