Skip to content

manasbiparajuli/manasbi-chautaari-api

Repository files navigation

Manasbi Chautaari API

Table Of Contents

Introduction

Manasbi Chautaari is a podcast that I founded and host on Anchor platform. Although the podcast is already available on different popular platforms such as Spotify, Apple Podcasts and Google Podcasts, as a Software Developer, I wanted to experiment with my podcast RSS feed and tailor to my needs either via a web application, mobile app or even streamable under Manasbi Chautaari name.

Manasbi Chautaari API serves the endpoints to getting the metadata for the podcast. The application is written in Java using Spring Boot framework. It consumes public RSS feed for the podcast and uses JAXB to unmarshall the XML content to Java POJOs.

The application exposes two endpoints defined in PodcastContentController

Environment Variables

To run this project, pass the following environment variables

  • spring.profiles.active : valid values are dev, local, prod

Run Locally

Clone the project

  git clone https://github.com/manasbiparajuli/manasbi-chautaari-api

Go to the project directory

  cd manasbi-chautaari-api

Installation

Open the project on IntelliJ as a maven project. As the project uses JDK19, ensure that IntelliJ is configured to run the project using SDK of Java 19. For example, if you have Amazon Corretto 19 installed on your machine, you can configure as below:

File -> Project Structure -> SDK -> corretto-19

To comply with coding standards, install the following plugins:

  • google-java-format
  • SonarLint
  • Pom Format
  • QAPlug
  • QAPlug - Checkstyle
  • QAPlug - FindBugs
  • QAPlug - PMD
  • CheckStyle-IDEA

The default entry for the application is under ManasbiChautaariApiApplicationClass.java The default spring profile is set to local and can be overwritten by setting spring profile in environment variable.

To run the application from command line:

  mvn spring-boot:run

Swagger Documentation

The default root directory for the project redirects to Swagger UI home page and can be accessed at {domain}/api/v1/swagger-ui/index.html

API Reference

Get metadata about the podcast channel

  GET /api/v1/channel

Get details about the podcast episodes

  GET /api/v1/episodes

Actuators

The project has configured actuators using Spring Actuator and only exposes the following endpoints: health, info. The endpoints can be accessed at {domain}/actuator/{endpoint}

Code Coverage

The project uses Jacoco plugin to generate code coverage. Locations for coverage report can be found as below:

  • In binary format: target/jacoco.exec
  • In readable formats such as XML, CSV and HTML target/site/jacoco/index.html

Deployment

Application has been deployed to Heroku with automatic deployments from master branch.

Authors

Contributing

Contributions are always welcome!

See CONTRIBUTING.md for ways to get started.

Please adhere to this project's code of conduct.

Feedback

If you have any feedback, please open a GitHub issue and I will respond to it.

Manasbi Chautaari Podcast

About

Java Spring Boot API endpoints exposing data about Manasbi Chautaari Podcast

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published