diff --git a/docs/.gitignore b/docs/.gitignore
index 0428fdd82..cccef790c 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,3 +1,3 @@
node_modules/
build/
-package-list.json
\ No newline at end of file
+package-lock.json
\ No newline at end of file
diff --git a/docs/make.jl b/docs/make.jl
index d5f291c2b..cc68efa12 100644
--- a/docs/make.jl
+++ b/docs/make.jl
@@ -50,7 +50,7 @@ makedocs(;
repo = "github.com/asinghvi17/GeometryOps.jl",
),
pages=[
- "Home" => "index.md",
+ "Introduction" => "introduction.md",
"API Reference" => "api.md",
"Source code" => literate_pages,
],
diff --git a/docs/src/index.md b/docs/src/index.md
index 323014f76..2c5890c53 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -1,8 +1,47 @@
-```@meta
-CurrentModule = GeometryOps
-```
-
-# GeometryOps.jl
+```@raw html
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+
+hero:
+ name: "GeometryOps.jl"
+ text: ""
+ tagline: Blazing fast geometry operations in pure Julia
+ image:
+ src: /logo.png
+ alt: GeometryOps
+ actions:
+ - theme: brand
+ text: Introduction
+ link: /introduction
+ - theme: alt
+ text: View on Github
+ link: https://github.com/asinghvi17/GeometryOps.jl
+ - theme: alt
+ text: API Reference
+ link: /api
+
+features:
+ - icon:
+ title: Pure Julia code
+ details: Fast, understandable, extensible functions
+ link: /introduction
+ - icon:
+ title: Literate programming
+ details: Documented source code with examples!
+ link: /source/methods/clipping/cut
+ - icon:
+ title: Full integration with GeoInterface
+ details: Use any GeoInterface.jl-compatible geometry
+ link: https://juliageo.org/GeoInterface.jl/stable
+---
+
+
+
+
+
+
+
What is GeometryOps.jl?
GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.
@@ -12,18 +51,8 @@ Most of the usecases are driven by GIS and similar Earth data workflows, so this
We welcome contributions, either as pull requests or discussion on issues!
-## Main concepts
-
-### The `apply` paradigm
-
-!!! note
- See the [Primitive Functions](@ref) page for more information on this.
-The `apply` function allows you to decompose a given collection of geometries down to a certain level, and then operate on it.
+
-Functionally, it's similar to `map` in the way you apply it to geometries.
-
-### What's this `GeoInterface.Wrapper` thing?
-
-Write a comment about GeoInterface.Wrapper and why it helps in type stability to guarantee a particular return type.
+```
diff --git a/docs/src/introduction.md b/docs/src/introduction.md
new file mode 100644
index 000000000..9548e686e
--- /dev/null
+++ b/docs/src/introduction.md
@@ -0,0 +1,26 @@
+# Introduction
+
+
+GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.
+
+The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them [GeoInterface.jl](https://github.com/JuliaGeo/GeoInterface.jl)-compatible. We seem to be focusing primarily on 2/2.5D geometries for now.
+
+Most of the usecases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.
+
+We welcome contributions, either as pull requests or discussion on issues!
+
+## Main concepts
+
+### The `apply` paradigm
+
+!!! note
+ See the [Primitive Functions](/source/primitives) page for more information on this.
+
+The `apply` function allows you to decompose a given collection of geometries down to a certain level, and then operate on it.
+
+Functionally, it's similar to `map` in the way you apply it to geometries.
+
+### What's this `GeoInterface.Wrapper` thing?
+
+Write a comment about GeoInterface.Wrapper and why it helps in type stability to guarantee a particular return type.
+