Skip to content

Commit fe99223

Browse files
authored
Add a section for tutorial videos (#35)
1 parent 4775b93 commit fe99223

File tree

5 files changed

+156
-0
lines changed

5 files changed

+156
-0
lines changed

docs/tutorial-videos.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"videos": [
3+
{
4+
"id": "PE-0P6SAZYc",
5+
"title": "RooCode v3.3 UPDATE: Fully FREE Autonomous AI Coding Agent! (FREE API, Checkpoints, Markdown)"
6+
},
7+
{
8+
"id": "rg_g3BPv4uQ",
9+
"title": "5 Must-Know Roo Code Features That Make It Better Than Cline (Save 50% on Tokens!)"
10+
},
11+
{
12+
"id": "9p_1OISs7o0",
13+
"title": "RooCode (Upgraded): I'm FINALLY SWITCHING AWAY from CLINE! This is the MOST CUSTOMIZABLE AI Coder!"
14+
},
15+
{
16+
"id": "2Frayo_8ovQ",
17+
"title": "Deepseek-R1 + RooCode: BEST AI Coding Agent! Develop a Full-stack App Without Writing ANY Code!"
18+
},
19+
{
20+
"id": "KsUjPlRPsPc",
21+
"title": "Roo-Cline 3.1: Code Faster Than Ever with This Game-Changing Update"
22+
},
23+
{
24+
"id": "r-cbg5ON60Q",
25+
"title": "Setting Up RooCline With LMStudio and Ollama Phi4"
26+
},
27+
{
28+
"id": "V5ZdznleO6s",
29+
"title": "Build a Web App with Roo Cline & Claude 3.5 Sonnet"
30+
},
31+
{
32+
"id": "IVTcZYg_ylI",
33+
"title": "RooCline: The Cline Fork That's Faster, Smarter, and Better!"
34+
},
35+
{
36+
"id": "a5mCvQoDB2g",
37+
"title": "FREE AI Coder Beats Cursor & Bolt.New?"
38+
},
39+
{
40+
"id": "9I_xjb30WHg",
41+
"title": "Roo-Cline is Cline but Better | AI in Large Codebases"
42+
}
43+
]
44+
}

docs/tutorial-videos.mdx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import VideoGrid from '@site/src/components/VideoGrid';
2+
3+
# Tutorial Videos
4+
5+
Learn how to build powerful applications and enhance your development workflow with these hands-on Roo Code tutorials. Big thanks to all of the creators!
6+
7+
<VideoGrid />

sidebars.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const sidebars: SidebarsConfig = {
4343
],
4444
},
4545
'faq',
46+
'tutorial-videos',
4647
],
4748
};
4849

src/components/VideoGrid.tsx

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import React from 'react';
2+
import videos from '@site/docs/tutorial-videos.json';
3+
4+
interface Video {
5+
id: string;
6+
title: string;
7+
}
8+
9+
export default function VideoGrid(): JSX.Element {
10+
return (
11+
<div className="video-grid">
12+
{videos.videos.map((video: Video) => (
13+
<div key={video.id} className="video-item">
14+
<div
15+
className="video-container"
16+
onClick={(e) => {
17+
const target = e.currentTarget;
18+
target.innerHTML = `<iframe src='https://www.youtube.com/embed/${video.id}?autoplay=1' title='${video.title}' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' allowFullScreen></iframe>`;
19+
}}
20+
>
21+
<img
22+
src={`https://img.youtube.com/vi/${video.id}/maxresdefault.jpg`}
23+
alt={video.title}
24+
style={{
25+
width: '100%',
26+
height: '100%',
27+
position: 'absolute',
28+
top: 0,
29+
left: 0,
30+
cursor: 'pointer',
31+
}}
32+
/>
33+
<div
34+
style={{
35+
position: 'absolute',
36+
top: '50%',
37+
left: '50%',
38+
transform: 'translate(-50%,-50%)',
39+
width: '68px',
40+
height: '48px',
41+
background: 'rgba(0,0,0,0.7)',
42+
borderRadius: '12px',
43+
}}
44+
>
45+
<div
46+
style={{
47+
borderStyle: 'solid',
48+
borderWidth: '12px 0 12px 20px',
49+
borderColor: 'transparent transparent transparent white',
50+
position: 'absolute',
51+
top: '12px',
52+
left: '26px',
53+
}}
54+
/>
55+
</div>
56+
</div>
57+
<div className="video-info">
58+
<span className="video-title">{video.title}</span>
59+
</div>
60+
</div>
61+
))}
62+
</div>
63+
);
64+
}

src/css/custom.css

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,43 @@
4040
.footer__link-item[href="/tutorial"] {
4141
display: none;
4242
}
43+
44+
/* Video Grid Styles */
45+
.video-grid {
46+
display: grid;
47+
grid-template-columns: repeat(auto-fit, minmax(450px, 1fr));
48+
gap: 2rem;
49+
margin: 2rem 0;
50+
}
51+
52+
.video-container {
53+
position: relative;
54+
width: 100%;
55+
padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
56+
border-radius: var(--ifm-card-border-radius);
57+
overflow: hidden;
58+
}
59+
60+
.video-container iframe {
61+
position: absolute;
62+
top: 0;
63+
left: 0;
64+
width: 100%;
65+
height: 100%;
66+
border: 0;
67+
}
68+
69+
.video-info {
70+
margin-top: 0.75rem;
71+
}
72+
73+
.video-title {
74+
font-weight: 500;
75+
color: var(--ifm-heading-color);
76+
display: -webkit-box;
77+
-webkit-line-clamp: 2;
78+
-webkit-box-orient: vertical;
79+
overflow: hidden;
80+
line-height: 1.4;
81+
max-height: 2.8em; /* 2 lines * 1.4 line-height */
82+
}

0 commit comments

Comments
 (0)