From bcfd107b56fb07dc24c7a91e9d3d322dee041bc8 Mon Sep 17 00:00:00 2001 From: Linh <62679553+dauinh@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:40:15 -0400 Subject: [PATCH 1/8] Fix #198: Enhance generic keywords section with information on where they can be used (#430) * update annotation doc. fix typo in overview/what-is-json-schema * modify to alternative wording * remove "object" in wording --- pages/overview/what-is-jsonschema.md | 2 +- pages/understanding-json-schema/reference/annotations.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/overview/what-is-jsonschema.md b/pages/overview/what-is-jsonschema.md index 9da7957279..727084de3c 100644 --- a/pages/overview/what-is-jsonschema.md +++ b/pages/overview/what-is-jsonschema.md @@ -70,7 +70,7 @@ else: In the above code snippet, we are performing basic validation to check if the JSON object has the required fields. Since this is a relatively simpler data, this way of checking works for now. -To show the challenges of performing data validation without using JSON Schema, we can take this exmaple in Python: +To show the challenges of performing data validation without using JSON Schema, we can take this example in Python: ```python # Without JSON Schema diff --git a/pages/understanding-json-schema/reference/annotations.md b/pages/understanding-json-schema/reference/annotations.md index 9b848ac6ad..c9cd4caa65 100644 --- a/pages/understanding-json-schema/reference/annotations.md +++ b/pages/understanding-json-schema/reference/annotations.md @@ -8,6 +8,8 @@ validation, but are used to describe parts of a schema. None of these \"annotation\" keywords are required, but they are encouraged for good practice, and can make your schema \"self-documenting\". +Annotation keywords can be used in any schema or sub-schemas. Like other keywords, they may be used once. + The `title` and `description` keywords must be strings. A \"title\" will preferably be short, whereas a \"description\" will provide a more lengthy explanation about the purpose of the data described by the From c7e1f67f6c94fbe316132ed6cff4e8e59e875669 Mon Sep 17 00:00:00 2001 From: SATYAM KUMAR <106728045+satyam-x10@users.noreply.github.com> Date: Tue, 12 Mar 2024 14:53:59 +0530 Subject: [PATCH 2/8] Broken alignment in options menu #486 (#511) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bug 🐛 Bug: Broken alignment in options menu when in mobile view #486 * Update Layout.tsx --- components/Layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Layout.tsx b/components/Layout.tsx index 4fe1914e2a..1d29183e85 100644 --- a/components/Layout.tsx +++ b/components/Layout.tsx @@ -215,7 +215,7 @@ const MobileNav = () => { const section = useContext(SectionContext); return ( -
+
Date: Tue, 12 Mar 2024 14:56:07 +0530 Subject: [PATCH 3/8] Auto smooth scroll to the top onclick of the Search (#496) --- components/Layout.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/components/Layout.tsx b/components/Layout.tsx index 1d29183e85..0ce1f878d0 100644 --- a/components/Layout.tsx +++ b/components/Layout.tsx @@ -164,7 +164,12 @@ const MainNavigation = () => { isActive={section === 'community'} />
-
+
{ + window.scrollTo({ top: 0, behavior: 'smooth' }); + }} + >
{showMobileNav === false ? ( From 5e56c9b23e71b882cb22d1705ff577fbeae4b5c4 Mon Sep 17 00:00:00 2001 From: Ayush Tiwari <84335414+ayushtiwari110@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:52:38 +0530 Subject: [PATCH 4/8] Bug-UI: Make table responsive (#512) * bug/tools-ui: make table responsive * bug/tools-ui: hide last col in sm screens --- pages/implementations/index.page.tsx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/pages/implementations/index.page.tsx b/pages/implementations/index.page.tsx index 6bcd698df6..9c8f8b134a 100644 --- a/pages/implementations/index.page.tsx +++ b/pages/implementations/index.page.tsx @@ -108,16 +108,20 @@ function ImplementationTable({ }, )}
-
+
- - + + @@ -175,7 +179,7 @@ function ImplementationTable({ key={index} className='pl-4 list-disc list-inside pl-2 separation-line' > - - - - + ); }, From d8c9fdad3c5fa36154589dc1007c0ee467402150 Mon Sep 17 00:00:00 2001 From: Dhairya Majmudar <124715224+DhairyaMajmudar@users.noreply.github.com> Date: Tue, 12 Mar 2024 20:12:23 +0530 Subject: [PATCH 5/8] Feat: Adding Scroll Button (#517) * adding scroll button * configuring next.config file --- components/Layout.tsx | 2 ++ components/ScrollButton.tsx | 36 ++++++++++++++++++++++++++++++++++++ next.config.js | 7 +++++-- public/img/scroll.svg | 14 ++++++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 components/ScrollButton.tsx create mode 100644 public/img/scroll.svg diff --git a/components/Layout.tsx b/components/Layout.tsx index 0ce1f878d0..32d66c668c 100644 --- a/components/Layout.tsx +++ b/components/Layout.tsx @@ -7,6 +7,7 @@ import { DocSearch } from '@docsearch/react'; import useStore from '~/store'; import { SectionContext } from '~/context'; import extractPathWithoutFragment from '~/lib/extractPathWithoutFragment'; +import ScrollButton from './ScrollButton'; type Props = { children: React.ReactNode; @@ -82,6 +83,7 @@ export default function Layout({ ) : (
{children}
)} +
diff --git a/components/ScrollButton.tsx b/components/ScrollButton.tsx new file mode 100644 index 0000000000..39a7d617be --- /dev/null +++ b/components/ScrollButton.tsx @@ -0,0 +1,36 @@ +import React, { useEffect, useState } from 'react'; +import Image from 'next/image'; + +function ScrollButton() { + const [backToTopButton, setBackToTopButton] = useState(false); + useEffect(() => { + window.addEventListener('scroll', () => { + if (window.scrollY > 150) { + setBackToTopButton(true); + } else { + setBackToTopButton(false); + } + }); + }, []); + + const scrollUp = () => { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }); + }; + return ( +
+ {backToTopButton && ( + + )} +
+ ); +} + +export default ScrollButton; diff --git a/next.config.js b/next.config.js index 4015155a5f..ff5b57c658 100644 --- a/next.config.js +++ b/next.config.js @@ -2,7 +2,10 @@ const nextConfig = { reactStrictMode: true, output: 'export', - pageExtensions: ['page.tsx'] + pageExtensions: ['page.tsx'], + images: { + unoptimized: true, + }, }; -module.exports = nextConfig; \ No newline at end of file +module.exports = nextConfig; diff --git a/public/img/scroll.svg b/public/img/scroll.svg new file mode 100644 index 0000000000..d49550d821 --- /dev/null +++ b/public/img/scroll.svg @@ -0,0 +1,14 @@ + + + + + + + + From ca8cd66b43121ec20d8f393eb78570ae23dfe9ff Mon Sep 17 00:00:00 2001 From: SATYAM KUMAR <106728045+satyam-x10@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:25:18 +0530 Subject: [PATCH 6/8] Bug: Problem with workflows/welcome-first-time-contrib.yml (#519) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bug 🐛 Bug: Broken alignment in options menu when in mobile view #486 * Update Layout.tsx * Update welcome-first-time-contrib.yml * yml * yml --- .github/workflows/welcome-first-time-contrib.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/welcome-first-time-contrib.yml b/.github/workflows/welcome-first-time-contrib.yml index bcaa61bfcd..1339a4a1d0 100644 --- a/.github/workflows/welcome-first-time-contrib.yml +++ b/.github/workflows/welcome-first-time-contrib.yml @@ -1,7 +1,7 @@ name: Greeting the new contributor on: - pull_request: + pull_request_target: types: [opened] issues: types: [opened] From 38fe3987b62a09b755cbb27fcd3e2b86125750cb Mon Sep 17 00:00:00 2001 From: Mintu Gogoi <127925465+utnim2@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:42:24 +0530 Subject: [PATCH 7/8] feat: added Dark theme to the website (#365) * added dark theme * completed home page * made some changes for blog pages * Doc's page done * implementations page done * doc's page done * Update .eslintrc.js * resolved code * lint * resolved conflicts and rebased * resolved conflicts and rebased * changes icons * tables, tabs groups, blog article , feedback done * search icon * reviewed changes are done --------- Co-authored-by: Jay Co-authored-by: Jay Prakash N Reddy <110524709+jayprakash25@users.noreply.github.com> --- .eslintrc.js | 43 ++--- components/Code.tsx | 4 +- components/DarkModeToggle.tsx | 42 +++++ components/DocsHelp.tsx | 12 +- components/Headlines.tsx | 8 +- components/Layout.tsx | 213 +++++++++++++++++++--- components/Sidebar.tsx | 49 +++-- components/StyledMarkdown.tsx | 16 +- context.ts | 2 + package.json | 1 + pages/_app.page.tsx | 7 +- pages/blog/index.page.tsx | 44 +++-- pages/blog/posts/[slug].page.tsx | 4 +- pages/blog/posts/manfred-case-study-es.md | 32 ++-- pages/implementations/index.page.tsx | 16 +- pages/index.page.tsx | 123 +++++++------ public/icons/book-dark.svg | 4 + public/icons/cancel.svg | 2 +- public/icons/clipboard-dark.svg | 4 + public/icons/compass-dark.svg | 4 + public/icons/eye-dark.svg | 4 + public/icons/moon.svg | 1 + public/icons/sun.svg | 1 + public/img/logos/logo-white.svg | 2 +- styles/globals.css | 42 +++-- tailwind.config.js | 1 + yarn.lock | 5 + 27 files changed, 493 insertions(+), 193 deletions(-) create mode 100644 components/DarkModeToggle.tsx create mode 100644 public/icons/book-dark.svg create mode 100644 public/icons/clipboard-dark.svg create mode 100644 public/icons/compass-dark.svg create mode 100644 public/icons/eye-dark.svg create mode 100644 public/icons/moon.svg create mode 100644 public/icons/sun.svg diff --git a/.eslintrc.js b/.eslintrc.js index cfb95e0104..0a7366fc4f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,12 +2,12 @@ module.exports = { env: { es2021: true, node: true, - browser: true + browser: true, }, settings: { react: { - version: 'detect' - } + version: 'detect', + }, }, extends: [ 'eslint:recommended', @@ -15,45 +15,46 @@ module.exports = { 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', 'plugin:@next/next/recommended', - 'plugin:prettier/recommended' + 'plugin:prettier/recommended', ], parser: '@typescript-eslint/parser', parserOptions: { ecmaFeatures: { - jsx: true + jsx: true, }, ecmaVersion: 12, - sourceType: 'module' + sourceType: 'module', }, - plugins: [ - 'react', - '@typescript-eslint', - 'prettier' - ], + plugins: ['react', '@typescript-eslint', 'prettier'], rules: { 'array-bracket-spacing': ['error', 'never'], 'object-curly-spacing': ['error', 'always'], - 'react/jsx-curly-spacing': ['error', { 'when': 'never', 'children': true }], - 'indent': ['error', 2, { 'SwitchCase': 1 }], + + 'react/jsx-curly-spacing': ['error', { when: 'never', children: true }], + indent: ['error', 2, { SwitchCase: 1 }], 'linebreak-style': ['error', 'unix'], - 'quotes': ['error', 'single'], + quotes: ['error', 'single'], + 'jsx-quotes': ['error', 'prefer-single'], 'no-eval': 'error', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/ban-ts-comment': 'off', - '@typescript-eslint/no-unused-vars': ['error', { 'ignoreRestSiblings': true }], + '@typescript-eslint/no-unused-vars': [ + 'error', + { ignoreRestSiblings: true }, + ], '@typescript-eslint/type-annotation-spacing': ['error'], 'react/no-unescaped-entities': 'off', 'react/jsx-tag-spacing': 'error', 'react-hooks/exhaustive-deps': 'off', - 'keyword-spacing': ['error', { 'before': true, 'after': true }], - 'comma-spacing': ['error', { 'before': false, 'after': true }], - 'key-spacing': ['error', { 'beforeColon': false, 'afterColon': true }], + 'keyword-spacing': ['error', { before: true, after: true }], + 'comma-spacing': ['error', { before: false, after: true }], + 'key-spacing': ['error', { beforeColon: false, afterColon: true }], '@next/next/no-img-element': 'off', 'no-multi-spaces': 'error', 'space-infix-ops': 'error', 'space-before-blocks': 'error', - 'arrow-spacing': 'error' - } -} + 'arrow-spacing': 'error', + }, +}; diff --git a/components/Code.tsx b/components/Code.tsx index 1c27d6be56..9524ff1ea9 100644 --- a/components/Code.tsx +++ b/components/Code.tsx @@ -8,8 +8,8 @@ export default function Code({ children }: { children: any }) { return ( diff --git a/components/DarkModeToggle.tsx b/components/DarkModeToggle.tsx new file mode 100644 index 0000000000..0c895a0dab --- /dev/null +++ b/components/DarkModeToggle.tsx @@ -0,0 +1,42 @@ +import { useTheme } from 'next-themes'; +import { useEffect, useState } from 'react'; +import React from 'react'; + +const DarkModeToggle = () => { + const { theme, setTheme } = useTheme(); + const [isDarkMode, setIsDarkMode] = useState(theme === 'dark'); + const [isClickable, setIsClickable] = useState(true); + const [img, setImg] = useState('/icons/moon.svg'); + + const toggleDarkMode = () => { + if (!isClickable) return; + + setIsClickable(false); + const newTheme = isDarkMode ? 'light' : 'dark'; + setTheme(newTheme); + setIsDarkMode(!isDarkMode); + + setTimeout(() => { + setIsClickable(true); + }, 500); + }; + + useEffect(() => { + if (!theme) setTheme('light'); + + const img = theme === 'dark' ? '/icons/sun.svg' : '/icons/moon.svg'; + setImg(img); + }, [theme, setTheme]); + + return ( + + ); +}; + +export default DarkModeToggle; diff --git a/components/DocsHelp.tsx b/components/DocsHelp.tsx index b41bf495ad..ca5333ae90 100644 --- a/components/DocsHelp.tsx +++ b/components/DocsHelp.tsx @@ -65,7 +65,7 @@ export function DocsHelp() { }; return ( -
+

Need Help?

@@ -90,7 +90,7 @@ export function DocsHelp() { value='Y' >
+ {children} ), @@ -316,7 +318,7 @@ const StyledMarkdownBlock = ({ markdown }: { markdown: string }) => { }, blockquote: { component: ({ children }) => ( -
+
{children}
), @@ -383,11 +385,11 @@ const StyledMarkdownBlock = ({ markdown }: { markdown: string }) => { return (
{label && ( -
+
{label}
)} -
+
page); const AnyComponent = Component as any; - return getLayout(, pageProps); + return ( + + {getLayout(, pageProps)} + + ); } export default MyApp; diff --git a/pages/blog/index.page.tsx b/pages/blog/index.page.tsx index b16dd14713..66228da149 100644 --- a/pages/blog/index.page.tsx +++ b/pages/blog/index.page.tsx @@ -20,12 +20,7 @@ export type blogCategories = | 'Update' | 'Opinion'; -export async function getStaticProps({ - query, -}: { - params: string; - query: any; -}) { +export async function getStaticProps({ query }: { query: any }) { const files = fs.readdirSync(PATH); const blogPosts = files .filter((file) => file.substr(-3) === '.md') @@ -132,36 +127,37 @@ export default function StaticMarkdownPage({ JSON Schema Blog -
+
{recentBlog[0] && ( -
-
+
+
hero image example
-
-
+
+
{recentBlog[0].frontmatter.type}
-

+

{recentBlog[0].frontmatter.title}

-
+ +

{recentBlog[0].frontmatter.authors[0].name}

-
+
{recentBlog[0].frontmatter.date} · {timeToRead}{' '} min read @@ -206,24 +202,25 @@ export default function StaticMarkdownPage({
{/* Filter Buttons */} +
{allTags.map((tag) => ( ))} - + Filter blog posts by category...
{/* filterTag === frontmatter.type && */} -
+
{blogPosts .filter((post) => { if (!currentFilterTag || currentFilterTag === 'All') return true; @@ -243,7 +240,7 @@ export default function StaticMarkdownPage({ return (
-
+
{ e.preventDefault(); e.stopPropagation(); @@ -269,7 +266,8 @@ export default function StaticMarkdownPage({
{frontmatter.title}
-
+ +
-
+
{frontmatter.date && ( {date.toLocaleDateString('en-us', { diff --git a/pages/blog/posts/[slug].page.tsx b/pages/blog/posts/[slug].page.tsx index 32d3c75dae..27b5f1790d 100644 --- a/pages/blog/posts/[slug].page.tsx +++ b/pages/blog/posts/[slug].page.tsx @@ -34,7 +34,7 @@ export default function StaticMarkdownPage({ {frontmatter.title} -
+
{frontmatter.date && (
@@ -57,7 +57,7 @@ export default function StaticMarkdownPage({
{' '} Go back to blog diff --git a/pages/blog/posts/manfred-case-study-es.md b/pages/blog/posts/manfred-case-study-es.md index 2dade39305..0411a29269 100644 --- a/pages/blog/posts/manfred-case-study-es.md +++ b/pages/blog/posts/manfred-case-study-es.md @@ -1,6 +1,6 @@ --- -title: "Transformando la industria de la contratación técnica con JSON Schema" -date: "2024-02-05" +title: 'Transformando la industria de la contratación técnica con JSON Schema' +date: '2024-02-05' type: Case Study cover: /img/posts/2024/manfred-case-study/background.webp authors: @@ -12,14 +12,16 @@ authors: photo: /img/avatars/yeray.webp twitter: ydarias byline: Lead Software Engineer -excerpt: "Descubre cómo Manfred ha usado JSON Schema para transformar la industria de la contratación técnica." +excerpt: 'Descubre cómo Manfred ha usado JSON Schema para transformar la industria de la contratación técnica.' --- + [Manfred](https://www.getmanfred.com/) es una plataforma de gestión de talento tecnológico con sede en España que permite a sus usuarios gestionar sus carreras profesionales manteniendo un control absoluto sobre sus datos. Manfred ha sido creada por desarrolladores para desarrolladores, liderando un cambio de paradigma en la industria de contratación técnica. Este case study muestra cómo Manfred utilizó JSON Schema para potenciar la transparencia, empoderar a los desarrolladores y fomentar la interoperabilidad dentro del ecosistema de reclutamiento tecnológico. ## Reto + Manfred inició su andadura con la ambiciosa misión de revolucionar el panorama de reclutamiento y para ello decidió apostar por la transparencia total y una estrategia Open Data. Las plataformas de reclutamiento tradicionales se han caracterizado por ofrecer un acceso limitado a los datos personales, a menudo proporcionando archivos poco accionables como PDFs. Manfred apostó por ofrecer una propuesta de valor única ofreciendo una solución que empoderara a los desarrolladores para poseer sus datos en el formato de intercambio universal: JSON. -
+
_"Mientras que otras plataformas de recruiting se basan en la captura de tus datos para luego entregarlos en formatos poco interoperables como PDF, nuestra propuesta fue completamente diferente. Tus datos son tuyos y en JSON, el estándar de facto." - **David Bonilla** - Founder_
@@ -28,9 +30,10 @@ Manfred inició su andadura con la ambiciosa misión de revolucionar el panorama
## Solution + Reconociendo la necesidad de un enfoque developer-friendly, Manfred apostó por JSON Schema como la piedra angular de su plataforma al crear el [MAC](https://github.com/getmanfred/mac), un formato estándar y open source para definir y compartir currículums. Al ofrecer a los desarrolladores sus datos en formato JSON ofreciendo además el JSON Schema (el MAC) como el mapa para usarlo, Manfred transformó la forma en que los profesionales interactuaban con su propia información. Este enfoque innovador no sólo permitió a Manfred diferenciarse de sus competidores, sino que también propició un nuevo nivel de transparencia en los procesos de contratación al ofrecer un enfoque basado en datos estructurados y accionables con enormes capacidades de interoperabilidad. -
+
_"Tras probar diferentes formatos, descubrimos que usando JSON junto a JSON Schema tendríamos la flexibilidad de poder hacer prácticamente cualquier cosa." - **David Bonilla** - Founder_
@@ -39,35 +42,38 @@ Reconociendo la necesidad de un enfoque developer-friendly, Manfred apostó por
## Impacto + La adopción de JSON Schema tuvo un impacto profundo en la estrategia de Manfred, contribuyendo a la transparencia, flexibilidad y escalabilidad de la plataforma. A diferencia de las plataformas convencionales que proporcionan datos estáticos y poco accionables, Manfred empoderó a los desarrolladores para utilizar sus propios datos de manera efectiva. La adopción de JSON Schema afectó muy positivamente en distintas áreas: -* **Transparencia y Accesibilidad**: El compromiso de Manfred con los datos abiertos sumado al uso de JSON Schema permitió a los desarrolladores acceder, comprender y navegar sus datos profesionales de una manera fácil e intuitiva. Esta transparencia se convirtió en un factor clave de la confianza entre Manfred y la comunidad. -* **Comunidad**: El uso de JSON Schema por parte de Manfred fue percibido positivamente por la comunidad de desarrolladores, fortaleciendo su posición como una plataforma que pone a los desarrolladores en el centro. -* **Ventaja competitiva**: La propuesta de valor única de proporcionar datos accionables en formato JSON diferenció a Manfred en una industria muy competitiva. Los desarrolladores ahora podían aprovechar el poder de sus propios datos, tomando mejores decisiones sobre sus carreras. -* **Flexibilidad y Escalabilidad**: JSON Schema proporcionó la flexibilidad necesaria para adaptarse a las necesidades de una industria cambiante y facilitando un crecimiento más rápido de la base de usuarios. +- **Transparencia y Accesibilidad**: El compromiso de Manfred con los datos abiertos sumado al uso de JSON Schema permitió a los desarrolladores acceder, comprender y navegar sus datos profesionales de una manera fácil e intuitiva. Esta transparencia se convirtió en un factor clave de la confianza entre Manfred y la comunidad. +- **Comunidad**: El uso de JSON Schema por parte de Manfred fue percibido positivamente por la comunidad de desarrolladores, fortaleciendo su posición como una plataforma que pone a los desarrolladores en el centro. +- **Ventaja competitiva**: La propuesta de valor única de proporcionar datos accionables en formato JSON diferenció a Manfred en una industria muy competitiva. Los desarrolladores ahora podían aprovechar el poder de sus propios datos, tomando mejores decisiones sobre sus carreras. +- **Flexibilidad y Escalabilidad**: JSON Schema proporcionó la flexibilidad necesaria para adaptarse a las necesidades de una industria cambiante y facilitando un crecimiento más rápido de la base de usuarios.
## Resultados clave + La adopción de JSON Schema permitió que partners y 3rd parties se integraran con la plataforma de manera más fácil y rápida. La validación e intercambio de información entre Manfred y sus partners se convirtió en un proceso trivial. -
+
_“Usar JSON Schema demostró ser una decisión clave para que la plataforma fuera lo suficientemente flexible y escalable como para soportar al crecimiento de la Empresa.” - **David Bonilla** - Founder_
## Sobre Manfred -En sus propias palabras: + +En sus propias palabras:

“Manfred es una empresa de reclutamiento. Bueno, para ser justos, es una empresa que nació para cambiar el reclutamiento, ayudando a la comunidad con procesos más estructurados y transparentes y un enfoque basado en las personas.

Ayudamos a las personas a alcanzar sus metas profesionales conectando individuos y empresas que comparten objetivos, valores e intereses. Buscamos, entrevistamos, asesoramos y presentamos perfiles tecnológicos a empresas. Pero nuestra misión va más allá: buscamos ayudarlos a lo largo de su trayectoria profesional. Estamos allí, independientemente de la etapa en la que te encuentres, ya sea que estés buscando activamente un trabajo o no, ya sea que necesites consejos o no estés seguro de cómo reorientar tu carrera.

-

Nuestra prioridad siempre han sido las personas. Nuestro objetivo es devolver a todos los desarrolladores lo que no nos han dado. Formamos parte de una comunidad abierta y colaborativa, pero tiene un problema: la adquisición y gestión de talento.

+

Nuestra prioridad siempre han sido las personas. Nuestro objetivo es devolver a todos los desarrolladores lo que no nos han dado. Formamos parte de una comunidad abierta y colaborativa, pero tiene un problema: la adquisición y gestión de talento.

No movemos cajas, no movemos recursos. MovemosAyudamos a las personas.”

image -
\ No newline at end of file +
diff --git a/pages/implementations/index.page.tsx b/pages/implementations/index.page.tsx index 9c8f8b134a..9471a5e7ce 100644 --- a/pages/implementations/index.page.tsx +++ b/pages/implementations/index.page.tsx @@ -50,8 +50,8 @@ export default function ImplementationsPages({ hyperLibaries: ImplementationByLanguage[]; }) { return ( - -
+ +
Tools Validators @@ -80,7 +80,7 @@ function ImplementationTable({ const router = useRouter(); return ( <> -
+
{implementationsByLanguage.map( (implementationByLanguage: any, index: number) => { const slug = @@ -108,18 +108,18 @@ function ImplementationTable({ }, )}
-
+
- + About DraftsLicense + Drafts + + License +
+ + + {allDrafts ?.sort((a, b) => DRAFT_ORDER.indexOf(a) < @@ -196,7 +200,7 @@ function ImplementationTable({ ) ?.map((draft: string | number) => ( {typeof draft === 'number' @@ -205,7 +209,9 @@ function ImplementationTable({ ))} {implementation.license} + {implementation.license} +
- - @@ -200,7 +200,7 @@ function ImplementationTable({ ) ?.map((draft: string | number) => ( {typeof draft === 'number' diff --git a/pages/index.page.tsx b/pages/index.page.tsx index 7cc29673b0..07f13c4dde 100644 --- a/pages/index.page.tsx +++ b/pages/index.page.tsx @@ -167,35 +167,38 @@ const Home = (props: any) => {
{/* Hero */} -
+
-

+

Build more. Break less. Empower others.

-

+ +

JSON Schema enables the confident and reliable use of the JSON data format.

-
+ +
Getting started Join Slack -
+
+

Search

@@ -220,7 +223,8 @@ const Home = (props: any) => { className='w-40 mx-auto' />
-

+ +

Please visit the official list of{' '} {

{/* Feature */}
-
-

+
+

Why JSON Schema?

-

+

While JSON is probably the most popular format for exchanging data, JSON Schema is the vocabulary that enables JSON data consistency, validity, and interoperability at scale. @@ -247,22 +251,22 @@ const Home = (props: any) => {

{/* Feature 4 section*/}
-
-

+
+

Streamline testing and validation

-

+

Simplify your validation logic to reduce your code’s complexity and save time on development. Define constraints for your data structures to catch and prevent errors, inconsistencies, and invalid data.

-
-

+
+

Exchange data seamlessly

-

+

Establish a common language for data exchange, no matter the scale or complexity of your project. Define precise validation rules for your data structures to create shared understanding @@ -270,21 +274,21 @@ const Home = (props: any) => { platforms.

-
-

+
+

Document your data

-

+

Create a clear, standardized representation of your data to improve understanding and collaboration among developers, stakeholders, and collaborators.

-
-

+
+

Vibrant tooling ecosystem

-

+

Adopt JSON Schema with an expansive range of community-driven tools, libraries, and frameworks across many programming languages. @@ -293,12 +297,12 @@ const Home = (props: any) => {

-
-
+
+ @@ -311,17 +315,17 @@ const Home = (props: any) => { className='w-5/6 mx-auto lg:w-[600px] xl:w-[800px]' />
-

+

Explore the JSON Schema Ecosystem

-

+

Discover JSON Schema tooling to help your organization leverage the benefits of JSON Schema. Because JSON Schema is much more than a Specification, it is a vibrant ecosystem of Validators, Generators, Linters, and other JSON Schema Utilities made by this amazing Community.

-
@@ -333,10 +337,10 @@ const Home = (props: any) => {
-

+

Welcome to the JSON Schema Community

-

+

With over 60 million weekly downloads, JSON Schema has a large and active developer community across the world. Join the Community to learn, share ideas, ask questions, develop JSON Schema tooling and @@ -344,9 +348,9 @@ const Home = (props: any) => {

-
+
-

+

Join the JSON Schema Slack Workspace!

@@ -355,35 +359,35 @@ const Home = (props: any) => { className='w-full mb-4' /> {/*

Event

*/} -

+

Join our Slack to ask questions, get feedback on your projects, and connect with +5000 practitioners and experts.

-
{/* BlogPost Data */} -
+
-

+

The JSON Schema Blog

-

+

{' '} {blogPosts[0].frontmatter.title}

@@ -394,6 +398,7 @@ const Home = (props: any) => { text={blogPosts[0].frontmatter.excerpt} />
+
{ }} />
-

+

{blogPosts[0].frontmatter.authors[0].name}

-
+
{blogPosts[0].frontmatter.date} · {timeToRead}{' '} min read @@ -414,33 +419,34 @@ const Home = (props: any) => {
+
Read more{' '}
-
-

+
+

JSON Schema Community Meetings & Events

-

+

We hold monthly Office Hours and weekly Open Community Working Meetings. Office Hours are every first Tuesday of the month at 15:00 BST, and by appointment. Open Community Working Meetings are every Monday at 14:00 PT.

- -
+ @@ -485,12 +492,12 @@ const Home = (props: any) => { {/* News & Blogs */} -
-
-

+
+
+

Start contributing to JSON Schema

-

- + About + Drafts + License