Goatstone Web Development

Contact

Work

A selection of projects, mostly built with JavaScript, TypeScript, React and D3. The featured projects are live and worth a look. The rest are open source repositories on GitHub.

Featured

Aaarto

Aaarto is an online drawing program that mints the artwork as an NFT. Art is built from circles and squares and saved as SVG, so the minted work keeps its structure. The SVG and its metadata are stored on IPFS, and minting goes through a user's wallet. Aaarto runs on the Polygon network, and minted art can be viewed on Rarible.

Aaarto ties the drawing tool to the token. Because the art is made only from circles and squares, the SVG describes its own content, which a grid of pixels cannot. Built with TypeScript, with wallet connection through MetaMask.

Visit aaarto.art · Source on GitHub

Screenshot of Aaarto: concentric colored circles on a canvas with drawing tools and a Mint The Aaarto button

Umiña Achala

A marketplace concept for stones and jewelry from Peru, built around provenance: each piece is traced from mine to craft with immutable records. The site is currently a demonstration, with a public launch planned.

The problem is that Peruvian law requires the origin of a stone or mineral to be legally sourced and documented. Each piece becomes a token on Hedera, with provenance details such as the mining concession and artisan registry anchored in its metadata. Later events, such as mounting, sale and export, are notarized on the Hedera Consensus Service. Built with TypeScript.

My role: I created the concept and the business idea, designed and built the website, and wrote a smart contract for Hedera, running on the Hedera testnet.

Visit umina-achala.pe · Source on GitHub

Screenshot of the Umiña Achala home page showing amethyst, quartz and chrysocolla listings

2DPhysics Data

2DPhysics Data is an exploration of visualizing data with a 2D physics layout. The data displayed is 100 of the Heaviest Meteorites from NASA's Open Data Portal.

Each meteorite is a physical body that moves under a 2D physics engine, and clicking or tabbing to a body shows its details. The engine draws to a canvas, and its values drive a second layer of DOM elements, so variable-length text lays out naturally. The layout takes its inspiration from the D3 force layout. Built with React, Matter.js, RxJS and Fluent UI.

Launch 2DPhysics Data · Source on GitHub

Screenshot of 2DPhysics Data: meteorites rendered as bodies in a 2D physics layout

View GIBS

View GIBS is a tool for viewing satellite images provided by NASA's Global Imagery Browse Services (GIBS) system.

It is a simplified take on NASA's Worldview application, aimed at making satellite imagery quicker to search and browse. The map is a single React component wrapping OpenLayers, and RxJS carries messages between components. Built with TypeScript, React, OpenLayers and Fluent UI.

Launch View GIBS

Screenshot of View GIBS showing NASA satellite imagery of Earth

Data visualization and maps

react-d3

Techniques for using React, TypeScript and D3.js together.

Source on GitHub

d3-geo-react-color

D3 Geo rendering a globe image, with React controls.

Source on GitHub

GPS tools

Scripts to work with GPS data.

Source on GitHub

data-look

A pattern for displaying data with RxJS and React.

Source on GitHub

d3-frame

Methods for using the D3 visualization library inside a framework.

Source on GitHub

Devices, IoT and experiments

laser-image

A Python script for converting images into SVG files for laser cutting.

Source on GitHub

rgb-iot

A system of applications that controls LEDs on remote devices, with a Node agent sending MQTT topics on behalf of a user.

Source on GitHub

AndroidSensorFusion

Get, fuse and display sensor information for Android.

Source on GitHub

AmebGame

A game where the user navigates a creature, Ameb, to catch food.

Source on GitHub

svg_sample

SVG animation samples.

Source on GitHub