diff --git a/purescript/README.md b/purescript/README.md
new file mode 100644
index 0000000..5dd6ff9
--- /dev/null
+++ b/purescript/README.md
@@ -0,0 +1,19 @@
+# Purescript
+
+| Name                                     | Description                                                                                                          |
+| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
+| [abilities](./abilities/)                | Typeclass-dictionary abuse enabling the creation of a barebones effect system                                        |
+| [bug](./bug/)                            | Unknown reason of existence                                                                                          |
+| [canopy](./canopy/)                      | Unfinished attempt at writing a [Diplomacy](<https://en.wikipedia.org/wiki/Diplomacy_(game)>) adjudecation engine    |
+| [compose](./compose/)                    | Overload do-notation for function composition and existential types                                                  |
+| [ecs](./ecs/)                            | Purescript-wrapper for [thi.ng/ecs](thi.ng/ecs)                                                                      |
+| [existentials-blog](./existentials-blog) | Perhaps supposed to turn into a blog about existentials?                                                             |
+| [existentials](./existentials)           | Experiment regarding the Church-encoding of existential types                                                        |
+| [gadts](./gadts)                         | Experiment regarding ways to encode GADTs in Purescript                                                              |
+| [lune](./lune)                           | Failed effect-system project                                                                                         |
+| [maps](./maps)                           | Attempt at implementing maps with membership proofs                                                                  |
+| [proofs](./proofs)                       | Attempt at expressing mathematical proofs using Purescript's effect system                                           |
+| [purpleflow](./purpleflow)               | Unfinished dependently-typed programming language                                                                    |
+| [sprint](./sprint)                       | Failled effect-system based on typelevel lists                                                                       |
+| [streams](./streams)                     | Playing with `purescript-pipes`                                                                                      |
+| [typelevel](./typelevel)                 | Typelevel naturals, vectors, sum-types, orderings and lambda-calculus evaluation and a value-level bounded-type GADT |
diff --git a/purescript/abilities/README.md b/purescript/abilities/README.md
new file mode 100644
index 0000000..ab7534a
--- /dev/null
+++ b/purescript/abilities/README.md
@@ -0,0 +1,12 @@
+# Abilities
+
+Implementation of my idea of abusing typeclass-dictionaries in order to create a barebones effect system.
+
+## File structure
+
+| File                                   | Description                                                      |
+| -------------------------------------- | ---------------------------------------------------------------- |
+| [Abilities.purs](./src/Abilities.purs) | Overloaded pure do-notation enabling implicit dictionary passing |
+| [Ask.purs](./src/Ask.purs)             | Reader-monad effect                                              |
+| [Io.purs](./src/Ask.purs)              | IO-monad effect                                                  |
+| [Main.purs](./src/Main.purs)           | Demo showcasing usage of `IO` together with `Ask`                |
diff --git a/purescript/canopy/README.md b/purescript/canopy/README.md
index 8764694..6d7a3e5 100644
--- a/purescript/canopy/README.md
+++ b/purescript/canopy/README.md
@@ -4,9 +4,9 @@ This directory contains an (unfinished) attempt at writing a [Diplomacy](<https:
 
 ## File structure
 
-| File                                 | Description                                                                    |
-| ------------------------------------ | ------------------------------------------------------------------------------ |
-| [Tagless.purs](./src/Tagless.purs)   | Experiments regarding tagless representations of inductive types               |
-| [Graph.purs](./src/Graph.purs)       | Simple directed-graph type                                                     |
-| [DipMap.purs](./src/DipMap.purs)     | Representation for diplomacy maps                                              |
-| [DipMap.purs](./src/Adjudecate.purs) | Types for logical propositions. The adjudecation logic was supposed to go here |
+| File                                     | Description                                                                    |
+| ---------------------------------------- | ------------------------------------------------------------------------------ |
+| [Tagless.purs](./src/Tagless.purs)       | Experiments regarding tagless representations of inductive types               |
+| [Graph.purs](./src/Graph.purs)           | Simple directed-graph type                                                     |
+| [DipMap.purs](./src/DipMap.purs)         | Representation for diplomacy maps                                              |
+| [Adjudecate.purs](./src/Adjudecate.purs) | Types for logical propositions. The adjudecation logic was supposed to go here |
diff --git a/purescript/compose/README.md b/purescript/compose/README.md
new file mode 100644
index 0000000..1903417
--- /dev/null
+++ b/purescript/compose/README.md
@@ -0,0 +1,13 @@
+# Compose
+
+Overload do-notation for:
+
+- function composition
+- usage of existential types
+
+## File structure
+
+| File                               | Description                                 |
+| ---------------------------------- | ------------------------------------------- |
+| [Compose.purs](./src/Compose.purs) | Function composition do-notation            |
+| [Main.purs](./src/Main.purs)       | Demo usage and existential-type do-notation |
diff --git a/purescript/ecs/README.md b/purescript/ecs/README.md
new file mode 100644
index 0000000..ec11e78
--- /dev/null
+++ b/purescript/ecs/README.md
@@ -0,0 +1,10 @@
+# Ecs
+
+Purescript-wrapper for [thi.ng/ecs](thi.ng/ecs)
+
+## File structure
+
+| File                               | Description                                             |
+| ---------------------------------- | ------------------------------------------------------- |
+| [Types.purs](./src/Types.purs)     | Type definitions                                        |
+| [Keys.purs](./src/Utils/Keys.purs) | Extract value-level arrays containing the keys of a row |
diff --git a/purescript/typelevel/README.md b/purescript/typelevel/README.md
new file mode 100644
index 0000000..f8530d8
--- /dev/null
+++ b/purescript/typelevel/README.md
@@ -0,0 +1,14 @@
+# Typelevel
+
+Experiments in the realm of typelevel Purescript computation.
+
+## File structure
+
+| File                                 | Description                                        |
+| ------------------------------------ | -------------------------------------------------- |
+| [Ast.purs](./src/Ast.purs)           | Typelevel sum-types and a bit of typelevel parsing |
+| [Num.purs](./src/Num.purs)           | Typelevel naturals                                 |
+| [Vec.purs](./src/Vec.purs)           | Typelevel fixed-size lists                         |
+| [Ordering.purs](./src/Ordering.purs) | Typelevel orderings                                |
+| [Term.purs](./src/Term.purs)         | Typelevel lambda-calculus evaluation               |
+| [Fin.purs](./src/Fin.purs)           | Bounded naturals using a GADT representation       |