JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div ng-app="AlbumFinder" ng-controller="AlbumsController" class='main-container'>  
<h3>Album Finder</h3>
<hr>
  <div class="input-group">
    <input type="text" class="form-control" placeholder="Enter artist name" ng-model='searchPhrase' ng-keypress="enter($event)">
    <span class="input-group-btn">
      <button class="btn btn-default" type="button" ng-click='getAlbum()'> <span class="glyphicon glyphicon-search" aria-hidden="true"></span> Search</button>
    </span>
  </div>

  <div class='center-container'>
     <span style="display:none;" id='load'></span>
   </div>
  
  <div ng-show='results.length'>
  <p class='results'>Showing {{albums.resultCount}} results</p>
  <div class="albums-container heading">
   <span class='center-text'>Album Title</span>
     <span class='center-text'>Cover</span>
  </div> 
   </div>
   <div class="albums-container" ng-repeat='result in results'>
     <div>{{result.collectionName}}</div>
     <div>
       <a target="_blank" ng-href='{{result.collectionViewUrl}}' title='Click to see album information'>
         <img ng-src='{{result.artworkUrl100}}'>
       </a>
     </div>
   </div>
   
   <div class="alert-msg" ng-show='error'>
     <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
     <span ng-bind='error_msg'></span>
   </div>
  
</div>

CSS

.main-container{
  margin: 20px 40px;
}

.input-group{
  margin-bottom: 15px; 
  margin-top: 25px;
}

.albums-container {
  margin: 0px 50px;
  display: grid;
  grid-template-columns: 50% 100px;
  align-items: center;
  height: 120px;
  grid-gap: 20px 30px;
}

.albums-container.heading{
   height: auto;
}

.center-text{
  text-align:center;
  font-size: 18px;
  font-weight: bold;
}

.results{
  font-size: 12px;
  color: grey;
  margin-bottom: 30px;
}

.alert-msg{
  color: #a94442;
  margin-top: 10px;
}

.center-container{
  display: flex;
  justify-content: center;
}

#load{
   width: 40px;
   height: 40px;
  background-image:...

JavaScript

/* 
1. Click 'Fork' from the top menu and generate your own JSFiddle link. Add all your code below the instructions. Be sure to click 'Update' when your work is done.

2. Create an Angular application. Call it 'AlbumFinder'.

3. Create a Controller, call it 'AlbumsController'. Use this controller however you see fit.

4. Create a Service called 'iTunesService' that calls the iTunes API (the API path is given below). Replace ARTIST_NAME within the API path with the search phrase coming from the user input field.

5. When the Search button is clicked, make a call to the API and display the list of albums, including the album name and album cover inside .albums-container in a grid. Use any CSS technique you are comfortable with (Note: The API will return a list of albums based on the search result. Use your skills to find out what the iTunes API data structure looks like and extract the relevant data from it).

6. BONUS: Make the grid look presentable and estatically pleasing.

7. BONUS: How would you improve the User Experience?

8. Click 'Update' from the top menu and share the link.
*/
var app = angular.module('AlbumFinder', []);

app.service('iTunesService', function($http) {
	return {
  	request: function(ARTIST_NAME) {
    	var API_BASE = 'https://itune.apple.com/search?entity=album&term=' + ARTIST_NAME;
      return $http({
      					method: "GET",
  	          	url: API_BASE
  	         	})
              .then(function (response) {
                return response;
              }, function(err){
              	return err;
              });
        }
     }
});

app.controller('AlbumsController', function($scope, iTunesService) {
  $scope.searchPhrase = "";
 
  $scope.getAlbum = function(){
  	$("#load").show();
  	$scope.results = [];
  	$scope.error = false;
    
  	iTunesService
  		.request($scope.searchPhrase)
  		.then(function(response) {
    			$scope.albums = response.data;
          $scope.results = $scope.albums.results;
  	   ...