From 616d2eebe666304102c54caf831d519fdbb951e1 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 13 Jun 2024 19:08:29 +0400 Subject: [PATCH] First blog post --- .../images/blog/grapesjs-studio-alpha.jpeg | Bin 0 -> 54254 bytes src/app/_components/post-header.tsx | 2 +- ...ic-routing.mdx => grapesjs-and-beyond.mdx} | 19 +++++++++++------- src/lib/utils.ts | 13 +++++++++++- src/mdx-components.tsx | 9 +++++++++ tailwind.config.ts | 1 + 6 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 public/assets/images/blog/grapesjs-studio-alpha.jpeg rename src/content/blog/{dynamic-routing.mdx => grapesjs-and-beyond.mdx} (61%) diff --git a/public/assets/images/blog/grapesjs-studio-alpha.jpeg b/public/assets/images/blog/grapesjs-studio-alpha.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2f47fc9ea3484ff901fbd086fa705c427f1752ae GIT binary patch literal 54254 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 literal 0 HcmV?d00001 diff --git a/src/app/_components/post-header.tsx b/src/app/_components/post-header.tsx index 24e5f7c..31e63c2 100644 --- a/src/app/_components/post-header.tsx +++ b/src/app/_components/post-header.tsx @@ -8,7 +8,7 @@ export function PostHeader({ post }: { post: Post }) { const { title, coverImage, date, author, minRead } = post; return ( <> -

+

{title}

diff --git a/src/content/blog/dynamic-routing.mdx b/src/content/blog/grapesjs-and-beyond.mdx similarity index 61% rename from src/content/blog/dynamic-routing.mdx rename to src/content/blog/grapesjs-and-beyond.mdx index 949043e..50a075e 100644 --- a/src/content/blog/dynamic-routing.mdx +++ b/src/content/blog/grapesjs-and-beyond.mdx @@ -2,13 +2,12 @@ title: "GrapesJS and Beyond: Introducing Grapes Studio and Our Plans for the Future" excerpt: "As some of you may have heard, I've recently started working full-time on GrapesJS. I wanted to take a moment to share what this journey is all about, the vision behind it, and the long-term commitment." coverImage: "/assets/images/grapesjs-og-image.png" -date: "2024-06-11T01:35:07.322Z" +date: "2024-06-13T19:00:00Z" author: name: Artur Arseniev ogImage: url: "/assets/images/grapesjs-og-image.png" --- -LINK: https://www.linkedin.com/company/grapes-studio As some of you may have heard, I've recently started working full-time on GrapesJS. I wanted to take a moment to share what this journey is all about, the vision behind it, and the long-term commitment. @@ -16,7 +15,9 @@ As some of you may have heard, I've recently started working full-time on Grapes Back in 2015, I started a simple application to help me with basic website layouts. At that time, the WYSIWYG web editors I found online were more focused on simple content creation rather than full-page layouts. Eventually, this application evolved into GrapesJS, a framework that allows other developers to create their own builders without reinventing the wheel. -After releasing GrapesJS as an open-source project, it grew unexpectedly fast, gathering thousands of stars on the repository and attracting users from all around the world. Developers leveraged GrapesJS's API to build custom web builders for websites, landing pages, newsletters, documents, and more. Others also used our demos to quickly build webpages or newsletters. +After releasing [GrapesJS as an open-source project](https://github.com/GrapesJS/grapesjs), it grew unexpectedly fast, gathering thousands of stars on the repository and attracting users from all around the world. Developers leveraged GrapesJS's API to build custom web builders for websites, landing pages, newsletters, documents, and more. Others also used our demos to quickly build webpages or newsletters. + +GrapesJS has become more than just a framework; it is a community and a tool that many individuals and companies have made part of their core products and workflows. With the fast changes in web technology, we are inspired to think about the future and how we can keep improving and expanding its capabilities. At its core, GrapesJS is about empowerment. It's about giving individuals and companies the tools they need to bring their ideas to life, creating something meaningful and beautiful in a reasonable amount of time. @@ -24,17 +25,21 @@ At its core, GrapesJS is about empowerment. It's about giving individuals and co GrapesJS has always been a side project I enjoyed working on in my spare time. Despite the great contributions from the community, it was challenging to evolve and push the project further. -Fortunately, I had the luck to find and join the wonderful people at Open Core Ventures. This partnership will turn many ideas into reality. Grapes Studio Inc. was born as a company with a mission to democratize the web development experience, making it more inclusive and accessible to everyone. +Fortunately, I had the luck to find and join the wonderful people at [Open Core Ventures](https://opencoreventures.com/). This partnership will turn many ideas into reality. [Grapes Studio Inc.](https://www.linkedin.com/company/grapes-studio) was born as a company with a mission to democratize the web development experience, making it more inclusive and accessible to everyone. It's natural to be skeptical about mixing open-source with a commercial entity — I was skeptical too. The reality is, most open-source projects, with few exceptions, must find a way to commercialize or risk going stale. The key is to establish the scope and boundaries of these entities. GrapesJS project is fortunate enough to explore various monetization possibilities without compromising its open-source nature. -This means the GrapesJS framework will remain open-source and free of charge, with no changes. Our goal at Grapes Studio is to extend its capabilities, not limit them. We see a great opportunity in investing in GrapesJS Studio, an application built on top of the GrapesJS framework. This can be commercialized as a SaaS for end-users and potentially embedded in external applications with just a few lines of code. Extending and improving the open-source framework benefits everyone. +This means the GrapesJS framework will remain open-source and free of charge, with no changes. Our goal at Grapes Studio is to extend its capabilities, not limit them. We see a great opportunity in investing in [GrapesJS Studio](https://studio.grapesjs.com/), an application built on top of the GrapesJS framework. + +![GrapesJS Studio](/assets/images/blog/grapesjs-studio-alpha.jpeg) + +This can be commercialized as a SaaS for end-users and potentially embedded in external applications with just a few lines of code. Extending and improving the open-source framework benefits everyone. In addition to GrapesJS Studio, we'll explore various ways to support and enhance the open-source community. This might include offering more support, documentation, and training to help companies and individuals make the most of GrapesJS. # Join Us -I'm excited about the future and the opportunities it will bring. I hope you are too. If you share the same ambitions and are eager to contribute to our mission of empowering and democratizing web development, check out our career page for open positions! +I'm excited about the future and the opportunities it will bring. I hope you are too. If you share the same ambitions and are eager to contribute to our mission of empowering and democratizing web development, check out our [career page](/careers) for open positions! -Thank you to everyone who made this possible and stay tuned for more updates. +Thank you to everyone who made this possible and [stay tuned](https://x.com/grapesjs) for more updates. diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 74809be..3496e3b 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1 +1,12 @@ -export const getPathBlog = (slug?: string) => `/blog${slug ? `/${slug}` : ''}`; \ No newline at end of file +export const getPathBlog = (slug?: string) => `/blog${slug ? `/${slug}` : ''}`; + +export function slugify(str: any) { + return String(str) + .normalize('NFKD') // split accented characters into their base characters and diacritical marks + .replace(/[\u0300-\u036f]/g, '') // remove all the accents, which happen to be all in the \u03xx UNICODE block. + .trim() // trim leading or trailing whitespace + .toLowerCase() // convert to lowercase + .replace(/[^a-z0-9 -]/g, '') // remove non-alphanumeric characters + .replace(/\s+/g, '-') // replace spaces with hyphens + .replace(/-+/g, '-'); // remove consecutive hyphens +} \ No newline at end of file diff --git a/src/mdx-components.tsx b/src/mdx-components.tsx index a0144f4..cb20a5c 100644 --- a/src/mdx-components.tsx +++ b/src/mdx-components.tsx @@ -1,6 +1,8 @@ import markdownStyles from "@/app/_components/markdown-styles.module.css"; import type { MDXComponents } from 'mdx/types'; import { MDXRemote, MDXRemoteProps } from 'next-mdx-remote/rsc'; +import Link from "next/link"; +import { slugify } from "./lib/utils"; export function useMDXComponents(components: MDXComponents): MDXComponents { return { @@ -9,6 +11,13 @@ export function useMDXComponents(components: MDXComponents): MDXComponents { } const mdxComponents = { + a: ({ children, ...rest}: any) => { children }, + img: ({ children, ...rest}: React.HTMLProps) => {children}, + h1: ({ children, ...rest}: React.HTMLProps) => ( +

+ { children } +

+ ), }; export function ContainerMDX({ source }: MDXRemoteProps) { diff --git a/tailwind.config.ts b/tailwind.config.ts index 5e29f66..9839aa9 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -5,6 +5,7 @@ const config: Config = { "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", "./src/components/**/*.{js,ts,jsx,tsx,mdx}", "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + "./src/mdx-components.tsx", ], theme: { extend: {