- Want to build a tailored customer support platform?
- Need expert technical guidance or have questions about extended Open
- Self Service features and offer?
-
+ Want to build a tailored customer support platform?
+ Need expert technical guidance or have questions about extended Open
+ Self Service features and offer?
+
+ Fill out the form below and we'll get back to you as soon as possible.>
+ }
+ pageName="Contact - Open Self Service"
+ fields={[
+ {
+ __typename: 'text',
+ label: 'Email',
+ type: 'email',
+ required: true,
+ name: 'email',
+ },
+ {
+ __typename: 'text',
+ label: 'First Name',
+ type: 'text',
+ name: 'firstname',
+ },
+ { __typename: 'text', label: 'Last Name', type: 'text', name: 'lastname' },
+ {
+ __typename: 'textarea',
+ label: 'Message',
+ required: true,
+ name: 'message',
+ rows: 2,
+ },
+ ]}
+ consents={[
+ {
+ name: 'email_contact_consent',
+ required: true,
+ label: (
+ <>
+ I consent to the processing of my personal data by Hycom SA
+ as described in the{' '}
+
+ information clause
+ {' '}
+ to respond to inquiries and provide information about products
+ and services.
+ >
+ ),
+ },
+ ]}
+ />
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Contact;
diff --git a/apps/docs/src/pages/dxp/dxp.module.scss b/apps/docs/src/pages/dxp/dxp.module.scss
new file mode 100644
index 00000000..2ede801c
--- /dev/null
+++ b/apps/docs/src/pages/dxp/dxp.module.scss
@@ -0,0 +1 @@
+@use '../main.module';
diff --git a/apps/docs/src/pages/dxp.tsx b/apps/docs/src/pages/dxp/index.tsx
similarity index 59%
rename from apps/docs/src/pages/dxp.tsx
rename to apps/docs/src/pages/dxp/index.tsx
index 038fa6f4..da733dc1 100644
--- a/apps/docs/src/pages/dxp.tsx
+++ b/apps/docs/src/pages/dxp/index.tsx
@@ -1,23 +1,49 @@
-import clsx from 'clsx';
-import type { ReactNode } from 'react';
+import React, { ReactNode } from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import GithubIcon from '@site/src/assets/icons/github.svg';
+import { BenefitCardProps, BenefitsSection } from '@site/src/components/BenefitsSection';
import { DXPArchitectureSection } from '@site/src/components/DXPArchitectureSection';
-import { DXPBenefitsSection } from '@site/src/components/DXPBenefitsSection';
import { DXPComplexPlatformsSection } from '@site/src/components/DXPComplexPlatformsSection';
import { DXPFeaturesSection } from '@site/src/components/DXPFeaturesSection';
-import { DXPFooterSection } from '@site/src/components/DXPFooterSection';
import { DXPIntegrationsSection } from '@site/src/components/DXPIntegrationsSection';
import { DXPUseCasesSection } from '@site/src/components/DXPUseCasesSection';
+import { FooterSection } from '@site/src/components/FooterSection';
import { HeroBannerSection } from '@site/src/components/HeroBannerSection';
import Layout from '@theme/Layout';
-import styles from './index.module.css';
+import CodeIcon from '../../assets/icons/code.svg';
+import NetworkIcon from '../../assets/icons/network.svg';
+import PenToolIcon from '../../assets/icons/pentool.svg';
+
+import styles from './dxp.module.scss';
+
+const benefits: Array = [
+ {
+ team: 'Frontend Developers',
+ icon: ,
+ title: 'Quick start with zero boilerplate',
+ borderColor: 'blue',
+ },
+ {
+ team: 'Content Teams',
+ icon: ,
+ title: 'Structured CMS and ready to use content models',
+ borderColor: 'light',
+ },
+ {
+ team: 'Solution Architects',
+ icon: ,
+ title: 'Flexible, composable stack as a base for future scaling',
+ borderColor: 'light',
+ },
+];
export default function DXPStarter(): ReactNode {
const { siteConfig } = useDocusaurusContext();
+
return (
-
+
+ Ready to
+ get started?
+ >
+ }
+ description="Build your next digital experience platform with our composable frontend starter kit."
+ primaryButton={{
+ text: 'See DXP demo app',
+ url: 'https://demo-dxp.openselfservice.com',
+ target: '_blank',
+ }}
+ secondaryButton={{
+ text: 'See on GitHub',
+ url: '"https://github.com/o2sdev/dxp-starter-kit"',
+ iconLeft: ,
+ target: 'blank',
+ }}
+ />
diff --git a/apps/docs/src/pages/index.tsx b/apps/docs/src/pages/index.tsx
index 2220129c..a92897c0 100644
--- a/apps/docs/src/pages/index.tsx
+++ b/apps/docs/src/pages/index.tsx
@@ -2,19 +2,29 @@ import type { ReactNode } from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import Cerrad from '@site/src/assets/logos/Cerrad.svg';
+import Osadkowski from '@site/src/assets/logos/Osadkowski.svg';
import { HeroBannerSection } from '@site/src/components/HeroBannerSection';
import { HomepageAboutSection } from '@site/src/components/HomepageAboutSection';
import { HomepageArchitectureSection } from '@site/src/components/HomepageArchitectureSection';
import { HomepageBenefitsSection } from '@site/src/components/HomepageBenefitsSection';
-import HomepageJoinTheWaitlistSection from '@site/src/components/HomepageJoinTheWaitlistSection';
import { HomepageUseCases } from '@site/src/components/HomepageUseCases';
import Layout from '@theme/Layout';
-import styles from './index.module.css';
+import Bosch from '../assets/logos/Bosch.svg';
+import DeutscheTelekom from '../assets/logos/DeutscheTelekom.svg';
+import DormerPramet from '../assets/logos/DormerPramet.svg';
+import Fortum from '../assets/logos/Fortum.svg';
+import OrangeEnergia from '../assets/logos/OrangeEnergia.svg';
+import { ClientsSection } from '../components/ClientsSection';
+import { Body, BodyBold } from '../components/Typography';
+
+import styles from './main.module.scss';
export default function Home(): ReactNode {
const { siteConfig } = useDocusaurusContext();
+
return (
@@ -34,10 +44,17 @@ export default function Home(): ReactNode {
}
description={
<>
- Open Self Service
- is an open-source framework that lets you easily integrate APIs, unify data,
- and build scalable, high-performance customer support portals with Next.js,
- TypeScript, and NestJS.
+
+ Open Self Service is an open-source framework for building modern
+ customer-facing portals in composable architecture. It helps you
+ integrate APIs, unify data, and deliver scalable, high-performance
+ self-service experiences using Next.js, TypeScript, and NestJS.
+
+
+ The framework provides the frontend layer – designed to connect with
+ your existing backend services or integrate with headless platforms
+ using our ready-to-use connectors.
+
>
}
cliCommand="npx create-o2s-app"
@@ -54,6 +71,31 @@ export default function Home(): ReactNode {
alt: 'Laptop with connecting nodes illustration',
}}
/>
+
+
+
+
+ We’ve spent over a decade designing, building, and operating
+ self-service portals and digital platforms across industries. Our
+ experience spans telecom, energy, manufacturing, and financial
+ services — with solutions used by millions of end users.
+
+ >
+ }
+ clients={[
+ { name: 'Orange Energia', img: },
+ { name: 'Osadkowski', img: },
+ { name: 'Fortum', img: },
+ { name: 'Dormer Pramet', img: },
+ { name: 'Cerrad', img: },
+ { name: 'Deutsche Telekom', img: },
+ { name: 'Bosch', img: },
+ ]}
+ />
+
+
diff --git a/apps/docs/src/pages/index.module.css b/apps/docs/src/pages/main.module.scss
similarity index 100%
rename from apps/docs/src/pages/index.module.css
rename to apps/docs/src/pages/main.module.scss
diff --git a/apps/docs/src/pages/markdown-page.md b/apps/docs/src/pages/markdown-page.md
deleted file mode 100644
index 9756c5b6..00000000
--- a/apps/docs/src/pages/markdown-page.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Markdown page example
----
-
-# Markdown page example
-
-You don't need React to write simple standalone pages.
diff --git a/apps/docs/src/pages/partners/apply.tsx b/apps/docs/src/pages/partners/apply.tsx
new file mode 100644
index 00000000..8c9fe3af
--- /dev/null
+++ b/apps/docs/src/pages/partners/apply.tsx
@@ -0,0 +1,262 @@
+import React from 'react';
+
+import HubspotForm from '@site/src/components/HubspotForm';
+
+import Layout from '@theme/Layout';
+
+import { GuidesSection } from '../../components/GuidesSection';
+import { Body } from '../../components/Typography';
+import styles from '../contact/contact.module.scss';
+
+import { guides } from './index';
+
+const PartnershipApply = () => {
+ const portalId = '143969481';
+ const formId = 'd8af9cd0-4e5e-427b-b4c7-324dffecab2e';
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ Partner
+ application
+
+
+ Are you working on headless or composable customer support portals,
+ large-scale digital platforms or any composable frontends? Join our network
+ of agencies and integrators building modern digital experiences.
+
+
+
+
+
+ );
+};
+
+export default PartnershipApply;
diff --git a/apps/docs/src/pages/partners/index.tsx b/apps/docs/src/pages/partners/index.tsx
new file mode 100644
index 00000000..415d5bb3
--- /dev/null
+++ b/apps/docs/src/pages/partners/index.tsx
@@ -0,0 +1,181 @@
+import React, { ReactNode } from 'react';
+
+import ArrowDown from '@site/src/assets/icons/ArrowDown.svg';
+import Icon_call from '@site/src/assets/icons/icon call.svg';
+import Icon_handshake from '@site/src/assets/icons/icon handshake.svg';
+import Icon_text from '@site/src/assets/icons/icon text.svg';
+import Icon_add_logo from '@site/src/assets/icons/o2s-icon-add_logo.svg';
+import Icon_badge from '@site/src/assets/icons/o2s-icon-badge.svg';
+import Icon_contact from '@site/src/assets/icons/o2s-icon-contact.svg';
+import Icon_loop from '@site/src/assets/icons/o2s-icon-loop.svg';
+import Icon_roadmap from '@site/src/assets/icons/o2s-icon-roadmap.svg';
+import Icon_support from '@site/src/assets/icons/o2s-icon-support.svg';
+import { BenefitCardProps, BenefitsSection } from '@site/src/components/BenefitsSection';
+import { HeroBannerSection } from '@site/src/components/HeroBannerSection';
+
+import Layout from '@theme/Layout';
+
+import { FooterSection } from '../../components/FooterSection';
+import { Guide, GuidesSection } from '../../components/GuidesSection';
+import { Body } from '../../components/Typography';
+
+import styles from './partners.module.scss';
+
+const whyJoin: Array = [
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Dedicated technical support & onboarding',
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Direct contact with our core team',
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Roadmap feedback loop',
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Access to early features and roadmap',
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Implementation Partner badge',
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ iconPosition: 'left',
+ title: 'Your logo on our website',
+ borderColor: 'light',
+ },
+];
+
+export const guides: Array = [
+ {
+ title: 'Submit your application',
+ description: 'Tell us about your experience and goals',
+ icon: ,
+ badge: '2 min',
+ },
+ {
+ title: 'Short intro call to align on goals',
+ description: "We'll discuss how we can work together",
+ icon: ,
+ badge: '20 min',
+ },
+ {
+ title: 'Get listed & start collaborating',
+ description: 'Join our partner network and grow together',
+ icon: ,
+ badge: '24h',
+ },
+];
+
+export default function Partnership(): ReactNode {
+ return (
+
+
+
+
+
+
+
+
+
+ Build with us. Help shape our
+ early partner network.
+
+ }
+ description={
+ <>
+
+ Are you working on headless or composable customer portals,{' '}
+
+ digital self-service apps, or large-scale frontend platforms?
+
+
+ We’re building a network of forward-thinking agencies and integrators
+ exploring the future of composable frontends. Join us in the early stage
+ and get access to the tools, support, and influence on where we go next.
+
+ >
+ }
+ mainLink={{
+ text: 'Apply to become a partner',
+ url: '#how-to-join',
+ iconRight: ,
+ }}
+ />
+
+
+
+ Why join our Partner Program?
+ >
+ }
+ benefits={whyJoin}
+ />
+
+
+
+
+ How it works
+ >
+ }
+ guides={guides}
+ info={{
+ title: 'Ready to join?',
+ description: (
+ <>
+ We’re looking for{' '}
+
+ early partners
+ {' '}
+ who want to help shape the future of customer self-service
+ platforms.
+ >
+ ),
+ link: {
+ text: 'Fill out the application form',
+ url: '/partners/apply',
+ },
+ subtitle: 'Application takes 2 minutes to complete',
+ }}
+ />
+
+
+ );
+}
diff --git a/apps/docs/src/pages/partners/partners.module.scss b/apps/docs/src/pages/partners/partners.module.scss
new file mode 100644
index 00000000..2ede801c
--- /dev/null
+++ b/apps/docs/src/pages/partners/partners.module.scss
@@ -0,0 +1 @@
+@use '../main.module';
diff --git a/apps/docs/src/pages/support/developers.tsx b/apps/docs/src/pages/support/developers.tsx
new file mode 100644
index 00000000..efe7544b
--- /dev/null
+++ b/apps/docs/src/pages/support/developers.tsx
@@ -0,0 +1,152 @@
+import React, { ReactNode } from 'react';
+
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+
+import Icon_Discord2 from '@site/src/assets/icons/Discord2.svg';
+import Icon_FolderOpenDot from '@site/src/assets/icons/FolderOpenDot.svg';
+import Icon_Github2 from '@site/src/assets/icons/Github2.svg';
+import Icon_Mail from '@site/src/assets/icons/Mail.svg';
+import Icon_Map from '@site/src/assets/icons/Map.svg';
+import Icon_PencilLine from '@site/src/assets/icons/PencilLine.svg';
+import Icon_discord from '@site/src/assets/icons/discord.svg';
+import { BenefitCardProps, BenefitsSection } from '@site/src/components/BenefitsSection';
+import { HeroBannerSection } from '@site/src/components/HeroBannerSection';
+
+import Layout from '@theme/Layout';
+
+import { FooterSection } from '../../components/FooterSection';
+import { Body } from '../../components/Typography';
+
+import styles from './support.module.scss';
+
+const offer: Array = [
+ {
+ icon: ,
+ title: 'Documentation & Guides',
+ description:
+ 'Clear and comprehensive documentation to help you get started, integrate APIs, and build custom modules.',
+ link: {
+ text: 'Read the docs',
+ url: '/docs',
+ },
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ title: 'Join the Discord Community',
+ description: 'Ask questions, get support, and connect with other developers building with O2S.',
+ link: {
+ text: 'Join Discord',
+ url: 'https://discord.gg/4R568nZgsT',
+ target: '_blank',
+ },
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ title: 'GitHub Issues & Discussions',
+ description: 'Report bugs, request features, or participate in open discussions.',
+ link: {
+ text: 'Go to GitHub',
+ url: 'https://github.com/o2sdev/openselfservice',
+ target: '_blank',
+ },
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ title: 'Public Roadmap',
+ description: 'See what’s planned, what’s in progress, and what’s already shipped. Shape it with us.',
+ link: {
+ text: 'View roadmap',
+ url: 'https://github.com/orgs/o2sdev/projects/2',
+ target: '_blank',
+ },
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ title: 'Technical Blog',
+ description: 'Explore deep-dives into architecture, integrations, and real-world examples of using O2S.',
+ link: {
+ text: 'Read the blog',
+ url: '/blog',
+ },
+ borderColor: 'light',
+ },
+ {
+ icon: ,
+ title: 'Contact us',
+ description:
+ 'Need expert technical guidance or have questions about extended Open Self Service features and offer?',
+ link: {
+ text: 'Go to contact form',
+ url: '/contact',
+ },
+ borderColor: 'light',
+ },
+];
+
+export default function SupportStandard(): ReactNode {
+ const { siteConfig } = useDocusaurusContext();
+
+ return (
+
+
+
+
+
+
+
+
+
+ Everything developers need to{' '}
+ build with confidence
+
+ }
+ description={
+
+ Open Self Service provides a developer-first experience with clear guidance,
+ open collaboration, and active community support. Whether you’re just
+ getting started or maintaining a production setup, we’ve got you covered.
+
+ }
+ mainLink={{
+ text: 'Join the Discord Community',
+ url: 'https://discord.gg/4R568nZgsT',
+ iconLeft: ,
+ target: '_blank',
+ }}
+ tertiaryLink={{
+ text: 'Enterprise Support',
+ url: '/support/enterprise',
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+ Join the community and start building with O2S.>}
+ primaryButton={{
+ text: 'Join the Discord Community',
+ url: 'https://discord.gg/4R568nZgsT',
+ iconLeft: ,
+ target: '_blank',
+ }}
+ />
+
+
+
+
+ );
+}
diff --git a/apps/docs/src/pages/support/enterprise.tsx b/apps/docs/src/pages/support/enterprise.tsx
new file mode 100644
index 00000000..04df2370
--- /dev/null
+++ b/apps/docs/src/pages/support/enterprise.tsx
@@ -0,0 +1,144 @@
+import React from 'react';
+
+import HubspotForm from '@site/src/components/HubspotForm';
+
+import Layout from '@theme/Layout';
+
+import CircleCheckIcon from '../../assets/icons/circle-check.svg';
+import styles from '../contact/contact.module.scss';
+
+const SupportEnterprise = () => {
+ const portalId = '143969481';
+ const formId = '6b3de277-12b7-4850-816b-2dc93d7ba30d';
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ Enterprise
+ support
+
+
+ Need more confidence for production? Our Enterprise offering is designed for
+ teams that require reliability, hands-on support, and architectural
+ flexibility.
+
+
+ {[
+ 'Priority support with SLA',
+ 'Implementation support and onboarding',
+ 'Code and architecture reviews',
+ 'Architecture and performance audits',
+ 'Custom integrations (CRMs, support platforms, CMSs…)',
+ 'Influence on roadmap and access to private betas',
+ ].map((item, index) => (
+
+
+ {item}
+
+ ))}
+
+
+
+ Interested in using Open Self Service in a production environment? Tell
+ us about your project and we’ll get in touch with tailored options.
+ >
+ }
+ pageName="Enterprise support - Open Self Service"
+ fields={[
+ {
+ __typename: 'text',
+ label: 'First Name',
+ type: 'text',
+ required: true,
+ name: 'firstname',
+ objectTypeId: '0-1',
+ },
+ {
+ __typename: 'text',
+ label: 'Last Name',
+ type: 'text',
+ required: true,
+ name: 'lastname',
+ objectTypeId: '0-1',
+ },
+ {
+ __typename: 'text',
+ label: 'Work Email',
+ type: 'email',
+ required: true,
+ name: 'email',
+ objectTypeId: '0-1',
+ },
+ {
+ __typename: 'text',
+ label: 'Company',
+ type: 'text',
+ name: 'name',
+ objectTypeId: '0-2',
+ },
+ {
+ __typename: 'textarea',
+ label: 'Your needs',
+ name: 'your_needs',
+ rows: 2,
+ objectTypeId: '0-1',
+ },
+ ]}
+ consents={[
+ {
+ name: 'email_contact_consent',
+ required: true,
+ label: (
+ <>
+ I consent to the processing of my personal data by Hycom SA
+ as described in the{' '}
+
+ information clause
+ {' '}
+ to respond to inquiries and provide information about products
+ and services.
+ >
+ ),
+ objectTypeId: '0-1',
+ },
+ {
+ name: 'i_d_like_to_receive_product_updates_and_roadmap_news_',
+ required: false,
+ label: <>I’d like to receive product updates and roadmap news.>,
+ objectTypeId: '0-1',
+ },
+ ]}
+ />
+