diff --git a/apps/site/public/icons/technologies/drizzle.svg b/apps/site/public/icons/technologies/drizzle.svg new file mode 100644 index 0000000000..28a6401c96 --- /dev/null +++ b/apps/site/public/icons/technologies/drizzle.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/site/public/icons/technologies/drizzle_light.svg b/apps/site/public/icons/technologies/drizzle_light.svg new file mode 100644 index 0000000000..fdacf2c789 --- /dev/null +++ b/apps/site/public/icons/technologies/drizzle_light.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/site/public/icons/technologies/kysely.svg b/apps/site/public/icons/technologies/kysely.svg new file mode 100644 index 0000000000..5ca04a32b0 --- /dev/null +++ b/apps/site/public/icons/technologies/kysely.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/icons/technologies/prisma.svg b/apps/site/public/icons/technologies/prisma.svg index e250c0f520..74e33c975b 100644 --- a/apps/site/public/icons/technologies/prisma.svg +++ b/apps/site/public/icons/technologies/prisma.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/apps/site/public/icons/technologies/prisma_light.svg b/apps/site/public/icons/technologies/prisma_light.svg new file mode 100644 index 0000000000..5f267ab610 --- /dev/null +++ b/apps/site/public/icons/technologies/prisma_light.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/icons/technologies/typeorm.svg b/apps/site/public/icons/technologies/typeorm.svg new file mode 100644 index 0000000000..e91fbd55c8 --- /dev/null +++ b/apps/site/public/icons/technologies/typeorm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_1.svg b/apps/site/public/illustrations/postgres/postgres_1.svg new file mode 100644 index 0000000000..e946a0ab86 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_1_light.svg b/apps/site/public/illustrations/postgres/postgres_1_light.svg new file mode 100644 index 0000000000..ba75639f27 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1_light.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_1_mobile.svg b/apps/site/public/illustrations/postgres/postgres_1_mobile.svg new file mode 100644 index 0000000000..8c3fcd19e8 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1_mobile.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_1_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_1_mobile_light.svg new file mode 100644 index 0000000000..b918543486 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1_mobile_light.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_1_tablet.svg b/apps/site/public/illustrations/postgres/postgres_1_tablet.svg new file mode 100644 index 0000000000..d9d4cf6487 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1_tablet.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_1_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_1_tablet_light.svg new file mode 100644 index 0000000000..a35505955f --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_1_tablet_light.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_2.svg b/apps/site/public/illustrations/postgres/postgres_2.svg new file mode 100644 index 0000000000..4f10b5eedf --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_2_light.svg b/apps/site/public/illustrations/postgres/postgres_2_light.svg new file mode 100644 index 0000000000..2029d33ac1 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2_light.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_2_mobile.svg b/apps/site/public/illustrations/postgres/postgres_2_mobile.svg new file mode 100644 index 0000000000..27599ff27d --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2_mobile.svg @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_2_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_2_mobile_light.svg new file mode 100644 index 0000000000..59f4333153 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2_mobile_light.svg @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_2_tablet.svg b/apps/site/public/illustrations/postgres/postgres_2_tablet.svg new file mode 100644 index 0000000000..eb08722281 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2_tablet.svg @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_2_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_2_tablet_light.svg new file mode 100644 index 0000000000..8bec1f66c8 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_2_tablet_light.svg @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3.svg b/apps/site/public/illustrations/postgres/postgres_3.svg new file mode 100644 index 0000000000..9c8652a6bd --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3_light.svg b/apps/site/public/illustrations/postgres/postgres_3_light.svg new file mode 100644 index 0000000000..cddb8b10dd --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3_light.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3_mobile.svg b/apps/site/public/illustrations/postgres/postgres_3_mobile.svg new file mode 100644 index 0000000000..1f69d0414e --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3_mobile.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_3_mobile_light.svg new file mode 100644 index 0000000000..7b71e07180 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3_mobile_light.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3_tablet.svg b/apps/site/public/illustrations/postgres/postgres_3_tablet.svg new file mode 100644 index 0000000000..74c88c64e9 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3_tablet.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_3_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_3_tablet_light.svg new file mode 100644 index 0000000000..5050f7e18d --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_3_tablet_light.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4.svg b/apps/site/public/illustrations/postgres/postgres_4.svg new file mode 100644 index 0000000000..6cb1538bcb --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4_light.svg b/apps/site/public/illustrations/postgres/postgres_4_light.svg new file mode 100644 index 0000000000..ef51f9ac39 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4_light.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4_mobile.svg b/apps/site/public/illustrations/postgres/postgres_4_mobile.svg new file mode 100644 index 0000000000..6996398ef1 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4_mobile.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_4_mobile_light.svg new file mode 100644 index 0000000000..4d5b15e158 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4_mobile_light.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4_tablet.svg b/apps/site/public/illustrations/postgres/postgres_4_tablet.svg new file mode 100644 index 0000000000..5cab577f1a --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4_tablet.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_4_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_4_tablet_light.svg new file mode 100644 index 0000000000..f5413032ba --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_4_tablet_light.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5.svg b/apps/site/public/illustrations/postgres/postgres_5.svg new file mode 100644 index 0000000000..68576c1f91 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5_light.svg b/apps/site/public/illustrations/postgres/postgres_5_light.svg new file mode 100644 index 0000000000..fe8d97bff3 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5_light.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5_mobile.svg b/apps/site/public/illustrations/postgres/postgres_5_mobile.svg new file mode 100644 index 0000000000..3695b0b928 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5_mobile.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_5_mobile_light.svg new file mode 100644 index 0000000000..afb15a5d5d --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5_mobile_light.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5_tablet.svg b/apps/site/public/illustrations/postgres/postgres_5_tablet.svg new file mode 100644 index 0000000000..baab1458e0 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5_tablet.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_5_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_5_tablet_light.svg new file mode 100644 index 0000000000..af078c2c5c --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_5_tablet_light.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_6.svg b/apps/site/public/illustrations/postgres/postgres_6.svg new file mode 100644 index 0000000000..d0a0039b54 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_6_light.svg b/apps/site/public/illustrations/postgres/postgres_6_light.svg new file mode 100644 index 0000000000..afe6e534fe --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6_light.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_6_mobile.svg b/apps/site/public/illustrations/postgres/postgres_6_mobile.svg new file mode 100644 index 0000000000..a04bfccdb7 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6_mobile.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_6_mobile_light.svg b/apps/site/public/illustrations/postgres/postgres_6_mobile_light.svg new file mode 100644 index 0000000000..8567da772c --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6_mobile_light.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_6_tablet.svg b/apps/site/public/illustrations/postgres/postgres_6_tablet.svg new file mode 100644 index 0000000000..589bf91f4d --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6_tablet.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_6_tablet_light.svg b/apps/site/public/illustrations/postgres/postgres_6_tablet_light.svg new file mode 100644 index 0000000000..66a2654c13 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_6_tablet_light.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +
diff --git a/apps/site/public/illustrations/postgres/postgres_7.svg b/apps/site/public/illustrations/postgres/postgres_7.svg new file mode 100644 index 0000000000..0534a3aaca --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_7.svg @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_7_light.svg b/apps/site/public/illustrations/postgres/postgres_7_light.svg new file mode 100644 index 0000000000..0721d658d2 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_7_light.svg @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/site/public/illustrations/postgres/postgres_8.svg b/apps/site/public/illustrations/postgres/postgres_8.svg new file mode 100644 index 0000000000..1a745032bd --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_8.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/illustrations/postgres/postgres_8_light.svg b/apps/site/public/illustrations/postgres/postgres_8_light.svg new file mode 100644 index 0000000000..832d1ba19b --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_8_light.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/illustrations/postgres/postgres_9.svg b/apps/site/public/illustrations/postgres/postgres_9.svg new file mode 100644 index 0000000000..e4353080f8 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_9.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/illustrations/postgres/postgres_9_light.svg b/apps/site/public/illustrations/postgres/postgres_9_light.svg new file mode 100644 index 0000000000..5415f4d1e1 --- /dev/null +++ b/apps/site/public/illustrations/postgres/postgres_9_light.svg @@ -0,0 +1 @@ + diff --git a/apps/site/public/og/og-postgres.png b/apps/site/public/og/og-postgres.png new file mode 100644 index 0000000000..f6b34c793a Binary files /dev/null and b/apps/site/public/og/og-postgres.png differ diff --git a/apps/site/src/app/postgres/page.tsx b/apps/site/src/app/postgres/page.tsx new file mode 100644 index 0000000000..d069e0ba5b --- /dev/null +++ b/apps/site/src/app/postgres/page.tsx @@ -0,0 +1,345 @@ +import type { Metadata } from "next"; +import { Button, Card, Action } from "@prisma/eclipse"; +import { cn } from "@/lib/cn"; +import { CardSection } from "@/components/homepage/card-section/card-section"; +import { PostgresTabs } from "../../components/postgres"; +import postgresData from "../../data/postgres.json"; +import { LogoGrid } from "@/components/homepage/card-section/logo-grid"; +import { EnterpriseScrollCarousel } from "@/components/enterprise/scroll-carousel"; +import { Youtube } from "@prisma-docs/ui/components/youtube"; + +const CONSOLE_URL = + "https://console.prisma.io/login?utm_source=website&utm_medium=postgres&utm_campaign=cta"; + +const twoCol = [ + { + content: ( + <> +

+ The database
+ you already know +

+

+ This is the mature, proven, and production-tested PostgreSQL millions + of developers already rely on. Standard SQL and wire protocol, + Postgres extensions like pgvector, and data import with pg_dump. +

+ + ), + imageUrl: "/illustrations/postgres/postgres_7", + imageAlt: "Postgres experience", + mobileImageUrl: "/illustrations/postgres/postgres_7", + mobileImageAlt: "Postgres experience", + logos: null, + useDefaultLogos: true, + noShadow: true, + visualPosition: "right" as const, + visualType: "image" as const, + step: "fa-regular fa-database", + }, + { + content: ( + <> +

+ Instant provisioning with +
+ zero configuration +

+

+ Handles connection pooling automatically, and runs on bare metal and + unikernels for maximum performance. +

+ + ), + imageUrl: "/illustrations/postgres/postgres_8", + imageAlt: "Postgres experience", + mobileImageUrl: "/illustrations/postgres/postgres_8", + mobileImageAlt: "Postgres experience", + noShadow: true, + logos: null, + useDefaultLogos: true, + visualPosition: "right" as const, + visualType: "image" as const, + step: "fa-regular fa-rocket-launch", + }, + { + content: ( + <> +

+ Production-ready
+ from day one +

+

+ Automated backups, encryption at rest and in transit, full tenant + isolation and enterprise-grade compliance. Everything you need to ship + with confidence, managed automatically. +

+ + ), + imageUrl: "/illustrations/postgres/postgres_9", + imageAlt: "Postgres experience", + mobileImageUrl: "/illustrations/postgres/postgres_9", + mobileImageAlt: "Postgres experience", + noShadow: true, + logos: null, + useDefaultLogos: true, + visualPosition: "right" as const, + visualType: "image" as const, + step: "fa-regular fa-shield-check", + }, +]; +export const metadata: Metadata = { + title: "Prisma Postgres | Instant Global Databases", + description: + "Free to start, no setup, no commitments. Easily grow your database as your app scales.", + alternates: { + canonical: "https://www.prisma.io/postgres", + }, + openGraph: { + title: "Prisma Postgres | Instant Global Databases", + description: + "Free to start, no setup, no commitments. Easily grow your database as your app scales.", + url: "https://www.prisma.io/postgres", + images: [ + { + url: "/og/og-postgres.png", + width: 1200, + height: 630, + alt: "Prisma Postgres | Instant Global Databases", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: "Prisma Postgres | Instant Global Databases", + description: + "Free to start, no setup, no commitments. Easily grow your database as your app scales.", + images: ["/og/og-postgres.png"], + }, +}; + +export default async function SiteHome() { + return ( +
+
+
+
+
+
+ + Prisma Postgres +
+

+ The fastest way
+ to real Postgres +

+
+

+ Build, test and ship faster with zero infrastructure to manage. +

+
+ + +
+
+
+
+
+ +
+
+ +
+
+

+ Postgres that fits your stack +

+
+
+ {postgresData.stack.map((card, index) => { + const first = index === 0; + return ( + +
+
+
+
+ + + +

+ {card.title} +

+
+

+ {card.subtitle} +

+
+ {typeof card.image === "string" && + card.image === "logo-grid" ? ( +
+ +
+ ) : null} +
+ {typeof card.image === "string" && + card.image === "logo-bar" && + card.logos ? ( +
+ +
+ ) : null} +
+
+ ); + })} +
+
+
+
+

+ Real Postgres. Better experience. +

+ +
+
+
+
+

+ Pay as you scale +

+
+

+ Usage-based pricing, with a generous free tier. 
Spend limits + included, so you never get surprised. +

+ +
+
+
+
+
+

+ Made for every kind of app +

+ +
+
+ +
+
+
+
+

+ See Postgres in action +

+

+ See how to get started in just a couple of minutes, with Prisma + Postgres. +

+
+ + +
+ +
+ +
+
+
+
+
+
+
+

+ Try Prisma Postgres +

+

+ Deploy a Postgres database instantly. +

+
+
+ + +
+
+ Free to get started, no credit card needed. +
+
+
+
+
+ ); +} diff --git a/apps/site/src/components/enterprise/carousel-item.tsx b/apps/site/src/components/enterprise/carousel-item.tsx index d576b810e5..3142121dd0 100644 --- a/apps/site/src/components/enterprise/carousel-item.tsx +++ b/apps/site/src/components/enterprise/carousel-item.tsx @@ -10,27 +10,34 @@ export interface EnterpriseCarouselCard { export const CarouselItem = ({ card, className, + color, }: { card: EnterpriseCarouselCard; className?: string; + color?: "ppg" | "orm"; }) => { return (
- +

{card.title}

-

+

); diff --git a/apps/site/src/components/enterprise/scroll-carousel.tsx b/apps/site/src/components/enterprise/scroll-carousel.tsx index ffa8744ea5..0639fc6c94 100644 --- a/apps/site/src/components/enterprise/scroll-carousel.tsx +++ b/apps/site/src/components/enterprise/scroll-carousel.tsx @@ -7,6 +7,7 @@ import { cn } from "@/lib/cn"; interface EnterpriseScrollCarouselProps { items: EnterpriseCarouselCard[]; className?: string; + color?: "ppg" | "orm"; } interface NavButtonProps { @@ -43,6 +44,7 @@ const NavButton = ({ export const EnterpriseScrollCarousel = ({ items, className, + color, }: EnterpriseScrollCarouselProps) => { const scrollRef = useRef(null); const [isAtStart, setIsAtStart] = useState(true); @@ -67,8 +69,9 @@ export const EnterpriseScrollCarousel = ({ const scrollByItem = (direction: -1 | 1) => { const container = scrollRef.current; - const carouselItems = - container?.querySelectorAll("[data-carousel-item]"); + const carouselItems = container?.querySelectorAll( + "[data-carousel-item]", + ); if (!container || !carouselItems?.length) { return; @@ -117,7 +120,9 @@ export const EnterpriseScrollCarousel = ({ container.addEventListener("scroll", updateScrollBounds, { passive: true }); window.addEventListener("resize", updateScrollBounds); resizeObserver?.observe(container); - Array.from(container.children).forEach((child) => resizeObserver?.observe(child)); + Array.from(container.children).forEach((child) => + resizeObserver?.observe(child), + ); return () => { container.removeEventListener("scroll", updateScrollBounds); @@ -154,7 +159,11 @@ export const EnterpriseScrollCarousel = ({ data-carousel-item className="min-w-0 snap-start" > - + ))} diff --git a/apps/site/src/components/homepage/card-section/card-section.tsx b/apps/site/src/components/homepage/card-section/card-section.tsx index 987d6c18ef..03fee4e849 100644 --- a/apps/site/src/components/homepage/card-section/card-section.tsx +++ b/apps/site/src/components/homepage/card-section/card-section.tsx @@ -1,9 +1,11 @@ "use client"; import { LogoGrid } from "./logo-grid"; -import { ReactNode, useEffect, useState } from "react"; +import { ReactNode, useEffect, useState, useRef } from "react"; +import { useInView } from "react-intersection-observer"; import { cn } from "../../../lib/cn"; import { useTheme } from "@prisma-docs/ui/components/theme-provider"; +import { Action } from "@prisma/eclipse"; interface TwoColumnItem { content: ReactNode; @@ -20,6 +22,7 @@ interface TwoColumnItem { visualPosition: "left" | "right"; visualType: "logoGrid" | "image" | "other"; noShadow?: boolean; + step?: string; } interface CardSectionProps { @@ -29,88 +32,180 @@ interface CardSectionProps { export const CardSection = ({ cardSection }: CardSectionProps) => { const { resolvedTheme } = useTheme(); const [mounted, setMounted] = useState(false); + const [active, setActive] = useState(0); + const [progressHeight, setProgressHeight] = useState(0); + const sectionRefs = useRef<(HTMLElement | null)[]>([]); + const containerRef = useRef(null); + + // Safe guard against empty array + const hasSteps = Boolean(cardSection[0]?.step); useEffect(() => { setMounted(true); }, []); + useEffect(() => { + if (!hasSteps || !containerRef.current) return; + + const scrollWatcher = () => { + requestAnimationFrame(() => { + if (!containerRef.current) return; + + const container = containerRef.current; + const position = + container.getBoundingClientRect().y * -1 + window.innerHeight * 0.8; + + setProgressHeight(position); + + // Find the section closest to the center of the viewport + const viewportCenter = window.innerHeight / 2; + let closestIndex = 0; + let minDistance = Infinity; + + sectionRefs.current.forEach((section, index) => { + if (!section) return; + + const rect = section.getBoundingClientRect(); + const sectionCenter = rect.top + rect.height / 2; + const distance = Math.abs(sectionCenter - viewportCenter); + + if (distance < minDistance) { + minDistance = distance; + closestIndex = index; + } + }); + + setActive(closestIndex); + }); + }; + + window.addEventListener("scroll", scrollWatcher); + scrollWatcher(); + + return () => window.removeEventListener("scroll", scrollWatcher); + }, [cardSection]); + return ( -
- {cardSection.map((item, index) => ( -
-
+ {hasSteps && ( +
+ )} + {cardSection.map((item, index) => { + return ( +
{ + sectionRefs.current[index] = el; + }} + className={ + "py-6 md:py-8 lg:py-12 my-6 md:my-8 lg:my-12 w-full overflow-visible" + } >
- {item.content} -
-
- {item.other && item.visualType === "other" && ( -
- {item.other} -
- )} - {item.visualType === "logoGrid" && item.useDefaultLogos && ( - - )} - {item.visualType === "image" && item.imageUrl && ( -
- + - {item.mobileImageUrl && ( - + )} +
+
+ {item.content} +
+
+ {item.other && item.visualType === "other" && item.other} + {item.visualType === "logoGrid" && item.useDefaultLogos && ( + + )} + {item.visualType === "image" && item.imageUrl && ( +
+ {item.imageAlt + {item.mobileImageUrl && ( + {item.mobileImageAlt )} - src={ - mounted && resolvedTheme === "light" - ? `${item.mobileImageUrl}_light.svg` - : `${item.mobileImageUrl}.svg` - } - alt={item.mobileImageAlt || ""} - /> +
)}
- )} +
-
- {item.footer && <>{item.footer}} -
- ))} + {item.footer && <>{item.footer}} +
+ ); + })}
); }; diff --git a/apps/site/src/components/homepage/card-section/logo-grid.tsx b/apps/site/src/components/homepage/card-section/logo-grid.tsx index 7b3630bb37..ee5d3990ef 100644 --- a/apps/site/src/components/homepage/card-section/logo-grid.tsx +++ b/apps/site/src/components/homepage/card-section/logo-grid.tsx @@ -15,12 +15,12 @@ const AnimationStyles = () => ( transform: translateX(0%); } to { - transform: translateX(-100%); + transform: translateX(-50%); } } @keyframes slideRight { from { - transform: translateX(-100%); + transform: translateX(-50%); } to { transform: translateX(0%); @@ -35,7 +35,7 @@ const LogoBar = ({ color, direction = "right", pauseOnHover = false, - duplicateCount = 3, + duplicateCount = 2, }: { logos: Logo[]; color?: "orm" | "ppg"; @@ -55,17 +55,17 @@ const LogoBar = ({ return (
{duplicatedLogos.map((item) => ( { ? logo.mobileImageUrl : logo.imageUrl; + const imageUrlLight = logo.imageUrlLight; + const isSvg = imageUrl.endsWith(".svg"); const ImageComponent = isSvg ? Image : "img"; return ( - + <> + + {imageUrlLight && ( + + )} + ); }); @@ -148,10 +165,10 @@ const SpotlightMode = memo( key={`${logo.alt}-${index}`} href={logo.link} className={cn( - "w-[20%] sm:w-[12%] aspect-square rounded-xl z-1 bg-background-default border border-white/10 flex items-center justify-center p-3 md:p-2 transition-[transform_0.2s_ease,border-color_0.2s_ease] hover:-translate-y-0.5 hover:scale-[1.02] active:translate-y-0 active:scale-100", + "w-[85px] md:w-[60px] aspect-square rounded-xl z-1 bg-background-default border flex items-center justify-center p-3 md:p-2 transition-[transform_0.2s_ease,border-color_0.2s_ease] hover:-translate-y-0.5 hover:scale-[1.02] active:translate-y-0 active:scale-100", color === "orm" - ? "hover:border-background-orm" - : "hover:border-background-ppg", + ? "hover:border-foreground-orm" + : "hover:border-foreground-ppg", )} target="_blank" rel="noopener noreferrer" @@ -192,25 +209,25 @@ const TrackMode = memo( position: "relative", }} > -
+
); @@ -231,14 +248,15 @@ export const LogoGrid = ({ const logos = propLogos && propLogos.length > 0 ? propLogos : defaultLogosData; + const comps = { + track: , + spotlight: , + wrap: , + }; return ( <> - {type === "track" ? ( - - ) : ( - - )} + {comps[type]} ); }; diff --git a/apps/site/src/components/postgres.tsx b/apps/site/src/components/postgres.tsx new file mode 100644 index 0000000000..046a683914 --- /dev/null +++ b/apps/site/src/components/postgres.tsx @@ -0,0 +1,110 @@ +"use client"; + +import parse from "html-react-parser"; +import { + CodeBlock, + Tabs, + TabsList, + TabsTrigger, + TabsContent, +} from "@prisma/eclipse"; + +type HowSectionData = { + tabs?: { + defaultValue: string; + head: Array<{ + title: string; + icon: string; + value: string; + }>; + body: Array<{ + value: string; + title: string; + content: string; + image: string; + }>; + }; +}; + +export function PostgresTabs({ data }: { data: HowSectionData }) { + const hasTabs = Boolean(data.tabs && data.tabs.body.length > 0); + + return ( +
+
+ {hasTabs && ( +
+ + + {data.tabs!.head.map((tab) => ( + + {tab.icon && } + {tab.title} + + ))} + + {data.tabs!.body.map((body) => ( + +
+
+
+
+

+ {body.title} +

+

+ {parse(body.content)} +

+
+ {body.image && ( + <> + {/* Dark mode images - only visible in dark mode */} + {body.title} + {body.title} + {body.title} + + {/* Light mode images - only visible in light mode */} + {body.title} + {body.title} + {body.title} + + )} +
+
+ + ))} + +
+ )} +
+
+ ); +} diff --git a/apps/site/src/data/postgres.json b/apps/site/src/data/postgres.json new file mode 100644 index 0000000000..0e2b9201de --- /dev/null +++ b/apps/site/src/data/postgres.json @@ -0,0 +1,290 @@ +{ + "tabs": { + "defaultValue": "create-and-manage", + "head": [ + { + "title": "Manage Postgres", + "icon": "fa-regular fa-chart-pyramid", + "value": "create-and-manage" + }, + { + "title": "Type-safe", + "icon": "fa-regular fa-message-text", + "value": "type-safe-code" + }, + { + "value": "create-database", + "title": "Create DB", + "icon": "fa-regular fa-database" + }, + { + "value": "ai-coding", + "title": "AI Tools", + "icon": "fa-regular fa-robot" + }, + { + "value": "manage-team", + "title": "Console", + "icon": "fa-regular fa-table" + }, + { + "value": "understand-queries", + "title": "Query Insights", + "icon": "fa-regular fa-head-side-gear" + } + ], + "body": [ + { + "value": "create-and-manage", + "title": "Create and manage Postgres within your existing tools", + "content": "Spin up Prisma Postgres locally. No Docker containers, no config files, no login required. Use the VS Code extension to create, manage, and explore local and hosted databases without leaving your editor.", + "image": "/illustrations/postgres/postgres_6" + }, + { + "value": "type-safe-code", + "title": "Write readable, type-safe code", + "content": "Your editor autocompletes field names and knows column types as you write queries. Type safety with Prisma ORM catches errors before runtime, so you can build faster.", + "image": "/illustrations/postgres/postgres_5" + }, + { + "value": "create-database", + "title": "Create databases instantly", + "content": "Use the API to create databases whenever you need them. Get a preview database for each PR that your team can actually query and test against.", + "image": "/illustrations/postgres/postgres_4" + }, + { + "value": "ai-coding", + "title": "Optimized for AI Coding", + "content": "Your tools, Cursor, Claude Code, Warp, understand your database straight away and already speak Prisma. The MCP server and the declarative Prisma Schema help your AI agent write migrations, generate queries, manage your databases, and much more.", + "image": "/illustrations/postgres/postgres_3" + }, + { + "value": "manage-team", + "title": "Manage databases with your team", + "content": "Explore and edit data visually with Prisma Studio, built into the Console or running locally. Your team can access databases, monitor usage, and manage all projects and settings from one interface.", + "image": "/illustrations/postgres/postgres_2" + }, + { + "value": "understand-queries", + "title": "Understand why your queries are slow", + "content": "Query Insights helps you understand how your database queries behave in production. You can spot slow queries, see key performance metrics, and get an AI prompt to fix them in your favorite AI editor. It is included in Prisma Postgres at no extra cost.", + "image": "/illustrations/postgres/postgres_1" + } + ] + }, + "stack": [ + { + "title": "Any framework, any deployment", + "image": "logo-grid", + "subtitle": "Connection pooling and edge compatibility handled automatically via regular connection strings, no special configuration.", + "icon": "fa-regular fa-code", + "logos": [ + { + "link": "/docs/guides/deployment/cloudflare-d1", + "title": "Cloudflare D1", + "imageUrl": "/icons/technologies/cloudflare-d1.svg", + "alt": "Cloudflare D1" + }, + { + "link": "/docs/orm/prisma-client/deployment/edge/deploy-to-cloudflare", + "title": "Cloudflare", + "imageUrl": "/icons/technologies/cloudflare-icon-only.svg", + "alt": "Cloudflare" + }, + { + "link": "/docs/guides/frameworks/astro", + "title": "Astro", + "imageUrl": "/icons/technologies/astro-dark.svg", + "mobileImageUrl": "/icons/technologies/astro.svg", + "alt": "Astro" + }, + { + "link": "/docs/guides/runtimes/bun", + "title": "Bun", + "imageUrl": "/icons/technologies/bun.svg", + "alt": "Bun" + }, + { + "link": "/docs/guides/integrations/datadog", + "title": "Datadog", + "imageUrl": "/icons/technologies/datadog_light.svg", + "mobileImageUrl": "/icons/technologies/datadog.svg", + "alt": "Datadog" + }, + { + "link": "/docs/guides/deployment/docker", + "title": "Docker", + "imageUrl": "/icons/technologies/docker-blue.svg", + "alt": "Docker" + }, + { + "link": "/docs/guides/integrations/deno", + "title": "Deno", + "imageUrl": "/icons/companies/deno-darkmode.svg", + "mobileImageUrl": "/icons/technologies/deno-deploy.svg", + "alt": "Deno" + }, + { + "link": "/docs/guides/integrations/vercel-deployment", + "title": "Vercel", + "imageUrl": "/icons/technologies/vercel-icon-dark.svg", + "mobileImageUrl": "/icons/technologies/vercel.svg", + "alt": "Vercel" + }, + { + "link": "/docs/guides/frameworks/nextjs", + "title": "Next.js", + "imageUrl": "/icons/technologies/nextjs.svg", + "alt": "Next.js" + }, + { + "link": "/docs/guides/frameworks/hono", + "title": "Hono", + "imageUrl": "/icons/technologies/hono.svg", + "alt": "Hono" + }, + { + "link": "/docs/guides/integrations/github-actions", + "title": "GitHub", + "imageUrl": "/icons/technologies/github-dark.svg", + "mobileImageUrl": "/icons/companies/github.svg", + "alt": "GitHub" + }, + { + "link": "/docs/orm/prisma-client/deployment/traditional/deploy-to-railway", + "title": "Railway", + "imageUrl": "/icons/technologies/railway-dark.svg", + "mobileImageUrl": "/icons/companies/railway.svg", + "alt": "Railway" + }, + { + "link": "/docs/guides/frameworks/react-router-7", + "title": "React Router", + "imageUrl": "/icons/technologies/rr7.svg", + "alt": "React Router" + }, + { + "link": "/docs/guides/frameworks/solid-start", + "title": "Solid Start", + "imageUrl": "/icons/technologies/solid-start.svg", + "alt": "Solid Start" + }, + { + "link": "/docs/guides/frameworks/sveltekit", + "title": "SvelteKit", + "imageUrl": "/icons/technologies/svelte.svg", + "alt": "SvelteKit" + }, + { + "link": "/docs/guides/frameworks/tanstack-start", + "title": "TanStack", + "imageUrl": "/icons/technologies/tanstack.svg", + "alt": "TanStack" + }, + { + "link": "/docs/guides/deployment/turborepo", + "title": "Turborepo", + "imageUrl": "/icons/technologies/turborepo-icon-only.svg", + "alt": "Turborepo" + }, + { + "link": "/docs/guides/frameworks/nuxt", + "title": "Nuxt", + "imageUrl": "/icons/technologies/nuxt.svg", + "alt": "Nuxt" + }, + { + "link": "/docs/guides/integrations/shopify", + "title": "Shopify", + "imageUrl": "/icons/technologies/shopify.svg", + "alt": "Shopify" + } + ], + "useDefaultLogos": false + }, + { + "title": "Use any ORM or database client", + "image": "logo-bar", + "subtitle": "Connection pooling and edge compatibility handled automatically via regular connection strings, no special configuration.", + "icon": "fa-regular fa-database", + "useDefaultLogos": false, + "logos": [ + { + "link": "/docs/prisma-postgres/quickstart/prisma-orm", + "title": "Prisma", + "imageUrl": "/icons/technologies/prisma.svg", + "imageUrlLight": "/icons/technologies/prisma_light.svg", + "alt": "Prisma" + }, + { + "link": "/docs/prisma-postgres/quickstart/typeorm", + "imageUrl": "/icons/technologies/typeorm.svg", + "title": "TypeORM", + "alt": "TypeORM" + }, + { + "link": "/docs/prisma-postgres/quickstart/drizzle-orm", + "imageUrl": "/icons/technologies/drizzle.svg", + "imageUrlLight": "/icons/technologies/drizzle_light.svg", + "title": "Drizzle", + "alt": "Drizzle" + }, + { + "link": "/docs/prisma-postgres/quickstart/kysely", + "imageUrl": "/icons/technologies/kysely.svg", + "title": "Kysely", + "alt": "Kysely" + } + ] + }, + { + "title": "Your auth, your way", + "subtitle": "BetterAuth, Clerk, NextAuth, or roll your own. Works with any Postgres-compatible auth setup because it's just Postgres.", + "icon": "fa-regular fa-fingerprint", + "image": "logo-bar", + "useDefaultLogos": false, + "logos": [ + { + "link": "/docs/guides/authentication/better-auth/nextjs", + "title": "Better-Auth", + "imageUrl": "/icons/technologies/betterauth.png", + "alt": "Better-Auth" + }, + { + "link": "/docs/guides/authentication/clerk/nextjs", + "title": "Clerk", + "imageUrl": "/icons/technologies/clerk.jpeg", + "alt": "Clerk" + }, + { + "link": "/docs/guides/authentication/authjs/nextjs", + "title": "Auth.js", + "imageUrl": "/icons/technologies/authjs.png", + "alt": "Auth.js" + } + ] + } + ], + "made_for": [ + { + "title": "Dev & Test Environments", + "description": "First-class TypeScript support catches errors at compile time. Schema changes reflect instantly in your code.", + "icon": "fa-regular fa-gear-code" + }, + { + "title": "RAG Pipelines", + "description": "Build RAG entirely in Postgres—embeddings, hybrid search, and context in relational tables. No external vector DB needed.", + "icon": "fa-regular fa-code-branch" + }, + { + "title": "Agentic Workflows", + "description": "Agents query data and store memory via MCP. Developers govern with Prisma schema. The database becomes a human-AI collaboration layer.", + "icon": "fa-regular fa-merge" + }, + { + "title": "Agent Platforms & SaaS", + "description": "Give every agent persistent memory in isolated databases. Query with SQL, provision in milliseconds, pay for what you use.", + "icon": "fa-regular fa-layer-group" + } + ] +} diff --git a/packages/eclipse/src/styles/globals.css b/packages/eclipse/src/styles/globals.css index 8358b7c2fa..0698d2e17e 100644 --- a/packages/eclipse/src/styles/globals.css +++ b/packages/eclipse/src/styles/globals.css @@ -199,6 +199,7 @@ --color-stroke-neutral: #e5e7eb; --color-stroke-neutral-weak: #f3f4f6; --color-stroke-ppg: #0d9488; + --color-stroke-ppg-weak: #99f6e4; --color-stroke-orm: #4f46e5; --color-stroke-error: #dc2626; --color-stroke-success: #0d9488; @@ -337,6 +338,7 @@ --color-stroke-neutral: #1f2937; --color-stroke-neutral-weak: #111827; --color-stroke-ppg: #2dd4bf; + --color-stroke-ppg-weak: #115e59; --color-stroke-orm: #818cf8; --color-stroke-error: #f87171; --color-stroke-success: #2dd4bf;