Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
m1k1o
GitHub Repository: m1k1o/neko
Path: blob/master/webpage/src/components/HomepageFeatures/index.tsx
1007 views
1
import type {ReactNode} from 'react';
2
import clsx from 'clsx';
3
import Heading from '@theme/Heading';
4
import styles from './styles.module.css';
5
6
type FeatureItem = {
7
title: string;
8
Svg: React.ComponentType<React.ComponentProps<'svg'>>;
9
description: ReactNode;
10
isEven: boolean;
11
};
12
13
let i = 1;
14
15
const FeatureList: FeatureItem[] = [
16
{
17
isEven: i++ % 2 === 0,
18
title: 'Ultra Low Latency Streaming',
19
Svg: require('@site/static/img/undraw_low_latency.svg').default,
20
description: (
21
<>
22
Near real-time streaming with less than 300ms latency thanks to <a href="https://webrtc.org/">WebRTC</a>. <br />
23
Smooth video playback and synchronized audio for a seamless experience.
24
</>
25
),
26
},
27
{
28
isEven: i++ % 2 === 0,
29
title: 'Multi-Participant Control',
30
Svg: require('@site/static/img/undraw_miro.svg').default,
31
description: (
32
<>
33
Multiple participants in the room can share control with each other. <br />
34
The host has the ability to give control to others or deny control requests.
35
</>
36
),
37
},
38
{
39
isEven: i++ % 2 === 0,
40
title: 'Live Broadcasting',
41
Svg: require('@site/static/img/undraw_online_media.svg').default,
42
description: (
43
<>
44
Stream your room's content live to platforms like Twitch, YouTube, and more via RTMP. As the host, you have full
45
control over the stream; set the RTMP URL and stream key, start or stop the broadcast at any time. Even if no
46
participants are online, the stream keeps running, making 24/7 broadcasting effortless.
47
</>
48
),
49
},
50
{
51
isEven: i++ % 2 === 0,
52
title: 'Persistent Browser',
53
Svg: require('@site/static/img/undraw_safe.svg').default,
54
description: (
55
<>
56
Keep your browser session alive, no matter where you are. Resume your work from any device without losing your progress.
57
Ideal for long-running tasks like downloads, uploads, and monitoring. No local data is stored; cookies and session data
58
stay protected. For your ISP, it just looks like you're watching a video or on a call, keeping your activity private.
59
</>
60
),
61
},
62
{
63
isEven: i++ % 2 === 0,
64
title: 'Throwaway Browser',
65
Svg: require('@site/static/img/undraw_throw_away.svg').default,
66
description: (
67
<>
68
Access websites without leaving a trace. Every session runs in an isolated environment and is destroyed afterward;
69
no history, cookies, or cache left behind. Perfect for handling sensitive information or testing websites without
70
affecting your local machine. Minimize OS fingerprinting and browser exploits by running in a secure container.
71
Need extra privacy? Use Tor Browser and VPN for added anonymity.
72
</>
73
),
74
},
75
{
76
isEven: i++ % 2 === 0,
77
title: 'Jump Host for Internal Resources',
78
Svg: require('@site/static/img/undraw_software_engineer.svg').default,
79
description: (
80
<>
81
Access internal resources like servers, databases, and websites from a remote location.
82
You can record all session activities for auditing and compliance.
83
Ensuring that no data is left on the client side and minimizing the risk of data leakage.
84
Making it harder for attackers to pivot to other systems when they compromise the jump host and reducing the attack surface.
85
</>
86
),
87
},
88
{
89
isEven: i++ % 2 === 0,
90
title: 'Protect Your Intellectual Property',
91
Svg: require('@site/static/img/undraw_security.svg').default,
92
description: (
93
<>
94
Have you ever wanted to share your website, AI model, or software with someone without giving them access to the code?
95
With WebRTC, only the video and audio are shared, not the actual data. Nobody can reverse-engineer your code because it is not even running on their machine.
96
You have full control over who can access your content and can revoke access at any time.
97
</>
98
),
99
},
100
];
101
102
function Feature({title, Svg, description, isEven}: FeatureItem) {
103
return (
104
<div className={clsx('row', styles.featureRow, { [styles.featureRowReverse]: !isEven })}>
105
<div className={clsx('col col--5', 'text--center')}>
106
<Svg className={styles.featureSvg} role="img" />
107
</div>
108
<div className={clsx('col col--7', 'padding-horiz--md')}>
109
<Heading as="h3">{title}</Heading>
110
<p>{description}</p>
111
</div>
112
</div>
113
);
114
}
115
116
export default function HomepageFeatures(): ReactNode {
117
return (
118
<section className={styles.features}>
119
<div id="features" className="container">
120
<h1 className={"text--center"}>Features</h1>
121
{FeatureList.map((props, idx) => (
122
<Feature key={idx} {...props} />
123
))}
124
</div>
125
</section>
126
);
127
}
128
129