JSFiddle - React, Tailwind, and code Playground

HTML

<canvas id="coin-spin"></canvas>

CSS

canvas {
	position:absolute;
	border:solid 1px #000;
	width:400px;
	height:400px;
	top:calc(50% - 200px);
	left:calc(50% - 200px);
	border-radius:4px;
}

JavaScript

var cvs = document.getElementById('coin-spin'),
		ctx = cvs.getContext('2d'),
		w = cvs.width = 400,
		h = cvs.height = 400,
		cx = w / 2,
		cy = h / 2,
		a = 0;

	var img = new Image();

	var loop = function() {
		// BG
		ctx.fillStyle = '#ccc';
		ctx.fillRect(0, 0, w, h);
		
		// draw image
		ctx.save();
		ctx.translate(cx, cy);
		ctx.rotate(Math.PI / 180 * a);
		ctx.translate(-cx, -cy);
		ctx.drawImage(img, cx - (img.width / 2), cy -  (img.height / 2));
		ctx.restore();

		// axis
		ctx.strokeStyle = '#000';
		
		ctx.beginPath();
		ctx.moveTo(cx, 0);
		ctx.lineTo(cx, h);
		ctx.stroke();
		
		ctx.beginPath();
		ctx.moveTo(0, cy);
		ctx.lineTo(w, cy);
		ctx.stroke();
		
		//mod angle
		a++;
		window.requestAnimationFrame(loop);
	};

	img.onload = function() {
		loop();
	};

	img.src = 'https://image.ibb.co/gqkeXx/coin.png';