support plans and jambonz.cloud (#75)

* support plans and jambonz.cloud

* update tests

* further test fix

* minor

* change font-size of markdown text from 0.875 rem to 1rem
This commit is contained in:
Dave Horton
2023-08-04 08:48:37 -04:00
committed by GitHub
parent bb1a4d0965
commit 6b728eeecd
17 changed files with 366 additions and 132 deletions

View File

@@ -30,9 +30,7 @@ describe('Navigation', () => {
cy.get('.navi__login .btn')
.contains(site.navi.login.label)
.should('have.attr', 'href',
`${site.navi.login.link.pathname}?redirect=${site.navi.login.link.query.redirect}`
)
.should('have.attr', 'href', `${site.navi.login.link}`)
});
});

View File

@@ -3,11 +3,9 @@ hero:
subtext:
- jambonz is the open source voice platform
- for conversational AI providers and CSPs.
cta: Sign up for free
url:
pathname: /regions/
query:
redirect: register
cta: Create a free account on jambonz.cloud
url: https://jambonz.cloud/register
tech:
image:
src: /images/Jambonz_app_screenshot.webp
@@ -17,14 +15,14 @@ tech:
height: 842
notes:
-
title: Adapts to your needs
text: Designed to plug-and-play with your chosen carriers and tech stack.
-
title: Privacy comes first
text: Our innovative design means that your customers' most sensitive personal information is never stored on our systems.
title: Self-hosted or cloud
text: Run your traffic on our cloud service or deploy on your own infrastructure.
-
title: Open source
text: We work in the open, so that you can see all that we do and can gain the greatest value from our products.
text: Drive your own innovations into the software to outdistance your competition.
-
title: Data privacy
text: Our innovative design protects your customers' most sensitive data.
-
title: Reliable
text: Built by a team that has been delivering five 9s products to telcos since VoIP was a thing.
@@ -99,7 +97,4 @@ byo:
- Cloud
comment: Why pay someone to upcharge you for all of that when its basically a one-click experience to provision all of those yourself in today's world. You know how to <a href="/regions/?redirect=register">click</a>, right?
cta: Get started for free
url:
pathname: /regions/
query:
redirect: register
url: https://jambonz.cloud/register

View File

@@ -1,6 +1,6 @@
hero:
headline: Simple, capacity based pricing.
subtext: Choose the number of concurrent calls you need to support, and pay $12/call session on our hosted platform (MRC).
subtext: Choose the number of concurrent calls you need to support, and pay $8/call session on our hosted platform (MRC).
structure:
text:
- Oh, and with that you can register 5 x the number of devices - so if you purchased 100 sessions you can also register up to 500 devices.

View File

@@ -1,21 +0,0 @@
hero:
headline: Choose your location
subtext: jambonz currently operates in the following regions
regions:
-
name: us
title: United States
text: jambonz.us
url: https://jambonz.us/sign-in
altUrl: https://jambonz.us/register
icon: MapPin
color: blue
-
name: eu
title: Europe
text: jambonz.xyz
url: https://jambonz.xyz/sign-in
altUrl: https://jambonz.xyz/register
icon: MapPin
color: teal

View File

@@ -1,6 +1,6 @@
banner:
active: true
text: Click here to launch a jambonz CPaaS on AWS.
text: Click to launch a jambonz instance on AWS.
link: https://blog.jambonz.org/installing-jambonz-using-aws-marketplace
latest:
-
@@ -15,10 +15,7 @@ navi:
label: Home
login:
label: Log In
link:
pathname: /regions/
query:
redirect: login
link: https://jambonz.cloud
links:
-
label: Why jambonz
@@ -27,7 +24,10 @@ navi:
label: Docs
link: /docs/
-
label: Pricing
label: Support
link: /support/
-
label: Cloud Pricing
link: /pricing/
-
label: Open Source

17
data/support.yml Normal file
View File

@@ -0,0 +1,17 @@
root:
link: /support/
label:
navi:
-
path: tiers
title: Support Options
pages:
-
path: support-level-1
title: Single system
-
path: support-level-2
title: Cluster
-
path: support-level-3
title: Premium support

View File

@@ -2,10 +2,8 @@ hero:
headline: Why choose jambonz?
subtext: jambonz is the communications platform that brings your ideas to life. So you can bring your best to your customers every day.
cta: Get started for free
url:
pathname: /regions/
query:
redirect: register
url: https://jambonz.cloud/register
facts:
-
icon: Layers
@@ -37,7 +35,4 @@ os:
url: https://github.com/drachtio
logo: /svg/drachtio.svg
cta: Get started for free
url:
pathname: /regions/
query:
redirect: register
url: https://jambonz.cloud/register

View File

