diff --git a/apps/api/pyproject.toml b/apps/api/pyproject.toml
index e9100153..b3be861c 100644
--- a/apps/api/pyproject.toml
+++ b/apps/api/pyproject.toml
@@ -40,6 +40,7 @@ dependencies = [
"logfire[sqlalchemy]>=3.8.0",
"beautifulsoup4>=4.13.4",
"pytest-asyncio>=1.1.0",
+ "mailgun>=1.2.0"
]
[tool.ruff]
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
index 6bb780de..f3dcb465 100644
--- a/apps/web/app/layout.tsx
+++ b/apps/web/app/layout.tsx
@@ -21,7 +21,6 @@ export default function RootLayout({
- {isDevEnv ? '' : }
diff --git a/apps/web/package.json b/apps/web/package.json
index 2c840117..23420617 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -101,6 +101,8 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.11",
+ "@tailwindcss/typography": "^0.5.19",
+ "@types/mdx": "^2.0.13",
"@types/node": "20.12.2",
"@types/qrcode": "^1.5.5",
"@types/react": "19.0.10",
diff --git a/apps/web/pnpm-lock.yaml b/apps/web/pnpm-lock.yaml
index 5b1cbc28..d5faa009 100644
--- a/apps/web/pnpm-lock.yaml
+++ b/apps/web/pnpm-lock.yaml
@@ -277,6 +277,12 @@ importers:
'@tailwindcss/postcss':
specifier: ^4.1.11
version: 4.1.14
+ '@tailwindcss/typography':
+ specifier: ^0.5.19
+ version: 0.5.19(tailwindcss@4.1.14)
+ '@types/mdx':
+ specifier: ^2.0.13
+ version: 2.0.13
'@types/node':
specifier: 20.12.2
version: 20.12.2
@@ -1630,6 +1636,11 @@ packages:
'@tailwindcss/postcss@4.1.14':
resolution: {integrity: sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==}
+ '@tailwindcss/typography@0.5.19':
+ resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
+
'@tanstack/react-table@8.21.3':
resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==}
engines: {node: '>=12'}
@@ -2337,6 +2348,11 @@ packages:
resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
engines: {node: '>= 6'}
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
@@ -3556,6 +3572,10 @@ packages:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
+ postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
@@ -4258,6 +4278,9 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
utrie@1.0.2:
resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
@@ -5610,6 +5633,11 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.14
+ '@tailwindcss/typography@0.5.19(tailwindcss@4.1.14)':
+ dependencies:
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 4.1.14
+
'@tanstack/react-table@8.21.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@tanstack/table-core': 8.21.3
@@ -6343,6 +6371,8 @@ snapshots:
css-what@6.2.2: {}
+ cssesc@3.0.0: {}
+
csstype@3.1.3: {}
currency-codes@2.2.0:
@@ -7949,6 +7979,11 @@ snapshots:
possible-typed-array-names@1.1.0: {}
+ postcss-selector-parser@6.0.10:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss-value-parser@4.2.0: {}
postcss@8.4.31:
@@ -8848,6 +8883,8 @@ snapshots:
lodash.debounce: 4.0.8
react: 19.0.0
+ util-deprecate@1.0.2: {}
+
utrie@1.0.2:
dependencies:
base64-arraybuffer: 1.0.2