JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://threejs.org/build/three.min.js"></script>

CSS

body {
    background-color: #000;
    margin: 0px;
    overflow: hidden;
}

JavaScript

// Work-around to render a Cabinet Oblique Projection
// Use an orthographic camera, and apply a shear matrix to the geometry before rendering

// dom
var container = document.createElement( 'div' );
document.body.appendChild( container );

// renderer
var renderer = new THREE.WebGLRenderer( );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );

// scene
var scene = new THREE.Scene();

// camera
var d = window.innerWidth / window.innerHeight;
var camera = new THREE.OrthographicCamera( -10 * d, 10 * d, 10, -10, 1, 1000 );
camera.position.set( 0, 0, 20 ); // looking down the z-axis
camera.lookAt( scene.position );

// material
var material = new THREE.MeshNormalMaterial( { overdraw: 0.5 } );

// geometry
var geometry = new THREE.BoxGeometry( 5, 5, 5 );

// mesh
var mesh = new THREE.Mesh( geometry, material ); // centered at the origin
scene.add( mesh );

// shear matrix
// ref: http://www.flipcode.com/documents/matrfaq.html#Q43
//        | 1    Syx  Szx  0 |
//        |                  |
//        | Sxy  1    Szy  0 |
//    M = |                  |
//        | Sxz  Syz  1    0 |
//        |                  |
//        | 0    0    0    1 |
//        |                  |

var alpha = Math.PI / 6; // or Math.PI / 4

var Syx = 0,
    Szx = - 0.5 * Math.cos( alpha ),
    Sxy = 0,
    Szy = - 0.5 * Math.sin( alpha ),
    Sxz = 0,
    Syz = 0;

var matrix = new THREE.Matrix4();

matrix.set(   1,   Syx,  Szx,  0,
            Sxy,     1,  Szy,  0,
            Sxz,   Syz,   1,   0,
              0,     0,   0,   1  );

// apply shear matrix to geometry                  
mesh.geometry.applyMatrix( matrix ); // this is the work-around hack <======================

// render
renderer.render( scene, camera );