From 7d62cd58a5aee7a255ec9126cc8872cd178beedd Mon Sep 17 00:00:00 2001 From: pcarapic15 Date: Thu, 11 Dec 2025 11:14:31 +0100 Subject: [PATCH 1/3] Redirect static pages to datacebo routes --- src/pages/community-guidelines-slack.js | 325 +----------------------- src/pages/community-stats.js | 29 +-- src/pages/index.js | 34 +-- src/pages/resources.js | 164 +----------- 4 files changed, 30 insertions(+), 522 deletions(-) diff --git a/src/pages/community-guidelines-slack.js b/src/pages/community-guidelines-slack.js index 6f9f1bd1..860038b9 100644 --- a/src/pages/community-guidelines-slack.js +++ b/src/pages/community-guidelines-slack.js @@ -1,324 +1,13 @@ import React from "react"; -import { GatsbyImage, getImage } from "gatsby-plugin-image"; -import { graphql, useStaticQuery } from "gatsby"; -import { Article } from "../components/common"; import { Helmet } from "react-helmet"; -import Cta from "../components/Cta"; -const ResourcesPage = () => { - const data = useStaticQuery(graphql` - query { - placeholderImage: file( - relativePath: { eq: "Slack-conversation-example.png" } - ) { - childImageSharp { - gatsbyImageData( - layout: CONSTRAINED - placeholder: NONE - formats: [AUTO, WEBP, AVIF] - ) - } - } - } - `); - const image = getImage(data.placeholderImage); +export default function ComunityGuidelinesSlackPage() { + const targetUrl = "https://datacebo.com/community-guidelines"; return ( -
- - -
-
-
-
-
-
-

- SDV Slack Community Guidelines -

-

- Last Update: May 8, 2024 -

-
-
-
-
-
-
-
-
-
-

Dear SDV Community,

-

- Welcome to the Synthetic Data Vault! Here, you will find a group - of passionate creators and builders who want to put synthetic data - to use. -

-

- Our goal with the SDV is to be the most comprehensive and trusted - platform for synthetic data. Since we started the{" "} - - SDV Slack Community - {" "} - in July 2020, we've seen unprecedented innovation and - collaboration in this space. As we continue to improve the - software and discover new insights about synthetic data, we want - to make sure our community is set up for responsible growth. -

-

- To that end, we are introducing some SDV Slack Community - Guidelines, aimed to foster more of the great engagement we've - been seeing. Below, you'll find 5 key principles that we expect - all Slack Community members to follow. -

-
- -
-
-

- 1. Discuss and participate openly -

-

- We created our Slack Community as an open place to discuss the - SDV. Anyone can join our community by creating a profile. - Whether it's through asking questions, having detailed - discussions or reacting to existing conversations, you are - welcome to engage with the community in any way you feel - comfortable. Feel free to answer questions by replying in a - thread, especially if you've run into the same problems in the - past or have workarounds. -

-

The guidance below allows us to keep the community safe:

-
    -
  • - We encourage SDV Slack members to create profiles that - accurately represent who they are, including their name, - profile image and email. Please do not deliberately change - your identity in order to mislead the community, for example - by providing a temporary email or a fake name or profile - photo. Impersonating others could also result in your - expulsion. -
  • -
  • - We encourage everyone to communicate in public channels - instead of through private Direct Messages (DMs). When you - keep discussions in the public space, everyone in the - community can benefit from the solutions that you find, and - others can also join in. This also applies to communicating - with SDV team members — we try to respond to questions on a - first-come, first-serve basis, and generally get to everything - within a few business days.{" "} - - You will not receive a faster response by directly - messaging individual members of the SDV team. - -
  • -
-
-
-

- 2. Keep the workspace organized -

-

- Before starting a discussion, check to see if there is already - material that covers the topic. We have many resources - including:{" "} - - GitHub Issues - - ,{" "} - - SDV User Guides - {" "} - and the{" "} - - DataCebo Blog - - . -

-

- If you cannot find any related material, post your question in - the appropriate channel depending on the use – for eg. - #single-table, #multi-table, #timeseries, #sdmetrics, etc. For - general questions, use #sdv-dev. We recommend you use only 1 - block of text to write your initial question. The text will - become the start of a new thread, and new replies will appear - nested underneath it: -

-
- -
-

- (We recognize that there may be bots or Apps that you use in - other Slack spaces. Currently, we are not accepting any requests - to add external Slack Apps to the SDV space.) -

-
-
-

- 3. Continue with involved discussions on GitHub -

-

- While Slack is a great place for initial connection and - conversation, we are using GitHub for more involved topics, - which require a more permanent location for tracking and - updating. In certain scenarios, a member of the SDV team may ask - you to continue a Slack discussion on GitHub instead: -

-
    -
  • - - Debugging problems - {" "} - is easier on GitHub if there are many code samples or stack - traces being shared. If the bug cannot easily be reproduced or - fixed, we'll track its updates using GitHub too. -
  • -
  • - We also use GitHub to keep track of{" "} - - new feature requests - - . We prioritize new features based on the demand and the - utility for synthetic data use cases. If you'd like to call - attention to a particular feature request, we encourage you to - add more information about how you're planning to use the - synthetic data, and why the feature would be helpful. -
  • -
-
-
-

- 4. Keep the focus on SDV usage -

-

- The primary focus of the SDV Slack is to discuss the{" "} - SDV software. Due to recent - growth in users and usage questions, and our goal of supporting - users in every way possible, we are adopting a new policy: Slack - members must stick to posting{" "} - - SDV usage questions and discussions only - - . Here's what this means: -

-
    -
  • - While we recognize that there are a lot of discussions, news - and articles about synthetic data and generative AI in general - happening right now, please refrain from posting them to any - of the SDV channels (including the "random" channel). These - include any{" "} - - general industry news about synthetic data; third party - vendor evaluations, or successful case studies. This rule - applies to the SDV itself: we will not post (or allow others - to post) coverage of the SDV - {" "} - - in business news - - , articles about industry usage of the SDV, successful case - studies of the SDV, or{" "} - - evaluations by other vendors or third parties - - .{" "} - - We believe this content is more suitable for LinkedIn and - other venues - - . -
  • -
  • - Please refrain from advertising or soliciting anywhere in the - SDV Slack, as this creates a bad experience for the community. - Promotion of a specific business or research project may - result in your expulsion from the Slack space. If you are - receiving solicitations or spam from someone, please get in - touch with the SDV team at info@sdv.dev for a resolution. -
  • -
-
-
-

- 5. Be respectful -

-

- We are thrilled to have a global community that represents many - different industries, backgrounds and experiences. It is - important for everyone to keep this diversity in mind while - communicating. A question that might seem obvious to you may not - be to someone else, and you may receive faster replies if you - explain any industry-specific terms. While others may not share - your understanding of physics, chemistry, finance, healthcare, - etc., we all share a love for data! -

-

- We ask that you also extend this respect to the SDV team. As the - core maintainers of this project, we are a passionate but small - team responding to a variety of requests and questions. Please - be mindful of this as you communicate with and wait for - responses from us. -

-
-
- -
-

- Thank you for taking the time to read our community guidelines. - With these in mind, we hope the SDV Slack will continue to grow as - an open space for discussion and collaboration around synthetic - data solutions. -

-

- Happy synthesizing!
- - The SDV Team -

-
-
-
- - -
+ + + + ); -}; - -export default ResourcesPage; +} diff --git a/src/pages/community-stats.js b/src/pages/community-stats.js index 00ea5a07..46ebb0d2 100644 --- a/src/pages/community-stats.js +++ b/src/pages/community-stats.js @@ -1,23 +1,18 @@ import React from "react"; -import { Article } from "../components/common"; -import config from "../utils/siteConfig"; -import Seo from "../components/Seo"; -import CommunityStatsContent from "../components/community-stats/CommunityStatsContent"; +import { Helmet } from "react-helmet"; export default function CommunityStatsPage() { - return ( -
- + const baseUrl = "https://datacebo.com/sdv-dev"; + + const finalUrl = + typeof window !== "undefined" + ? `${baseUrl}${window.location.hash || ""}` + : baseUrl; -
- -
-
+ return ( + + + + ); } diff --git a/src/pages/index.js b/src/pages/index.js index 8a3429e2..54ce6364 100755 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,33 +1,13 @@ import React from "react"; -import { Article } from "../components/common"; -import Features from "../components/home/features"; -import Hero from "../components/home/hero"; -import Join from "../components/home/join"; -import OpenSource from "../components/home/open-source"; -import ProtectEnhance from "../components/home/protect-enhance"; -import TryIt from "../components/home/try-it"; -import config from "../utils/siteConfig"; -import Seo from "../components/Seo"; +import { Helmet } from "react-helmet"; export default function HomePage() { - return ( -
- + const targetUrl = "https://datacebo.com/sdv-dev"; -
- - - - - - -
-
+ return ( + + + + ); } diff --git a/src/pages/resources.js b/src/pages/resources.js index 486354f0..64cf4011 100644 --- a/src/pages/resources.js +++ b/src/pages/resources.js @@ -1,167 +1,11 @@ import React from "react"; -import { Article } from "../components/common"; import { Helmet } from "react-helmet"; -import Cta from "../components/Cta"; - -import config from "../utils/siteConfig"; - const ResourcesPage = () => ( -
- - -
-
-
-
-
-
-

- Research papers -

-

- The SDV is based on over a decade of research and development - at MIT -

-
-
-
-
-
-
-
-
-
- - Sequential Models in the Synthetic Data Vault - -

Preprint, June 2022

-

Kevin Zhang, Kalyan Veeramachaneni, Neha Patki

-
- -
- - Synthesizing Tabular Data using Conditional GAN - -

S.M Thesis, Dept. of EECS, MIT, February 2020

-

Lei Xu

-
- -
- - Modeling Tabular data using Conditional GAN (CTGAN) - -

- NeurIPS|2019, Proc. of Advances in Neural Information Processing - Systems, 2019 -

-

- Lei Xu, Maria Skoularidou, Alfredo Cuesta-Infante, Kalyan - Veeramachaneni -

-
- -
- - Learning Vine Copula Models For Synthetic Data Generation - -

- AAAI-19, In Proc. 33rd AAAI Conference on Artificial Intelligence, - 2019 -

-

Yi Sun, Alfredo Cuesta-Infante, Kalyan Veeramachaneni

-
- -
- - Synthesizing Tabular Data using Generative Adversarial Networks - (TGAN) - -

Preprint, 27 November 2018

-

Lei Xu, Kalyan Veeramachaneni

-
- -
- - SDV: An Open Source Library for Synthetic Data Generation - -

M.Eng Thesis, Dept. of EECS, MIT, August 2018

-

Andrew Montanez

-
- -
- - The synthetic data vault - -

- DSAA -16, International Conference on Data Science and Advance - Analytics, October 2016 -

-

Neha Patki, Roy Wedge, Kalyan Veeramachaneni

-
- -
- - The Synthetic Data Vault: Generative Modeling for Relational - Databases. - -

M.Eng. Thesis, Dept. of EECS, MIT, June 2016

-

Neha Patki

-
-
-
- - -
+ + + + ); export default ResourcesPage; From e3ba748ba13e94b87b9b233f846c9c6d42f13287 Mon Sep 17 00:00:00 2001 From: pcarapic15 Date: Thu, 11 Dec 2025 11:24:49 +0100 Subject: [PATCH 2/3] Redirect case studies --- src/templates/CaseStudy.js | 410 ++----------------------------------- 1 file changed, 12 insertions(+), 398 deletions(-) diff --git a/src/templates/CaseStudy.js b/src/templates/CaseStudy.js index 5f73ea5d..9bc8e760 100644 --- a/src/templates/CaseStudy.js +++ b/src/templates/CaseStudy.js @@ -1,406 +1,20 @@ -import React, { useEffect } from "react"; -import { Article } from "../components/common"; -import { graphql, Link } from "gatsby"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { - faSquareXTwitter, - faLinkedinIn, -} from "@fortawesome/free-brands-svg-icons"; -import { faTimes } from "@fortawesome/free-solid-svg-icons"; -import Prism from "prismjs"; -import "prismjs"; -import "prismjs/components/prism-python"; -import "prismjs/themes/prism-okaidia.css"; -import AuthorImages from "./AuthorImages"; -import ctaImage from "../../static/cta-image.png"; +import React from "react"; import { Helmet } from "react-helmet"; -import { documentToReactComponents } from "@contentful/rich-text-react-renderer"; -const ImageModal = () => ( -
-
-
-
-
-
- modal -

-
- -
-
-
-
-
-
-); +export default function CaseStudy({ pageContext }) { + const baseUrl = "https://datacebo.com/case-studies/"; + const slugFromContext = pageContext?.url || ""; -export const SocialDesktop = ({ post }) => { - const sitePath = "/community-case-studies/"; - return ( -
- - - - - - -
- ); -}; - -export default function BlogPostTemplate({ data }) { - const c = data.contentfulCaseStudy; - - const post = { - frontmatter: { - title: c.title, - slug: c.url, - excerpt: c.cardText, - feature_image: c.featureImage.url, - published_at: c.datePublished, - takeaways: - c.takeaways[0].caseStudyName === c.url - ? documentToReactComponents( - JSON.parse(c.takeaways[0].takeawaysList.raw) - ) - : null, - authors: - c.authors?.map((a) => ({ - name: a.authorName, - profile_image: a.authorImage?.file?.url || a.authorImage, - website: a.website, - })) || [], - categories: c.categories?.map((cat) => ({ - name: cat.name, - })), - }, - html: documentToReactComponents(JSON.parse(c.articleText.raw)), - }; - - useEffect(() => { - const figures = Array.from(document.querySelectorAll(".post-body figure")); - const modal = document.querySelector(".modal"); - const modalImg = modal.querySelector("img"); - const modalCaption = modal.querySelector(".modal-caption"); - const modalBody = modal.querySelector(".modal-body"); - const modalWrap = modal.querySelector(".modal-wrap"); - - const openModal = (figure) => { - modal.style.display = "block"; - modalImg.height = figure.querySelector("picture img").height; - modalImg.width = figure.querySelector("picture img").width; - modalImg.src = figure.querySelector("picture img").dataset.imageSrc; - modalCaption.innerHTML = - figure.querySelector("figcaption")?.innerHTML || ""; - }; - - const closeModal = () => { - modal.style.display = "none"; - modalImg.src = ""; - modalCaption.innerHTML = ""; - modalImg.height = 0; - modalImg.width = 0; - }; - - const handleFigureClick = (figure) => openModal(figure); - const handleModalWrapClick = (e) => { - if (!modalBody.contains(e.target)) closeModal(); - }; - const handleKeyDown = (e) => { - if (e.key === "Escape") closeModal(); - }; - - figures.forEach((figure) => { - figure.classList.add( - "cursor-pointer", - "hover:opacity-80", - "transition-opacity", - "duration-300" - ); - figure.addEventListener("click", () => handleFigureClick(figure)); - }); - - modalWrap.addEventListener("click", handleModalWrapClick); - window.addEventListener("keydown", handleKeyDown); - - return () => { - figures.forEach((figure) => - figure.removeEventListener("click", () => handleFigureClick(figure)) - ); - modalWrap.removeEventListener("click", handleModalWrapClick); - window.removeEventListener("keydown", handleKeyDown); - }; - }, []); - - useEffect(() => { - Prism.highlightAll(); - }, []); + const normalizedSlug = slugFromContext + ? slugFromContext.replace(/^\/|\/$/g, "") + : ""; - return ( - <> - - {post.frontmatter.meta_title || post.frontmatter.title} - - - - - - - -
-
-
-
- {post.frontmatter.title} -

- {post.frontmatter.title} -

- -
- -
-
- {post.frontmatter.authors.map((a, idx) => ( - - {idx > 0 && "and "} - {a.website ? ( - - {a.name} - - ) : ( - a.name - )} - - ))} -
-
- {new Date(post.frontmatter.published_at).toLocaleDateString( - "en-US", - { - year: "numeric", - month: "long", - day: "numeric", - } - )} - {post.frontmatter?.categories?.length ? ( - <> - {" "} -
|
-
- {post.frontmatter.categories.map((c) => c.name)} -
- - ) : ( - "" - )} -
-
-
-
-

- Quick Takeaways -

-
{post.frontmatter.takeaways}
-
-
{post.html}
- -
-
- - - -
-
-
- The Synthetic Data Vault -
-
-

- Let’s put synthetic data to work -

- - Contact us - -
-
-
-
-
- - ); -} - -export const pageQuery = graphql` - query ($url: String!) { - contentfulCaseStudy(url: { eq: $url }) { - title - url - featureImage { - url - } - cardText - takeaways { - caseStudyName - takeawaysList { - raw - } - } - datePublished - categories { - name - slug - } - articleText { - raw - } - authors { - authorName - authorImage { - file { - url - } - } - website - } - } - } -`; - -export function Head({ data }) { - const c = data.contentfulCaseStudy; - - const jsonLd = { - "@context": "https://schema.org/", - "@type": "Article", - author: { - "@type": - c.authors?.[0]?.authorName !== "DataCebo Team" - ? "Person" - : "Organization", - name: c.authors?.[0]?.authorName, - image: c.authors?.[0]?.authorImage?.file?.url, - }, - headline: c.title, - url: `https://sdv.dev/community-case-studies/${c.url}/`, - datePublished: c.datePublished, - dateModified: c.datePublished, - image: { - "@type": "ImageObject", - url: c.featureImage.url, - width: "auto", - height: "auto", - }, - publisher: { - "@type": "Organization", - name: "Datacebo", - logo: { - "@type": "ImageObject", - url: "https://datacebo.com/logo-white.png", - width: 200, - height: 35, - }, - }, - description: c.cardText, - mainEntityOfPage: { - "@type": "WebPage", - "@id": `https://sdv.dev/community-case-studies/${c.url}/`, - }, - }; + const finalUrl = normalizedSlug ? `${baseUrl}${normalizedSlug}/` : baseUrl; return ( - <> - - - - - {c.title} - - - - {/* Open Graph */} - - - - - - - + + + + ); } From 7636732f04f14f60e6e7fd2ff0fb580dd58b98b7 Mon Sep 17 00:00:00 2001 From: pcarapic15 Date: Thu, 11 Dec 2025 11:25:47 +0100 Subject: [PATCH 3/3] Redirect 404 --- src/pages/404.js | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/pages/404.js b/src/pages/404.js index 2e1623a4..695fa597 100755 --- a/src/pages/404.js +++ b/src/pages/404.js @@ -1,18 +1,11 @@ import React from "react"; -import { Link } from "gatsby"; -import { Article } from "../components/common"; +import { Helmet } from "react-helmet"; const NotFoundPage = () => ( -
-
-
-

Error 404

-
- Page not found, return home to start over -
-
-
-
+ + + + ); export default NotFoundPage;