diff --git a/basic-example/basic-example.js b/basic-example/basic-example.js
new file mode 100644
index 0000000..9462746
--- /dev/null
+++ b/basic-example/basic-example.js
@@ -0,0 +1,64 @@
+import * as d3 from "https://cdn.skypack.dev/d3@7";
+const url = "https://duolingo.checksch.de/duo_user_info.json";
+
+fetch(url)
+ .then((res) => res.json())
+ .then((out) => {
+ const langInfo = out.lang_data;
+
+ let langInfoPrepped = [];
+ Object.entries(langInfo).forEach((el) => {
+ let item = {};
+ item["name"] = el[1].learningLanguage;
+ item["count"] = el[1].xp;
+
+ // Filter irrelevant items
+ if (item["count"] > 500) {
+ langInfoPrepped.push(item);
+ }
+ });
+
+ const fn = (d) => d.count;
+ const data = d3.pie().value(fn)(langInfoPrepped);
+
+ const arc = d3
+ .arc()
+ .innerRadius(210)
+ .outerRadius(310)
+ .padRadius(300)
+ .padAngle(2 / 300)
+ .cornerRadius(8);
+
+ const js = d3.select("#js");
+ js.select(".loading").remove();
+
+ const svg = js
+ .append("svg")
+ .attr("viewBox", "-320 -320 640 640")
+ .attr("width", "400")
+ .attr("height", "400");
+
+ for (const d of data) {
+ svg.append("path").style("fill", "rebeccapurple").attr("d", arc(d));
+
+ const text = svg
+ .append("text")
+ .style("fill", "white")
+ .attr("transform", `translate(${arc.centroid(d).join(",")})`)
+ .attr("text-anchor", "middle");
+
+ text
+ .append("tspan")
+ .style("font-size", "24")
+ .attr("x", "0")
+ .text(d.data.name);
+
+ text
+ .append("tspan")
+ .style("font-size", "18")
+ .attr("x", "0")
+ .attr("dy", "1.3em")
+ .text(d.value);
+ }
+ })
+ .catch((err) => console.log(err));
\ No newline at end of file
diff --git a/basic-example/javascript.html b/basic-example/javascript.html
index 3ebea11..0206796 100644
--- a/basic-example/javascript.html
+++ b/basic-example/javascript.html
@@ -34,71 +34,6 @@
}
-
+