@@ -0,0 +1,9 @@
# Commercial Support
If you are hosting your own jambonz platform, please consider purchasing one of our commercial support plans. We provide on-call support, assistance in initial setup and tuning, and prioritization of your bug fixes and feature requests.
- If jambonz is a mission-critical element of your business strategy, then having a support contract in place with the team that built it and knows it best is a must-have.
- If you chose jambonz because the open source format enables you to drive more innovation into your voice products, then working directly with the jambonz team will make you go faster and further than your competition.
- And frankly, support revenue is **the** key means of funding the project so if you want jambonz to be a sustainable, long-term solution, then purchasing a support plan is the best way to ensure that happens.
We offer a variety of support options: [single system](/support/tiers/support-level-1), [cluster](/support/tiers/support-level-2), and [premium support](/support/tiers/support-level-3). Please review the options to see what suits you best. If you have special needs or want to engage us for a consulting project, please email us at support@jambonz.org.

View File

@@ -0,0 +1,12 @@
# Single system
Under this support plan we help you set up and then support a single jambonz instance running on your infrastructure.
This support plan includes:
- Assistance with initial system provisioning, including development of devops to make your deployment repeatable in your infrastructure.
- Level-3 support of production issues.
- Dedicated Slack channel to interact directly with the jambonz team.
- Priority assignment of your bug fixes.
### Pricing
- $1,000/month.

View File

@@ -0,0 +1,12 @@
# Cluster
Under this support plan we help you design, launch, and maintain a scalable jambonz cluster capable of handling large call volumes.
The support plan includes:
- Assistance with initial system provisioning, including development of devops to make your deployment repeatable in your infrastructure
- Level-3 support of production issues.
- Dedicated Slack channel to interact directly with the jambonz team.
- Priority assignment of your bug fixes.
### Pricing
- $2,500/month.

View File

@@ -0,0 +1,15 @@
# Premium Support
This support plan is designed for customers that want to work very closely with the jambonz team to maximize the value of their offerings. We spend a lot of time with premium support customers to make sure their needs are met, and they have significant influence into the product roadmap as well.
This support plan includes:
- Support for an unlimited number of jambonz instances and clusters.
- Assistance with initial system provisioning, including development of devops to make your deployment repeatable in your infrastructure.
- Level-2/3 support of production issues, with SLAs.
- Ability to work directly with your carriers and partners to address interop and other system integration issues.
- Dedicated Slack channel to interact directly with the jambonz team.
- A Zendesk account to provide detailed and private tracking of your issues.
- Priority assignment of your bug fixes **as well as feature requests**.
### Pricing
- Contact us at support@jambonz.org

243
package-lock.json generated
View File

