diff --git a/README.md b/README.md
index b40659ac..b90b48d5 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ https://portaljs.org/docs
# Community
-If you have questions about anything related to Portal.JS, you're always welcome to ask our community on [GitHub Discussions](https://github.com/datopian/portal.js/discussions) or on our [Discord server](https://discord.gg/An7Bu5x8).
+If you have questions about anything related to Portal.JS, you're always welcome to ask our community on [GitHub Discussions](https://github.com/datopian/portal.js/discussions) or on our [Discord server](https://discord.gg/EeyfGrGu4U).
# Appendix
diff --git a/examples/basic-example/components/LineChart.tsx b/examples/basic-example/components/LineChart.tsx
index 294abc37..6d2103f5 100644
--- a/examples/basic-example/components/LineChart.tsx
+++ b/examples/basic-example/components/LineChart.tsx
@@ -15,7 +15,7 @@ export default function LineChart({
const spec = {
$schema: "https://vega.github.io/schema/vega-lite/v5.json",
title,
- width: "container",
+ width: 500,
height: 300,
mark: {
type: "line",
diff --git a/examples/basic-example/content/my-dataset/README.md b/examples/basic-example/content/my-dataset/README.md
new file mode 100644
index 00000000..53ffe5fa
--- /dev/null
+++ b/examples/basic-example/content/my-dataset/README.md
@@ -0,0 +1,11 @@
+# Data
+
+This is the README.md this project.
+
+## Table
+
+
+
+## Vega Lite Line Chart from URL
+
+
+
+```
+
+Note the `
` and the `` components, that's how data components are used on PortalJS, similar to tags on HTML documents. Each data component will have it's own set of attributes. These two are not the only data components that are supported, but it's interesting to note that data components can be used in a way as simple as the table pointing to a CSV file, or as flexible and complex as a chart built using a VegaLite spec.
+
+One other very interesting point to notice here is that both data components are getting its data from the data files inside the public folder. When a relative URL is provided as the data source for a data component, PortalJS will look for the given file in the public folder.
+
+We now have the basics, let's build something.
+
+### Making the dataset page more interesting
+
+It's time to start playing around with the project. Let's say we want to create a dataset page to present the data about the TV series Breaking Bad (or feel free choose a different theme and be creative!). Here are some sites with data that we can use:
+
+- [Openpsychometrics.com Test](https://openpsychometrics.org/tests/characters/stats/BB/)
+- [Rotten Tomatoes Page](https://www.rottentomatoes.com/tv/breaking_bad)
+
+Open the `content/my-dataset/README.md` file and delete the content inside it. Now, let's start with a heading and description:
+
+```markdown
+# Breaking Bad Statistics
+
+**Data source:** https://openpsychometrics.org/tests/characters/stats/BB/
+
+Visualizations about the public perception of the Breaking Bad TV series and its characters.
+
+```
+
+Cool, with that, our intention with this page is now clear. Time to add some visualizations.
+
+#### Tables
+
+Let's start with a table. There's an interesting table in the dataset about the notability of 10 of the characters on the [Openpsychometrics.com Test](https://openpsychometrics.org/tests/characters/stats/BB/), let's reproduce that in our page. Here's the data in CSV format:
+
+```bash
+Notability,Name
+91.3,Walter White
+88.9,Jesse Pinkman
+82.5,Mike Ehrmantraut
+79.6,Gus Fring
+74.8,Hank Schrader
+73.8,Saul Goodman
+61.3,Jane Margolis
+55.4,Skyler White
+46.8,Flynn White
+27.9,Marie Schrader
+```
+
+Tables can be created from different data sources on PortalJs, these being:
+
+##### URL
+
+The URL can be either internal (relative) or external. To create a table from a URL, use the following syntax:
+
+```jsx
+
// Internal, file at /public/data.csv
+
+// Or
+
+
+```
+
+##### Inline CSV
+
+To create a table using inline CSV, use the following syntax:
+
+```jsx
+
+```
+
+##### Columns and rows
+
+
+Finally, you can also provide the data in the form of columns and rows using the following syntax:
+
+```jsx
+
+```
+
+___
+
+Now that you are more familiar with the table data component, let's go ahead and add the table to the page. Since there are only a few rows in the data, inline CSV might be a good option for this table, but feel free to create a CSV file or to convert the data to columns and rows if you want. Add that to the end of the file:
+
+```markdown
+## Character Notability
+
+
+
+_Isn't it interesting that Saul is so below in the ranking? There's even a spin-off about him._
+
+```
+
+Here's how it's going to look like on the page:
+
+
+
+#### Simple line charts
+
+Let's use the `` data component and the ratings on Rotten Tomatoes to create a rating by year line chart (note that each season was released in a diffent year).
+
+INTERNAL NOTE: LineChart is not working properly on the example, the width is not right. Can't we make numeric X work as well instead of having just years? We still have that bug in which the X is offsetted by -1.
+
+First, here's the data of the rating by season in CSV format:
+
+```bash
+Year,Rating
+2008,86
+2009,97
+2010,100
+2011,100
+2012,97
+```
+
+The `` data component expects two attributes: `title` and `data`, so let's add the following to the end of the file:
+
+```markdown
+## Rating x Season
+
+
+
+_Consistently well received by critics_
+
+```
+
+Here are the results:
+
+
+
+#### Complex charts
+
+Finally, PortalJS also supports the creation of visualizations with [Vega and VegaLite](https://vega.github.io/). This becomes specially interesting when it's desired to create more complex and custom visualizations. To demonstrate this, let's add a bar chart that compares Breaking Bad to Better Call Saul, a spin-off of the series, based on the data on Rotten Tomatoes. Here's the data in CSV format:
+
+```bash
+TV Show,Average Tomatometer,Average Audience Score
+Breaking Bad,0.96,0.97
+Better Call Saul,0.98,0.96
+```
+
+Add that to the file:
+
+```jsx=
+## Breaking Bad x Better Call Saul
+
+
+
+_The producers were able to successfully expand the success of the original series to the spin-off_
+
+```
+
+It's going to look like this when you navigate to the page again:
+
+
+
+### Final results
+
+Here's the whole source code of the dataset page we built:
+
+```markdown
+# Breaking Bad Statistics
+
+**Data source:** https://openpsychometrics.org/tests/characters/stats/BB/
+
+Visualizations about the public perception of the Breaking Bad TV series and its characters.
+
+## Character Notability
+
+
+
+_Isn't it interesting that Saul is so below in the ranking? There's even a spin-off about him._
+
+## Rating x Season
+
+
+
+_Consistently well received by critics_
+
+## Breaking Bad x Better Call Saul
+
+
+
+_The producers were able to successfully expand the success of the original series to the spin-off_
+```
+And here's a screenshot of what it looks like:
+
+
+
+### Next steps
+
+Now that you already know how to create pages and render data components, we encourage you to play around with this project. You can try adding new visualizations, changing values, or creating a new page about something you find interesting.
+
+Finally, proceed to the next tutorial in the series.
\ No newline at end of file
diff --git a/site/package.json b/site/package.json
index 12b910ab..285d5c2b 100644
--- a/site/package.json
+++ b/site/package.json
@@ -4,7 +4,8 @@
"private": true,
"scripts": {
"dev": "next dev",
- "build": "npm run mddb && next build",
+ "build": "next build",
+ "prebuild": "npm run mddb && node ./scripts/fix-symlinks.mjs",
"start": "next start",
"mddb": "mddb content"
},
diff --git a/site/public/static/img/docs/dms/ckan-register.png b/site/public/static/img/docs/dms/ckan-register.png
new file mode 100644
index 00000000..8ba8f940
Binary files /dev/null and b/site/public/static/img/docs/dms/ckan-register.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/chart-builder.png b/site/public/static/img/docs/dms/data-explorer/chart-builder.png
new file mode 100644
index 00000000..fb0c045b
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/chart-builder.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/data-explorer.png b/site/public/static/img/docs/dms/data-explorer/data-explorer.png
new file mode 100644
index 00000000..5c0ae895
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/data-explorer.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/datapackage-views.png b/site/public/static/img/docs/dms/data-explorer/datapackage-views.png
new file mode 100644
index 00000000..7a7377c2
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/datapackage-views.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/date-picker.png b/site/public/static/img/docs/dms/data-explorer/date-picker.png
new file mode 100644
index 00000000..08d64042
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/date-picker.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/i18n-cookie.png b/site/public/static/img/docs/dms/data-explorer/i18n-cookie.png
new file mode 100644
index 00000000..c9fd302e
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/i18n-cookie.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/map-builder.png b/site/public/static/img/docs/dms/data-explorer/map-builder.png
new file mode 100644
index 00000000..56a06ef8
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/map-builder.png differ
diff --git a/site/public/static/img/docs/dms/data-explorer/query-builder.png b/site/public/static/img/docs/dms/data-explorer/query-builder.png
new file mode 100644
index 00000000..ebab0aa4
Binary files /dev/null and b/site/public/static/img/docs/dms/data-explorer/query-builder.png differ
diff --git a/site/public/static/img/docs/dms/dx/DX_architecture.jpg b/site/public/static/img/docs/dms/dx/DX_architecture.jpg
new file mode 100644
index 00000000..d3bbad0f
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/DX_architecture.jpg differ
diff --git a/site/public/static/img/docs/dms/dx/GitOps_Workflow.jpg b/site/public/static/img/docs/dms/dx/GitOps_Workflow.jpg
new file mode 100644
index 00000000..d54ba772
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/GitOps_Workflow.jpg differ
diff --git a/site/public/static/img/docs/dms/dx/logging-dashboard.png b/site/public/static/img/docs/dms/dx/logging-dashboard.png
new file mode 100644
index 00000000..a33195b5
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/logging-dashboard.png differ
diff --git a/site/public/static/img/docs/dms/dx/logging-query.png b/site/public/static/img/docs/dms/dx/logging-query.png
new file mode 100644
index 00000000..4afdd0d6
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/logging-query.png differ
diff --git a/site/public/static/img/docs/dms/dx/logging-service.png b/site/public/static/img/docs/dms/dx/logging-service.png
new file mode 100644
index 00000000..996038be
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/logging-service.png differ
diff --git a/site/public/static/img/docs/dms/dx/monitoring-console.png b/site/public/static/img/docs/dms/dx/monitoring-console.png
new file mode 100644
index 00000000..f1559960
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/monitoring-console.png differ
diff --git a/site/public/static/img/docs/dms/dx/monitoring-create-alert.png b/site/public/static/img/docs/dms/dx/monitoring-create-alert.png
new file mode 100644
index 00000000..9b4a28e4
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/monitoring-create-alert.png differ
diff --git a/site/public/static/img/docs/dms/dx/monitoring-create-uptime.png b/site/public/static/img/docs/dms/dx/monitoring-create-uptime.png
new file mode 100644
index 00000000..30b4a63c
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/monitoring-create-uptime.png differ
diff --git a/site/public/static/img/docs/dms/dx/monitoring-dashboard.png b/site/public/static/img/docs/dms/dx/monitoring-dashboard.png
new file mode 100644
index 00000000..b59ad9e6
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/monitoring-dashboard.png differ
diff --git a/site/public/static/img/docs/dms/dx/monitoring-log-based-metrics.png b/site/public/static/img/docs/dms/dx/monitoring-log-based-metrics.png
new file mode 100644
index 00000000..cabe8bf7
Binary files /dev/null and b/site/public/static/img/docs/dms/dx/monitoring-log-based-metrics.png differ
diff --git a/site/public/static/img/docs/dms/frontend-sequence-1.png b/site/public/static/img/docs/dms/frontend-sequence-1.png
new file mode 100644
index 00000000..124701d6
Binary files /dev/null and b/site/public/static/img/docs/dms/frontend-sequence-1.png differ
diff --git a/site/scripts/fix-symlinks.mjs b/site/scripts/fix-symlinks.mjs
new file mode 100644
index 00000000..8429b6d5
--- /dev/null
+++ b/site/scripts/fix-symlinks.mjs
@@ -0,0 +1,15 @@
+// Script executed before builds
+
+import { exec } from "child_process";
+import fs from "fs";
+
+// If Vercel environment is detected
+if (process.env.VERCEL_ENV) {
+ console.log(
+ "[scripts/fix-symlinks.mjs] Vercel environment detected. Fixing symlinks..."
+ );
+
+ // fs.unlinkSync('public/assets')
+ exec('cp -r ./content/assets ./public/')
+
+}