Curi + Hickory

Curi is a single-page application router that doesn't care how you render. This was created while working on React Router, but seeing a steady stream of similar issues pop up that React Router cannot handle cleanly. From there the router evolved beyond being a router for React application to a router for any application. It provides "official" packages for React (and React Native), Vue, and Svelte, but there is nothing stopping it from being used with Angular, any other framework, or just with vanilla JavaScript.

Hickory is a set of JavaScript packages that make Curi work. This includes a package that wraps the browser native History API, but also an in-memory version for using on a Node server or anywhere else you can run JavaScript, but the DOM does not exist.

In addition to the examples on the Curi documentation site, Glitch (a clone) provides a good demo of how Curi works.


Foraging is a suite of projects that make it easy to collect data from web pages. With Foraging, rules are made to describe the elements in the page with the desired content and what data to collect from them.

Forager is a Chrome extension that enables a user to create rules by selecting the content in a page that they want to collect for. Forager's UI is built with React and D3.

Granary is a Flask server that communicates with the Forager extension so that users can store their rule sets locally.

Gatherer is a Python package that uses the rule sets created by Forager to actually visit web pages and collect the data.


Cryptonite teaches basic cryptography techniques and provides challenges for users to test their knowledge. The front-end is built with React, while the back-end is built with Django.

More? Check out GitHub.