3
3
* License: MS-RSL – see LICENSE.md for details
4
4
*/
5
5
6
- import { Alert , Button , Layout } from "antd" ;
6
+ import { Alert , Button , Layout , List } from "antd" ;
7
+ import { useRouter } from "next/router" ;
7
8
8
- import { Icon } from "@cocalc/frontend/components/icon" ;
9
+ import { Icon , IconName } from "@cocalc/frontend/components/icon" ;
10
+ import { money } from "@cocalc/util/licenses/purchase/utils" ;
11
+ import { COLORS } from "@cocalc/util/theme" ;
9
12
import Footer from "components/landing/footer" ;
10
13
import Head from "components/landing/head" ;
11
14
import Header from "components/landing/header" ;
15
+ import PricingItem , { Line } from "components/landing/pricing-item" ;
12
16
import { Paragraph , Text , Title } from "components/misc" ;
13
17
import A from "components/misc/A" ;
14
18
import { MAX_WIDTH } from "lib/config" ;
15
19
import { Customize } from "lib/customize" ;
16
20
import withCustomize from "lib/with-customize" ;
17
- import { useRouter } from "next/router" ;
21
+
22
+ const PUBLISH_PRICE = true ;
23
+
24
+ interface Item {
25
+ title : string ;
26
+ icon : IconName ;
27
+ individuals : string ;
28
+ price : number | null ;
29
+ academic ?: boolean ;
30
+ }
31
+
32
+ const data : Item [ ] = [
33
+ {
34
+ title : "Small Business" ,
35
+ icon : "experiment" ,
36
+ individuals : "up to 25" ,
37
+ price : 5000 ,
38
+ } ,
39
+ {
40
+ title : "Academic Research" ,
41
+ icon : "graduation-cap" ,
42
+ individuals : "up to 25" ,
43
+ price : 3000 ,
44
+ academic : true ,
45
+ } ,
46
+ {
47
+ title : "Large institution" ,
48
+ icon : "project-outlined" ,
49
+ individuals : "more than 25" ,
50
+ price : null ,
51
+ } ,
52
+ ] ;
18
53
19
54
export default function OnPrem ( { customize } ) {
20
55
const { siteName } = customize ;
@@ -39,68 +74,160 @@ export default function OnPrem({ customize }) {
39
74
function Body ( ) {
40
75
const router = useRouter ( ) ;
41
76
42
- function cloud ( ) : JSX . Element {
43
- const body = encodeURIComponent (
44
- "PLEASE EXPLAIN YOUR EXPECTED USE CASE TO HELP US GUIDE YOU:\n\nWE WOULD LOVE TO SETUP A VIDEO CALL WITH YOU! WHEN ARE YOU AVAILABLE?" ,
77
+ const body = encodeURIComponent (
78
+ "PLEASE EXPLAIN YOUR EXPECTED USE CASE TO HELP US GUIDE YOU:\n\nWE WOULD LOVE TO SETUP A VIDEO CALL WITH YOU! WHEN ARE YOU AVAILABLE?" ,
79
+ ) ;
80
+
81
+ const contactURL = `/support/new?hideExtra=true&type=purchase&subject=CoCalc%20On-prem&body=${ body } &title=Purchase%20CoCalc%20On-prem` ;
82
+
83
+ function renderContact ( ) : JSX . Element {
84
+ return (
85
+ < Alert
86
+ type = "info"
87
+ banner = { true }
88
+ showIcon = { false }
89
+ style = { {
90
+ textAlign : "center" ,
91
+ fontSize : "125%" ,
92
+ marginTop : "30px" ,
93
+ marginBottom : "30px" ,
94
+ } }
95
+ message = {
96
+ < >
97
+ Please < A href = { contactURL } > contact us</ A > for questions, licensing
98
+ details, and purchasing.
99
+ </ >
100
+ }
101
+ />
45
102
) ;
103
+ }
104
+
105
+ function renderPriceInfo ( ) : JSX . Element {
106
+ if ( PUBLISH_PRICE ) {
107
+ return (
108
+ < >
109
+ < List
110
+ grid = { { gutter : 30 , column : 3 , xs : 1 , sm : 1 } }
111
+ dataSource = { data }
112
+ renderItem = { ( { price, individuals, icon, title, academic } ) => {
113
+ return (
114
+ < PricingItem title = { title } icon = { icon } >
115
+ < Line amount = { individuals } desc = { "Users" } />
116
+ { academic ? (
117
+ < Line amount = { 1 } desc = "Academic discount" />
118
+ ) : undefined }
119
+ < br />
120
+ < br />
121
+ < div >
122
+ < span
123
+ style = { {
124
+ fontWeight : "bold" ,
125
+ fontSize : "18pt" ,
126
+ color : COLORS . GRAY_DD ,
127
+ } }
128
+ >
129
+ { typeof price === "number" ? (
130
+ < >
131
+ { money ( price , true ) }
132
+ < span style = { { color : COLORS . GRAY_L } } > /year</ span >
133
+ </ >
134
+ ) : (
135
+ < Button onClick = { ( ) => router . push ( contactURL ) } >
136
+ Contact us
137
+ </ Button >
138
+ ) }
139
+ </ span >
140
+ </ div >
141
+ </ PricingItem >
142
+ ) ;
143
+ } }
144
+ />
145
+ < Paragraph >
146
+ Discounts for: academic institutions, multi-year committments,
147
+ first-year discounts, ...
148
+ </ Paragraph >
149
+ { renderContact ( ) }
150
+ </ >
151
+ ) ;
152
+ } else {
153
+ return (
154
+ < >
155
+ < Paragraph >
156
+ CoCalc OnPrem is a scalable solution and the license price depends
157
+ on the use case, expected number of users, level of support, and
158
+ amount of customization and training involved.
159
+ </ Paragraph >
160
+ { renderContact ( ) }
161
+ </ >
162
+ ) ;
163
+ }
164
+ }
46
165
166
+ function cloud ( ) : JSX . Element {
47
167
return (
48
168
< >
49
169
< Title level = { 2 } >
50
170
CoCalc OnPrem < Icon name = "network-wired" style = { { float : "right" } } />
51
171
</ Title >
172
+
52
173
< Paragraph >
53
174
< Text strong >
54
- < A href = "https://onprem.cocalc.com/" > CoCalc OnPrem</ A >
175
+ < A href = "https://onprem.cocalc.com/" > CoCalc OnPrem</ A > { " " }
55
176
</ Text > { " " }
56
- is an on-prem version of CoCalc that runs on a full-fledged{ " " }
57
- < A href = { "https://kubernetes.io" } > Kubernetes Cluster</ A > . The
58
- underlying services and their architecture are the same, as the ones
59
- that power the main service at cocalc.com. This means you get the same
60
- overall performance, scalability and reliability as the{ " " }
61
- < A href = "https://cocalc.com" > main cocalc.com website</ A > .
62
- </ Paragraph >
63
- < Paragraph >
64
- < Text strong > Features</ Text >
177
+ is a < Text strong > self-hosted version of CoCalc</ Text > designed to run
178
+ on your own infrastructure. Built on the same robust architecture that
179
+ powers the main CoCalc platform, OnPrem delivers exceptional
180
+ performance, scalability, and reliability. This enterprise-grade
181
+ solution offers:
65
182
< ul >
183
+ < li > Complete control over your data and computing environment;</ li >
66
184
< li >
67
- Jupyter Notebooks, a recent version of Sage, Python 3, R, Octave
68
- and LaTeX. Editing code and text-files, Linux terminal, compiling
69
- code, and virtual X11 desktop are included as well. Beyond the
70
- standard set of included software, it's also possible to define
71
- and build customized software environments.
185
+ Enhanced privacy and security for sensitive research and
186
+ educational content;
72
187
</ li >
73
188
< li >
74
- Support for < Text strong > single sign-on </ Text > , in particular,
75
- includes SAML.
189
+ Seamless integration with your existing IT infrastructure – for
190
+ example SAML based SSO authentication;
76
191
</ li >
192
+ < li > Customizable features to meet specific institutional needs;</ li >
77
193
< li >
78
- The networking is defined by standard{ " " }
79
- < A href = { "https://kubernetes.github.io/ingress-nginx/" } >
80
- NGINX ingress rules
81
- </ A >
82
- . It's possible to run within a VPN as well.
194
+ The full suite of collaborative tools available on cocalc.com:{ " " }
195
+ < Text strong >
196
+ Jupyter Notebooks, Python, SageMath, R, Octave and LaTeX
197
+ </ Text >
198
+ . Editing code- and text-files, Linux terminal, compiling code,
199
+ and a virtual X11 desktop are included as well. Beyond the
200
+ standard set of included software, it's also possible to define{ " " }
201
+ < Text strong > customized software environments</ Text > .
83
202
</ li >
84
203
< li >
85
- You can < Text strong > deploy</ Text > this solution on your own
86
- bare-metal cluster or managed kubernetes clusters like{ " " }
87
- < A href = { "https://aws.amazon.com/eks/" } > Amazon's EKS</ A > or{ " " }
88
- < A href = { "https://cloud.google.com/kubernetes-engine" } >
89
- Google's GKE
90
- </ A >
91
- . Other options should work as well.
204
+ We'll guide you through the setup process and give you enough
205
+ information to be able to manage the service, react to issues,
206
+ plan resource requirements, and know how to scale the various
207
+ services to your expected usage.
92
208
</ li >
93
209
</ ul >
210
+ Experience the cutting-edge capabilities of CoCalc within your own
211
+ secure ecosystem, providing your team or institution with a tailored,
212
+ high-performance platform for scientific computing, mathematics, and
213
+ data science collaboration.
94
214
</ Paragraph >
215
+
95
216
< Paragraph >
96
217
< Text strong > Prerequisites</ Text >
97
218
< ul >
98
219
< li >
99
- A < Text strong > Kubernetes cluster</ Text > and some experience
100
- managing it. We'll guide you through the setup and give you enough
101
- information to be able to manage the service, react to issues,
102
- plan resource requirements, and know how to scale the various
103
- services to your expected usage.
220
+ A{ " " }
221
+ < Text strong >
222
+ < A href = { "https://kubernetes.io" } > Kubernetes Cluster</ A >
223
+ </ Text > { " " }
224
+ and some experience managing it. OnPrem should run on your own
225
+ bare-metal cluster or a managed kubernetes clusters like{ " " }
226
+ < A href = { "https://aws.amazon.com/eks/" } > Amazon's EKS</ A > or{ " " }
227
+ < A href = { "https://cloud.google.com/kubernetes-engine" } >
228
+ Google's GKE
229
+ </ A >
230
+ .
104
231
</ li >
105
232
< li >
106
233
Some experience working with{ " " }
@@ -114,7 +241,7 @@ function Body() {
114
241
< A href = { "https://letsencrypt.org/" } > letsencrypt</ A > ).
115
242
</ li >
116
243
< li >
117
- A standard { " " }
244
+ A common { " " }
118
245
< A href = { "https://www.postgresql.org/" } >
119
246
< Text strong > PostgreSQL</ Text >
120
247
</ A > { " " }
@@ -140,21 +267,7 @@ function Body() {
140
267
< A href = "https://onprem.cocalc.com/" > CoCalc OnPrem documentation</ A > .
141
268
</ Paragraph >
142
269
< Title level = { 3 } > Purchasing CoCalc OnPrem</ Title >
143
- < Paragraph >
144
- CoCalc OnPrem is a scalable solution and the license price depends on
145
- the use case, expected number of users, level of support, and amount
146
- of customization and training involved.
147
- < Button
148
- type = "link"
149
- onClick = { ( ) =>
150
- router . push (
151
- `/support/new?hideExtra=true&type=purchase&subject=CoCalc%20OnPrem%20Quote&body=${ body } &title=Purchase%20CoCalc-OnPrem` ,
152
- )
153
- }
154
- >
155
- Contact us for a quote.
156
- </ Button >
157
- </ Paragraph >
270
+ { renderPriceInfo ( ) }
158
271
</ >
159
272
) ;
160
273
}
@@ -173,36 +286,7 @@ function Body() {
173
286
Premises
174
287
</ Title >
175
288
176
- < Paragraph >
177
- CoCalc's on-premises offering allow you to run CoCalc on your own
178
- machine or cluster in order to keep your data on-site and use compute
179
- resources that you already have.
180
- </ Paragraph >
181
- < div >
182
- < Alert
183
- type = "info"
184
- banner = { true }
185
- showIcon = { false }
186
- style = { {
187
- textAlign : "center" ,
188
- fontSize : "125%" ,
189
- marginTop : "30px" ,
190
- marginBottom : "30px" ,
191
- } }
192
- message = {
193
- < >
194
- Please{ " " }
195
- < A
196
- href = { `/support/new?hideExtra=true&type=purchase&subject=CoCalc%20On-prem&body=&title=Purchase%20CoCalc%20On-prem` }
197
- >
198
- contact us
199
- </ A > { " " }
200
- for questions, licensing details, and purchasing.
201
- </ >
202
- }
203
- />
204
- { cloud ( ) }
205
- </ div >
289
+ < div > { cloud ( ) } </ div >
206
290
</ div >
207
291
) ;
208
292
}
0 commit comments