Compare commits

...

19 Commits

Author SHA1 Message Date
Kamran Ahmed
dfaf120314 Add testimonials 2025-02-17 21:00:04 +00:00
Kamran Ahmed
be5ccbbc0b Add testimonials 2025-02-17 20:05:10 +00:00
Kamran Ahmed
12950051d6 Update 2025-02-17 19:51:59 +00:00
Kamran Ahmed
03cd25b6c0 Update reviews section 2025-02-17 19:45:03 +00:00
Kamran Ahmed
829615ffec Add testimonials 2025-02-17 16:06:25 +00:00
Kamran Ahmed
6a24436418 Fix course broken UI 2025-02-17 13:35:09 +00:00
Kamran Ahmed
c726a1a342 Add workers kv resources 2025-02-17 13:33:06 +00:00
eqsdxr
7d7835ee9c Fix typos in content (#8218)
* Fix small typos

* Fix typo

* Fix typo
2025-02-17 12:37:45 +00:00
Mojtaba Kamyabi
17d30c0e8d Update 404 links in towarddatascience site to medium ones (#8221) 2025-02-17 12:37:05 +00:00
github-actions[bot]
62bd5c339f chore: update roadmap content json (#8216)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-16 09:22:22 +00:00
Jasper
111f702b9b Cloudflare Roadmap - Update Cloudflare Hono & Itty Router (#8211) 2025-02-15 17:31:11 +00:00
Jawher Kl
3dd115dce1 fix: classname import path
Resolves #8204
2025-02-14 18:40:28 +06:00
github-actions[bot]
75925cb53a chore: update roadmap content json (#8193)
Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com>
2025-02-14 18:39:20 +06:00
Kamran Ahmed
de5bed02f8 Add SQL course link to sql roadmap 2025-02-13 15:06:42 +00:00
Kamran Ahmed
72c670570b Add cloudflare roadmap to get-started page 2025-02-12 23:52:31 +00:00
Kamran Ahmed
a450b4ed5a Add higher quality cloudflare roadmap 2025-02-12 22:44:28 +00:00
Kamran Ahmed
66be61efa3 Add cloudflare roadmap 2025-02-12 22:42:35 +00:00
Kamran Ahmed
caddd0f93d Fix ai roadamp UI 2025-02-11 22:10:23 +00:00
Arik Chakma
cc32cbe79c fix: editor roadmap rendering style (#8190) 2025-02-11 19:47:51 +06:00
119 changed files with 6181 additions and 7594 deletions

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,519 @@
{
"PcYnYAAkKMbzoiCnBfjqO": {
"title": "JavaScript Fundamentals",
"description": "",
"links": []
},
"q9oQTt_NqhdWvJfA5XH1V": {
"title": "Basic Command-line Knowledge",
"description": "",
"links": []
},
"9iSdASlRxyod9YwZ2IUry": {
"title": "HTTP and Web Protocols",
"description": "",
"links": []
},
"C08pIguX1N45Iw0kh0Fvu": {
"title": "Git Basics",
"description": "",
"links": []
},
"dSBYTGGkol3MAXyg7G7_J": {
"title": "Node.js and NPM",
"description": "",
"links": []
},
"zR84MFLL6y0dygz9hXXPA": {
"title": "TypeScript Fundamentals",
"description": "",
"links": []
},
"Isl5anwDvb1MacA-JH4ej": {
"title": "Understand Serverless Architecture",
"description": "",
"links": []
},
"TB6vGzDgGZ9yAd9MGR7vw": {
"title": "Workers Runtime Environment",
"description": "",
"links": []
},
"aGWLomYHGkIfn7GFc0_Yl": {
"title": "Edge Computing Fundamentals",
"description": "",
"links": []
},
"HNEXPU6r_T7UYvwLv2wnt": {
"title": "Request/Response Handling",
"description": "",
"links": []
},
"_2UnRlbUplHvs5-Stj4O4": {
"title": "Fetch API and Runtime APIs",
"description": "",
"links": []
},
"i6L9FI6fBDXr0XtMrc_uR": {
"title": "Workers Lifecycle",
"description": "",
"links": []
},
"WZSi9inWPhqZQvDN-C8BV": {
"title": "Service Bindings",
"description": "",
"links": []
},
"uBjcQ9PJUfwzu5N_2CNjN": {
"title": "Caching Strategies",
"description": "",
"links": []
},
"aStbAF4zraqhJ-N3RH4ha": {
"title": "Middleware Patterns",
"description": "",
"links": []
},
"9ef2VPCru8lCmRxxGe-Eo": {
"title": "Bindings",
"description": "",
"links": []
},
"-8MsWNvuqwQCbLpOx_kov": {
"title": "Hono",
"description": "Hono is a small, simple and ultrafast web framework built on web standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, and Node.js. Hono is more known for supporting a lot more than the basics.\n\nUse-cases\n---------\n\nHono is a simple web application framework similar to the well known javascript framework Express, without a frontend. But it runs on CDN Edges and allows you to construct larger applications when combined with middleware.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Hono JS Examples",
"url": "https://github.com/honojs/examples",
"type": "opensource"
},
{
"title": "Official Documentation",
"url": "https://hono.dev/docs/",
"type": "article"
},
{
"title": "Hono.js: A Small Framework with Big Potential",
"url": "https://medium.com/@appvintechnologies/hono-js-a-small-framework-with-big-potential-15a093fc5c07",
"type": "article"
},
{
"title": "Quick Start with Hono: Simple Setup Guide",
"url": "https://dev.to/koshirok096/quick-start-with-hono-simple-setup-guide-bite-sized-article-lhe",
"type": "article"
},
{
"title": "Learn with me",
"url": "https://www.youtube.com/watch?v=gY-TK33G6kQ",
"type": "video"
}
]
},
"15jl6CSCkqnh_eFfysLDM": {
"title": "Itty Router",
"description": "Itty Router is a lightweight router with the motto \"less is more\" that supports Cloudflare workers and pages. While other libraries may suffer from feature creep/bloat to please a wider audience, Itty Router painfully consider every single byte added to itty. Our router options range from ~450 bytes to ~970 bytes for a batteries-included version with built-in defaults, error handling, formatting, etc. On top of that, the following concepts aim to keep YOUR code tiny (and readable) as well.\n\nSimple Projects ideas\n---------------------\n\nItty Router is a lightweight router system that supports typescript. You can create easy and good routers for Cloudflare workers or pages. With a simple project like a URL shortener, you can use Itty Router and Cloudflare KV.\n\nOther project ideas can be found:\n\n* Webhook Relay\n * Transform webhook data or API data towards another API so you can transform the data as you like.\n* Micro URL Monitoring\n * Monitor any URL and give back responses on the specific endpoint.\n* Single-Use Download Links (Watch out for costs from Cloudflare!)\n * Generate links that expire after one download, ideal for file sharing.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "Official Documentation",
"url": "https://itty.dev/itty-router/",
"type": "article"
}
]
},
"Tzx93tvoGrc9_fKQqkorN": {
"title": "Wrangler",
"description": "",
"links": []
},
"uoaOrypiMkyoikXvTHeVS": {
"title": "DevTools Integration",
"description": "",
"links": []
},
"8Y6TIYoWIXrxtmzDVdS0b": {
"title": "CI/CD Pipelines",
"description": "",
"links": []
},
"zSwio18XdBfqwSneAx_AP": {
"title": "Any Frontend Framework",
"description": "",
"links": []
},
"o4sBgniPmLqwej6TlIPcl": {
"title": "Miniflare",
"description": "",
"links": []
},
"1dGFfQauOgHP7T4ReMpCU": {
"title": "Workers KV",
"description": "",
"links": []
},
"EBTHbXOOZiqrcYJvKhcWV": {
"title": "Key-value Operations",
"description": "",
"links": []
},
"sQlRIYLnZcugATgpogJmw": {
"title": "Metadata Handling",
"description": "",
"links": []
},
"i64-aCpZHygq76fBU6eXD": {
"title": "Bulk Operations",
"description": "",
"links": []
},
"OgW-iIrJZ5-sOWKnFpIZd": {
"title": "Caching Patterns",
"description": "",
"links": []
},
"gxLUlXGuaY5Q-0xmBgQwz": {
"title": "R2 Storage",
"description": "",
"links": []
},
"K9iW2H6riKwddWmpWJFJw": {
"title": "Object Storage",
"description": "",
"links": []
},
"BPahk1qH9Hk11tsE2hw3A": {
"title": "Large File Handling",
"description": "",
"links": []
},
"3jU5753Uza2aS-gZo7w4k": {
"title": "Asset Management",
"description": "",
"links": []
},
"UNE6XK4su5r2jcxhY7hOG": {
"title": "Bucket Operations",
"description": "",
"links": []
},
"YvgmmF9sWfURgijFV7E31": {
"title": "Bucket Lifecycle",
"description": "",
"links": []
},
"mKN0Ta3zSk7PCm_uHYKFN": {
"title": "D1",
"description": "",
"links": []
},
"PnhP47woPJb_JnLpMMiTw": {
"title": "Schema Management",
"description": "",
"links": []
},
"M8rSSVFUHixgWZRfaBPHb": {
"title": "Migrations",
"description": "",
"links": []
},
"65xDESm6jbHWkVO4NgHqx": {
"title": "Query Optimization",
"description": "",
"links": []
},
"MpWO1sroeF106SEMU1V1a": {
"title": "Drizzle",
"description": "",
"links": []
},
"h3MHLZZwkYqqb5PSfMhpB": {
"title": "Prisma",
"description": "",
"links": []
},
"zyRgTtlng6idboSgL9YTt": {
"title": "Queues",
"description": "",
"links": []
},
"EFA8m0EdhygxcBWzwmbnT": {
"title": "Message Processing",
"description": "",
"links": []
},
"qgvDGyLjc6lMmVPjHozFM": {
"title": "Background Jobs",
"description": "",
"links": []
},
"MInAsLLJtIq6WQDSj5yGH": {
"title": "Rate Limiting",
"description": "",
"links": []
},
"Grl59SjY31Q3sgf9uX-xf": {
"title": "Dead Letter Queues",
"description": "",
"links": []
},
"G-xBbtaniYFRE9Dgs18px": {
"title": "Durable Objects",
"description": "",
"links": []
},
"EQjhRlM7zpANNWkypScIl": {
"title": "State Management",
"description": "",
"links": []
},
"RYm0oBFCxm-S-aCwZ21p6": {
"title": "Coordination",
"description": "",
"links": []
},
"36w4Q73XkCwo5Cva0XsF8": {
"title": "Persistence",
"description": "",
"links": []
},
"rxxibrJUo1rQ3XCuUIP59": {
"title": "Transactional Operations",
"description": "",
"links": []
},
"rAl7zXcODiqIpS__3qf1A": {
"title": "Workflows",
"description": "",
"links": []
},
"a0S0_JLwLLNGLUAHrqG4P": {
"title": "Workers AI",
"description": "",
"links": []
},
"zMwmoCUp9429_aXU-Bz4H": {
"title": "Text Generation",
"description": "",
"links": []
},
"S7laV14zsx31O0Tsj2SRL": {
"title": "Image Processing",
"description": "",
"links": []
},
"HJbJ8OxjJzznYwLlIOSO2": {
"title": "Speech Rcognition",
"description": "",
"links": []
},
"QxPoNHsL-Pj_z3aU6qEP4": {
"title": "AI Model Integration",
"description": "",
"links": []
},
"NWGVtH1vxQuO4lly0Omuy": {
"title": "Vectorize",
"description": "",
"links": []
},
"UIWaR1ZdjSm0UAS69Kz_5": {
"title": "Vector Embeddings",
"description": "",
"links": []
},
"pg3GtykCegK411DYDN8sN": {
"title": "Similarity Search",
"description": "",
"links": []
},
"Ep9_oV_YnkbH1gHM-n3gO": {
"title": "AI-powered Search",
"description": "",
"links": []
},
"LoT3NtpNj9uAgQRV-MD_E": {
"title": "Stream",
"description": "",
"links": []
},
"zQp7XfDKWJgMf2LexRJhN": {
"title": "Video Delivery",
"description": "",
"links": []
},
"RiQSPAV9uRFgwQFJckTFV": {
"title": "Live streaming",
"description": "",
"links": []
},
"3B6Z7F0D3Sf8ZBlV3kkGx": {
"title": "Video Processing",
"description": "",
"links": []
},
"8bOWuopxHtBWUSFaVT54P": {
"title": "Images",
"description": "",
"links": []
},
"vHQdMgaL2EEr2o_eJmOuV": {
"title": "Calls",
"description": "",
"links": []
},
"aKEH4ZxI6J1nwjp_AgH5r": {
"title": "Logging and Monitoring",
"description": "",
"links": []
},
"z-1Ye5hcNdr9r6Gwdw7mv": {
"title": "Email Workers",
"description": "",
"links": []
},
"-lsYPD6JueIV94RybGH_Y": {
"title": "Routing",
"description": "",
"links": []
},
"6bNUqx5f_w5NuDL25BABN": {
"title": "Processing",
"description": "",
"links": []
},
"kdIfqTCcOSvV4KDpjr7nu": {
"title": "Filtering",
"description": "",
"links": []
},
"vu8yJsS1WccsdcEVUqwNd": {
"title": "AI Gateway",
"description": "",
"links": []
},
"qkFRW_tJB8_1IYpYskQ5M": {
"title": "Browser Rendering",
"description": "",
"links": []
},
"76xovsBrKOnlRBVjsqNq1": {
"title": "Security & Performance",
"description": "",
"links": []
},
"8IF7jftushwZrn7JXpC_v": {
"title": "Workers Security Model",
"description": "",
"links": []
},
"uNinrB9wm5ahjGXu5fc0g": {
"title": "Isolates Architecture",
"description": "",
"links": []
},
"KWix4jeNUKJ07Iu95Mqj_": {
"title": "Web Security Headers",
"description": "",
"links": []
},
"JP5U6c2fZjtkU-Xzwtapx": {
"title": "Rate Limiting",
"description": "",
"links": []
},
"ui3pUfsGMxv4WRzHkgbF0": {
"title": "Cache API",
"description": "",
"links": []
},
"INiqdtppBmCthOEXuHb-V": {
"title": "HTML Rewriting",
"description": "",
"links": []
},
"sXBxaQtwJ-luGVXdqVXk1": {
"title": "Edge SSL/TLS",
"description": "",
"links": []
},
"So-cKAVfbgsw2zzFREu7Q": {
"title": "Bot Management",
"description": "",
"links": []
},
"wvurOKbemF4Tt2WZcmqDL": {
"title": "Integration & Workflows",
"description": "",
"links": []
},
"SaHqm7T4FFVrsgyfImo66": {
"title": "Pages Functions",
"description": "",
"links": []
},
"JfpVexcbuWCx_R3EjFmbo": {
"title": "Service Bindings",
"description": "",
"links": []
},
"jYAUIKozuhsNK5LbkeAJ6": {
"title": "Inter Worker Communication",
"description": "",
"links": []
},
"4g5w6IAdzefdlRTxbRbdS": {
"title": "External API Integration",
"description": "",
"links": []
},
"uOUjI6CPrhZIlz6mRCtOW": {
"title": "Webhook Handling",
"description": "",
"links": []
},
"Z9Yywlf7rXFBtxTq5B2Y5": {
"title": "Event-driven Architectures",
"description": "",
"links": []
},
"gsCRhwwjXuyueaYHSPOVZ": {
"title": "Development Tools",
"description": "",
"links": []
},
"n0vIbHmUZHrF4WjEhYdb8": {
"title": "Wrangler",
"description": "",
"links": []
},
"vZHBp4S6WaS5sa5rfUOk-": {
"title": "Miniflare",
"description": "",
"links": []
},
"G6YQZUQh_x8Qxm1oBseLQ": {
"title": "DevTools",
"description": "",
"links": []
},
"jyWxaMx7_nojt5HsyAv7K": {
"title": "Testing Frameworks",
"description": "",
"links": []
},
"Cy2T8978yUAPGol-yzxv_": {
"title": "Monitoring Tools",
"description": "",
"links": []
},
"TmQC7fTL6b9EsBDYibv4g": {
"title": "Debugging Techniques",
"description": "",
"links": []
},
"8WZpSKBHCeYfTEL9tBNKr": {
"title": "Tunnels",
"description": "",
"links": []
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

View File

@@ -43,6 +43,7 @@ Here is the list of available roadmaps with more being actively worked upon.
- [AI and Data Scientist Roadmap](https://roadmap.sh/ai-data-scientist)
- [AI Engineer Roadmap](https://roadmap.sh/ai-engineer)
- [AWS Roadmap](https://roadmap.sh/aws)
- [Cloudflare Roadmap](https://roadmap.sh/cloudflare)
- [Linux Roadmap](https://roadmap.sh/linux)
- [Terraform Roadmap](https://roadmap.sh/terraform)
- [Data Analyst Roadmap](https://roadmap.sh/data-analyst)

View File

@@ -5,7 +5,7 @@ import {
COURSE_PURCHASE_PARAM,
setAuthToken,
} from '../../lib/jwt';
import { cn } from '../../../editor/utils/classname.ts';
import { cn } from '../../lib/classname.ts';
import { httpGet } from '../../lib/http';
import { Spinner } from '../ReactIcons/Spinner.tsx';
import { CHECKOUT_AFTER_LOGIN_KEY } from './CourseLoginPopup.tsx';

View File

@@ -1,22 +1,25 @@
import { useStore } from '@nanostores/react';
import {
ChartColumn,
CheckCircle,
CheckSquare,
FolderGit2,
Pencil,
SquarePen,
Zap,
type LucideIcon,
type LucideIcon
} from 'lucide-react';
import { useEffect, useState } from 'react';
import type { AllowedProfileVisibility } from '../../api/user.ts';
import { useToast } from '../../hooks/use-toast';
import { cn } from '../../lib/classname.ts';
import type { GuideFileType } from '../../lib/guide';
import { httpGet } from '../../lib/http';
import type { QuestionGroupType } from '../../lib/question-group';
import type { AllowedRoadmapRenderer } from '../../lib/roadmap.ts';
import type { VideoFileType } from '../../lib/video';
import { $accountStreak, type StreakResponse } from '../../stores/streak';
import type { PageType } from '../CommandMenu/CommandMenu';
import { FeaturedGuideList } from '../FeaturedGuides/FeaturedGuideList';
import { FeaturedVideoList } from '../FeaturedVideos/FeaturedVideoList';
import {
FavoriteRoadmaps,
type AIRoadmapType,
@@ -24,12 +27,21 @@ import {
import { HeroRoadmap } from '../HeroSection/HeroRoadmap.tsx';
import type { ProjectStatusDocument } from '../Projects/ListProjectSolutions';
import type { UserProgress } from '../TeamProgress/TeamProgressPage';
import { projectGroups } from '../../pages/index.astro';
import type { QuestionGroupType } from '../../lib/question-group';
import { FeaturedGuideList } from '../FeaturedGuides/FeaturedGuideList';
import { FeaturedVideoList } from '../FeaturedVideos/FeaturedVideoList';
import type { GuideFileType } from '../../lib/guide';
import type { VideoFileType } from '../../lib/video';
const projectGroups = [
{
title: 'Frontend',
id: 'frontend',
},
{
title: 'Backend',
id: 'backend',
},
{
title: 'DevOps',
id: 'devops',
},
];
type UserDashboardResponse = {
name: string;

View File

@@ -257,6 +257,12 @@ const groups: GroupType[] = [
type: 'skill',
otherGroups: ['Web Development'],
},
{
title: 'Cloudflare',
link: '/cloudflare',
type: 'skill',
otherGroups: ['Web Development'],
},
{
title: 'Linux',
link: '/linux',

View File

@@ -0,0 +1,163 @@
import { ChevronDownIcon, StarIcon, User2Icon } from 'lucide-react';
import { useState } from 'react';
import { cn } from '../../../editor/utils/classname';
import { markdownToHtml } from '../../lib/markdown';
type Review = {
name: string;
role: string;
rating: number;
text: string;
avatarUrl?: string;
};
export function ReviewsSection() {
const [isExpanded, setIsExpanded] = useState(false);
const reviews: Review[] = [
{
name: 'Tomáš Janků',
role: 'Software Engineer',
rating: 5,
text: "The course and it's interactivity is excellent and I'd honestly say it's **one of the best** on the SQL theme I've seen out there.",
avatarUrl: 'https://github.com/jankudev.png',
},
{
name: 'Gourav Khunger',
role: 'Software Engineer',
rating: 5,
text: 'This course was **absolutely brilliant!** The integrated database environment to practice what I learned was the best part.',
avatarUrl: 'https://github.com/gouravkhunger.png',
},
{
name: 'Meabed',
role: 'CTO',
rating: 5,
text: 'Kamran has **clearly put a lot of thought** into this course. The content, structure and exercises were all great.',
avatarUrl: 'https://github.com/meabed.png',
},
{
name: 'Mohsin Aheer',
role: 'Sr. Software Engineer',
rating: 5,
text: 'I already knew SQL but this course **taught me a bunch of new things.** Practical examples and challenges were great. Highly recommended!',
avatarUrl: 'https://github.com/aheermohsinse.png',
},
{
name: 'Reeve Tee',
role: 'Software Engineer',
rating: 5,
text: 'I found the course **highly comprehensive and incredibly valuable**. I would love to see more courses like this!',
avatarUrl: '',
},
{
name: 'Zeeshan',
role: 'Sr. Software Engineer',
rating: 5,
text: 'Loved the teaching style and the way the course was structured. The **AI tutor was a great help** when I got stuck.',
avatarUrl: 'https://github.com/ziishaned.png',
},
{
name: 'Adnan Ahmed',
role: 'Engineering Manager',
rating: 5,
text: 'Having the integrated IDE made a huge difference. Being able to immediately practice what I learned was **invaluable**.',
avatarUrl: 'https://github.com/idnan.png',
},
{
name: 'Kalvin Chakma',
role: 'Jr. Software Engineer',
rating: 5,
text: "Best SQL course I've taken. The progression from basic to advanced concepts is **well thought out**, and the challenges are **excellent**.",
avatarUrl: 'https://github.com/kalvin-chakma.png',
},
{
name: 'Faisal Ahsan',
role: 'Software Engineer',
rating: 5,
text: 'The course and the learning experience was great. What I really liked was the **no-fluff explanations** and practical examples.',
avatarUrl: 'https://github.com/faisalahsan.png',
},
];
return (
<div className="relative max-w-5xl">
<div
className={cn('rounded-2xl pb-0 pt-24', {
'pb-8': isExpanded,
})}
>
<div
className={cn(
'relative grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3',
isExpanded ? '' : 'max-h-[400px] overflow-hidden',
)}
>
{reviews.map((review, index) => (
<div
key={index}
className="review-testimonial flex-shrink-0 break-inside-avoid-column rounded-xl bg-zinc-800/30 p-6 backdrop-blur [&_strong]:font-normal [&_strong]:text-yellow-300/70"
>
<div className="flex items-center gap-4">
{review.avatarUrl && (
<img
src={review.avatarUrl}
alt={review.name}
className="h-12 w-12 rounded-full object-cover"
/>
)}
{!review.avatarUrl && (
<div className="flex h-12 w-12 items-center justify-center rounded-full bg-zinc-800">
<User2Icon className="h-6 w-6 text-zinc-400" />
</div>
)}
<div>
<h3 className="font-semibold text-zinc-100">{review.name}</h3>
<p className="text-sm text-zinc-400">{review.role}</p>
</div>
</div>
<div className="mt-2 flex">
{Array.from({ length: review.rating }).map((_, i) => (
<StarIcon
key={i}
className="h-4 w-4 fill-yellow-500 text-yellow-500"
/>
))}
</div>
<p
className="mt-4 text-zinc-300"
dangerouslySetInnerHTML={{
__html: markdownToHtml(review.text),
}}
/>
</div>
))}
<div
className={cn(
'absolute bottom-0 left-0 right-0 h-40 bg-gradient-to-t from-[#121212] via-[#121212]/80 to-transparent',
isExpanded ? 'opacity-0' : 'opacity-100',
)}
/>
</div>
</div>
<div
className={cn('absolute left-1/2 top-full -translate-x-1/2', {
'-translate-y-1/2': !isExpanded,
})}
>
<button
onClick={() => setIsExpanded(!isExpanded)}
className="flex items-center gap-2 rounded-full bg-zinc-800 px-6 py-2 text-sm font-medium text-zinc-300 transition-all hover:bg-zinc-700 hover:text-zinc-100"
>
{isExpanded ? 'Show Less' : 'Show More Reviews'}
<ChevronDownIcon
className={`h-4 w-4 transition-transform ${
isExpanded ? 'rotate-180' : ''
}`}
/>
</button>
</div>
</div>
);
}

View File

@@ -14,6 +14,7 @@ import {
LayersIcon,
TableIcon,
WrenchIcon,
StarIcon,
} from 'lucide-react';
import { ChapterRow } from './ChapterRow';
import { CourseFeature } from './CourseFeature';
@@ -27,6 +28,7 @@ import { AccountButton } from './AccountButton';
import { RoadmapLogoIcon } from '../ReactIcons/RoadmapLogo';
import { PlatformDemo } from './PlatformDemo';
import { AuthorQuoteMessage } from './AuthorQuoteMessage';
import { ReviewsSection } from './ReviewsSection';
type ChapterData = {
icon: React.ReactNode;
title: string;
@@ -254,8 +256,9 @@ export function SQLCoursePage() {
</a>
<AccountButton />
</div>
<div className="relative mt-7 max-w-3xl text-left md:mt-20 md:text-center">
<div className="relative mt-7 max-w-4xl text-left md:mt-20 md:text-center">
<Spotlight className="left-[-170px] top-[-200px]" fill="#EAB308" />
<div className="inline-block rounded-full bg-yellow-500/10 px-4 py-1.5 text-base text-yellow-500 md:px-6 md:py-2 md:text-lg">
<span className="hidden sm:block">
Complete Course to Master Practical SQL
@@ -299,6 +302,8 @@ export function SQLCoursePage() {
</div>
</div>
<ReviewsSection />
<AuthorQuoteMessage />
<PlatformDemo />

View File

@@ -1,7 +1,8 @@
import '../FrameRenderer/FrameRenderer.css';
import '../EditorRoadmap/EditorRoadmapRenderer.css';
import { useEffect, useRef, useState } from 'react';
import { wireframeJSONToSVG } from 'roadmap-renderer';
import { Spinner } from '../ReactIcons/Spinner';
import '../FrameRenderer/FrameRenderer.css';
import { useOutsideClick } from '../../hooks/use-outside-click';
import { useKeydown } from '../../hooks/use-keydown';
import type { TeamMember } from './TeamProgressPage';
@@ -59,6 +60,7 @@ export function MemberProgressModal(props: ProgressMapProps) {
useState<MemberProgressResponse>();
const [isLoading, setIsLoading] = useState(true);
const toast = useToast();
const [renderer, setRenderer] = useState<PageType['renderer']>('balsamiq');
let resourceJsonUrl = import.meta.env.DEV
? 'http://localhost:3000'
@@ -98,6 +100,7 @@ export function MemberProgressModal(props: ProgressMapProps) {
}
const renderer = page.renderer || 'balsamiq';
setRenderer(renderer);
const res = await fetch(jsonUrl, {});
const json = await res.json();
@@ -275,7 +278,7 @@ export function MemberProgressModal(props: ProgressMapProps) {
return (
<div className="fixed left-0 right-0 top-0 z-[100] h-full items-center justify-center overflow-y-auto overflow-x-hidden overscroll-contain bg-black/50">
<div
id={'customized-roadmap'}
id={renderer === 'editor' ? undefined : 'customized-roadmap'}
className="relative mx-auto h-full w-full max-w-4xl p-4 md:h-auto"
>
<div

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,6 @@ Machine learning is a field of artificial intelligence that uses statistical tec
Learn more from the following resources:
- [@article@Advantages and Disadvantages of AI](https://towardsdatascience.com/advantages-and-disadvantages-of-artificial-intelligence-182a5ef6588c)
- [@article@Reinforcement Learning 101](https://towardsdatascience.com/reinforcement-learning-101-e24b50e1d292)
- [@article@Understanding AUC-ROC Curve](https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5)
- [@article@Advantages and Disadvantages of AI](https://medium.com/@laners.org/advantages-and-disadvantages-of-artificial-intelligence-cd6e42819b20)
- [@article@Reinforcement Learning 101](https://medium.com/towards-data-science/reinforcement-learning-101-e24b50e1d292)
- [@article@Understanding AUC-ROC Curve](https://medium.com/towards-data-science/understanding-auc-roc-curve-68b2303cc9c5)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
---
jsonUrl: '/jsons/roadmaps/cloudflare.json'
pdfUrl: '/pdfs/roadmaps/cloudflare.pdf'
order: 21
briefTitle: 'Cloudflare'
briefDescription: 'Learn to deploy your applications on Cloudflare'
title: 'Cloudflare'
description: 'Learn to deploy your applications on Cloudflare'
isNew: true
hasTopics: true
renderer: editor
dimensions:
width: 968
height: 2700
schema:
headline: 'Cloudflare Roadmap'
description: 'Learn how to use Cloudflare with this interactive step by step guide in 2025. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.'
imageUrl: 'https://roadmap.sh/roadmaps/cloudflare.png'
datePublished: '2025-02-12'
dateModified: '2025-02-12'
seo:
title: 'Cloudflare Roadmap - roadmap.sh'
description: 'Step by step guide to learn Cloudflare in 2025. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.'
keywords:
- 'cloudflare tutorial'
- 'step by step guide for cloudflare'
- 'cloudflare for beginners'
- 'how to learn cloudflare'
- 'use cloudflare in production'
- 'cloudflare roadmap 2024'
- 'guide to learning cloudflare'
- 'cloudflare roadmap'
- 'cloudflare learning path'
- 'cloudflare learning roadmap'
- 'container roadmap'
- 'cloudflare'
- 'cloudflare learning guide'
- 'cloudflare skills'
- 'cloudflare for development'
- 'cloudflare for development skills'
- 'cloudflare for development skills test'
- 'cloudflare learning guide'
- 'become a cloudflare expert'
- 'cloudflare career path'
- 'learn cloudflare for development'
- 'what is cloudflare'
- 'cloudflare quiz'
- 'cloudflare interview questions'
relatedRoadmaps:
- 'devops'
- 'backend'
- 'full-stack'
- 'javascript'
- 'nodejs'
- 'aws'
- 'linux'
sitemap:
priority: 1
changefreq: 'monthly'
tags:
- 'roadmap'
- 'main-sitemap'
- 'skill-roadmap'
---

View File

@@ -0,0 +1 @@
# AI Gateway

View File

@@ -0,0 +1 @@
# AI Model Integration

View File

@@ -0,0 +1 @@
# AI-powered Search

View File

@@ -0,0 +1 @@
# Any Frontend Framework

View File

@@ -0,0 +1 @@
# Asset Management

View File

@@ -0,0 +1 @@
# Background Jobs

View File

@@ -0,0 +1 @@
# Basic Command-line Knowledge

View File

@@ -0,0 +1 @@
# Bindings

View File

@@ -0,0 +1 @@
# Bot Management

View File

@@ -0,0 +1 @@
# Browser Rendering

View File

@@ -0,0 +1 @@
# Bucket Lifecycle

View File

@@ -0,0 +1 @@
# Bucket Operations

View File

@@ -0,0 +1 @@
# Bulk Operations

View File

@@ -0,0 +1 @@
# Cache API

View File

@@ -0,0 +1 @@
# Caching Patterns

View File

@@ -0,0 +1 @@
# Caching Strategies

View File

@@ -0,0 +1 @@
# Calls

View File

@@ -0,0 +1 @@
# CI/CD Pipelines

View File

@@ -0,0 +1 @@
# Coordination

View File

@@ -0,0 +1 @@
# D1

View File

@@ -0,0 +1 @@
# Dead Letter Queues

View File

@@ -0,0 +1 @@
# Debugging Techniques

View File

@@ -0,0 +1 @@
# Development Tools

View File

@@ -0,0 +1 @@
# DevTools Integration

View File

@@ -0,0 +1 @@
# DevTools

View File

@@ -0,0 +1 @@
# Drizzle

View File

@@ -0,0 +1 @@
# Durable Objects

View File

@@ -0,0 +1 @@
# Edge Computing Fundamentals

View File

@@ -0,0 +1 @@
# Edge SSL/TLS

View File

@@ -0,0 +1 @@
# Email Workers

View File

@@ -0,0 +1 @@
# Event-driven Architectures

View File

@@ -0,0 +1 @@
# External API Integration

View File

@@ -0,0 +1 @@
# Fetch API and Runtime APIs

View File

@@ -0,0 +1 @@
# Filtering

View File

@@ -0,0 +1 @@
# Git Basics

View File

@@ -0,0 +1,13 @@
# Hono
Hono is a small, simple and ultrafast web framework built on web standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, and Node.js. Hono is more known for supporting a lot more than the basics.
## Use-cases
Hono is a simple web application framework similar to the well known javascript framework Express, without a frontend. But it runs on CDN Edges and allows you to construct larger applications when combined with middleware.
Visit the following resources to learn more:
- [@official@Official Documentation](https://hono.dev/docs/)
- [@article@Hono.js: A Small Framework with Big Potential](https://medium.com/@appvintechnologies/hono-js-a-small-framework-with-big-potential-15a093fc5c07)
- [@article@Quick Start with Hono: Simple Setup Guide](https://dev.to/koshirok096/quick-start-with-hono-simple-setup-guide-bite-sized-article-lhe)
- [@opensource@Hono JS Examples](https://github.com/honojs/examples)
- [@video@Learn with me](https://www.youtube.com/watch?v=gY-TK33G6kQ)

View File

@@ -0,0 +1 @@
# HTML Rewriting

View File

@@ -0,0 +1 @@
# HTTP and Web Protocols

View File

@@ -0,0 +1 @@
# Image Processing

View File

@@ -0,0 +1 @@
# Images

View File

@@ -0,0 +1 @@
# Integration & Workflows

View File

@@ -0,0 +1 @@
# Inter Worker Communication

View File

@@ -0,0 +1 @@
# Isolates Architecture

View File

@@ -0,0 +1,19 @@
# Itty Router
Itty Router is a lightweight router with the motto "less is more" that supports Cloudflare workers and pages. While other libraries may suffer from feature creep/bloat to please a wider audience, Itty Router painfully consider every single byte added to itty. Our router options range from ~450 bytes to ~970 bytes for a batteries-included version with built-in defaults, error handling, formatting, etc. On top of that, the following concepts aim to keep YOUR code tiny (and readable) as well.
## Simple Projects ideas
Itty Router is a lightweight router system that supports typescript. You can create easy and good routers for Cloudflare workers or pages.
With a simple project like a URL shortener, you can use Itty Router and Cloudflare KV.
Other project ideas can be found:
- Webhook Relay
- Transform webhook data or API data towards another API so you can transform the data as you like.
- Micro URL Monitoring
- Monitor any URL and give back responses on the specific endpoint.
- Single-Use Download Links (Watch out for costs from Cloudflare!)
- Generate links that expire after one download, ideal for file sharing.
Visit the following resources to learn more:
- [@official@Official Documentation](https://itty.dev/itty-router/)

View File

@@ -0,0 +1 @@
# JavaScript Fundamentals

View File

@@ -0,0 +1 @@
# Key-value Operations

View File

@@ -0,0 +1 @@
# Large File Handling

View File

@@ -0,0 +1 @@
# Live streaming

View File

@@ -0,0 +1 @@
# Logging and Monitoring

View File

@@ -0,0 +1 @@
# Message Processing

View File

@@ -0,0 +1 @@
# Metadata Handling

View File

@@ -0,0 +1 @@
# Middleware Patterns

View File

@@ -0,0 +1 @@
# Migrations

View File

@@ -0,0 +1 @@
# Miniflare

View File

@@ -0,0 +1 @@
# Miniflare

View File

@@ -0,0 +1 @@
# Monitoring Tools

View File

@@ -0,0 +1 @@
# Node.js and NPM

View File

@@ -0,0 +1 @@
# Object Storage

View File

@@ -0,0 +1 @@
# Pages Functions

View File

@@ -0,0 +1 @@
# Persistence

View File

@@ -0,0 +1 @@
# Prisma

View File

@@ -0,0 +1 @@
# Processing

View File

@@ -0,0 +1 @@
# Query Optimization

View File

@@ -0,0 +1 @@
# Queues

View File

@@ -0,0 +1 @@
# R2 Storage

View File

@@ -0,0 +1 @@
# Rate Limiting

View File

@@ -0,0 +1 @@
# Rate Limiting

View File

@@ -0,0 +1 @@
# Request/Response Handling

View File

@@ -0,0 +1 @@
# Routing

View File

@@ -0,0 +1 @@
# Schema Management

View File

@@ -0,0 +1 @@
# Security & Performance

View File

@@ -0,0 +1 @@
# Service Bindings

View File

@@ -0,0 +1 @@
# Service Bindings

View File

@@ -0,0 +1 @@
# Similarity Search

View File

@@ -0,0 +1 @@
# Speech Rcognition

View File

@@ -0,0 +1 @@
# State Management

View File

@@ -0,0 +1 @@
# Stream

View File

@@ -0,0 +1 @@
# Testing Frameworks

View File

@@ -0,0 +1 @@
# Text Generation

View File

@@ -0,0 +1 @@
# Transactional Operations

View File

@@ -0,0 +1 @@
# Tunnels

View File

@@ -0,0 +1 @@
# TypeScript Fundamentals

View File

@@ -0,0 +1 @@
# Understand Serverless Architecture

View File

@@ -0,0 +1 @@
# Vector Embeddings

View File

@@ -0,0 +1 @@
# Vectorize

Some files were not shown because too many files have changed in this diff Show More