@@ -506,6 +506,51 @@
"node": "*"
}
},
"node_modules/@next/swc-android-arm-eabi": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz",
"integrity": "sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-android-arm64": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz",
"integrity": "sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-arm64": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz",
"integrity": "sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-x64": {
"version": "12.1.5",
"cpu": [
@@ -520,6 +565,126 @@
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm-gnueabihf": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz",
"integrity": "sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz",
"integrity": "sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-musl": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz",
"integrity": "sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-gnu": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz",
"integrity": "sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-musl": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz",
"integrity": "sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz",
"integrity": "sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz",
"integrity": "sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-x64-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz",
"integrity": "sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"dev": true,
@@ -1513,9 +1678,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001486",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001486.tgz",
"integrity": "sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==",
"version": "1.0.30001519",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
"integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==",
"funding": [
{
"type": "opencollective",
@@ -7419,10 +7584,76 @@
}
}
},
"@next/swc-android-arm-eabi": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5.tgz",
"integrity": "sha512-SKnGTdYcoN04Y2DvE0/Y7/MjkA+ltsmbuH/y/hR7Ob7tsj+8ZdOYuk+YvW1B8dY20nDPHP58XgDTSm2nA8BzzA==",
"optional": true
},
"@next/swc-android-arm64": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.5.tgz",
"integrity": "sha512-YXiqgQ/9Rxg1dXp6brXbeQM1JDx9SwUY/36JiE+36FXqYEmDYbxld9qkX6GEzkc5rbwJ+RCitargnzEtwGW0mw==",
"optional": true
},
"@next/swc-darwin-arm64": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5.tgz",
"integrity": "sha512-y8mhldb/WFZ6lFeowkGfi0cO/lBdiBqDk4T4LZLvCpoQp4Or/NzUN6P5NzBQZ5/b4oUHM/wQICEM+1wKA4qIVw==",
"optional": true
},
"@next/swc-darwin-x64": {
"version": "12.1.5",
"optional": true
},
"@next/swc-linux-arm-gnueabihf": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5.tgz",
"integrity": "sha512-WnhdM5duONMvt2CncAl+9pim0wBxDS2lHoo7ub/o/i1bRbs11UTzosKzEXVaTDCUkCX2c32lIDi1WcN2ZPkcdw==",
"optional": true
},
"@next/swc-linux-arm64-gnu": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5.tgz",
"integrity": "sha512-Jq2H68yQ4bLUhR/XQnbw3LDW0GMQn355qx6rU36BthDLeGue7YV7MqNPa8GKvrpPocEMW77nWx/1yI6w6J07gw==",
"optional": true
},
"@next/swc-linux-arm64-musl": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5.tgz",
"integrity": "sha512-KgPjwdbhDqXI7ghNN8V/WAiLquc9Ebe8KBrNNEL0NQr+yd9CyKJ6KqjayVkmX+hbHzbyvbui/5wh/p3CZQ9xcQ==",
"optional": true
},
"@next/swc-linux-x64-gnu": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5.tgz",
"integrity": "sha512-O2ErUTvCJ6DkNTSr9pbu1n3tcqykqE/ebty1rwClzIYdOgpB3T2MfEPP+K7GhUR87wmN/hlihO9ch7qpVFDGKw==",
"optional": true
},
"@next/swc-linux-x64-musl": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5.tgz",
"integrity": "sha512-1eIlZmlO/VRjxxzUBcVosf54AFU3ltAzHi+BJA+9U/lPxCYIsT+R4uO3QksRzRjKWhVQMRjEnlXyyq5SKJm7BA==",
"optional": true
},
"@next/swc-win32-arm64-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5.tgz",
"integrity": "sha512-oromsfokbEuVb0CBLLE7R9qX3KGXucZpsojLpzUh1QJjuy1QkrPJncwr8xmWQnwgtQ6ecMWXgXPB+qtvizT9Tw==",
"optional": true
},
"@next/swc-win32-ia32-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5.tgz",
"integrity": "sha512-a/51L5KzBpeZSW9LbekMo3I3Cwul+V+QKwbEIMA+Qwb2qrlcn1L9h3lt8cHqNTFt2y72ce6aTwDTw1lyi5oIRA==",
"optional": true
},
"@next/swc-win32-x64-msvc": {
"version": "12.1.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5.tgz",
"integrity": "sha512-/SoXW1Ntpmpw3AXAzfDRaQidnd8kbZ2oSni8u5z0yw6t4RwJvmdZy1eOaAADRThWKV+2oU90++LSnXJIwBRWYQ==",
"optional": true
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
"dev": true,
@@ -8098,9 +8329,9 @@
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001486",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001486.tgz",
"integrity": "sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg=="
"version": "1.0.30001519",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
"integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg=="
},
"caseless": {
"version": "0.12.0",

View File

@@ -1,68 +0,0 @@
import Link from 'next/link';
import { useRouter } from 'next/router';
import { nanoid } from 'nanoid';
import { Icon, P } from '@jambonz/ui-kit';
import { getData } from '../src/lib/data';
import { Icons } from '../src/components/icons';
import Layout, { Hero } from '../src/components/layout';
function Regions({ data }) {
const router = useRouter();
const redirect = router.query.redirect;
return (
<section className="regions">
{data.regions.map((region) => {
const href = (redirect === 'login') ? region.url : region.altUrl;
const SvgIcon = Icons[region.icon];
return (
<div key={nanoid()} className="wrap regions__wrap">
<div className="regions__icon">
<Icon subStyle={region.color}>
<SvgIcon />
</Icon>
</div>
<div className="regions__title">
<P className={`med color--${region.color}`}>
{region.title}
</P>
</div>
<div className="regions__text">
<P className="med">
<Link href={href}>
<a className="i" title={`jambonz ${region.title}`}>
<span className="regions__text">{region.text}</span>
<Icons.ExternalLink />
</a>
</Link>
</P>
</div>
</div>
);
})}
</section>
);
}
export default function RegionsPage({ data }) {
return (
<Layout siteData={data.site}>
<Hero data={data.regions.hero} altStyle="pink">
<Regions data={data.regions} />
</Hero>
</Layout>
);
}
export async function getStaticProps() {
const data = getData('regions');
return {
props: {
data,
},
};
}

View File

@@ -0,0 +1,39 @@
import Prism from 'prismjs';
import { useEffect } from 'react';
import Layout from '../../src/components/layout';
import Markdown from '../../src/components/markdown';
import { getData, getMarkdown, getMarkdownPaths } from '../../src/lib/data';
export default function Support({ data, docs }) {
useEffect(() => {
setTimeout(() => Prism.highlightAll(), 0);
});
return (
<Layout siteData={data.site}>
<Markdown scope="support" data={data['support']} docs={docs} />
</Layout>
);
}
export async function getStaticPaths() {
const paths = getMarkdownPaths('support');
return {
paths,
fallback: false,
};
}
export async function getStaticProps({ params }) {
const data = getData('support');
const docs = await getMarkdown('support', params.slug);
return {
props: {
data,
docs,
},
};
}

View File

@@ -106,6 +106,7 @@
&--home {
padding-bottom: 64px;
padding-top: 32px;
}
&--why {

View File

@@ -26,7 +26,7 @@
}
p {
@include ui-mixins.ms();
@include ui-mixins.m();
}
blockquote {
@@ -60,12 +60,12 @@
li {
list-style-type: disc;
@include ui-mixins.ms();
@include ui-mixins.m();
}
}
table {
@include ui-mixins.ms();
@include ui-mixins.m();
width: 100%;
td, th {

View File

@@ -8,4 +8,3 @@
@use 'pages/home';
@use 'pages/why';
@use 'pages/pricing';
@use 'pages/regions';