From 882d3e3e6425b5594020af152fbf818d89676d02 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Thu, 26 Jun 2025 16:42:51 +0100 Subject: [PATCH] Add alt course page --- src/components/SQLCourse/SQLCoursePage.tsx | 410 +++++++++--------- .../SQLCourseVariant/SQLCourseVariantPage.tsx | 211 +++++++++ src/pages/courses/master-sql.astro | 110 +++++ 3 files changed, 525 insertions(+), 206 deletions(-) create mode 100644 src/components/SQLCourseVariant/SQLCourseVariantPage.tsx create mode 100644 src/pages/courses/master-sql.astro diff --git a/src/components/SQLCourse/SQLCoursePage.tsx b/src/components/SQLCourse/SQLCoursePage.tsx index e1257c7b1..a7dc2bd36 100644 --- a/src/components/SQLCourse/SQLCoursePage.tsx +++ b/src/components/SQLCourse/SQLCoursePage.tsx @@ -39,212 +39,210 @@ type ChapterData = { lessons: { title: string; type: 'lesson' | 'challenge' | 'quiz' }[]; }; -export function SQLCoursePage() { - const chapters: ChapterData[] = [ - { - icon: , - title: 'Introduction', - description: - 'Get comfortable with database concepts and SQL fundamentals.', - lessonCount: 4, - challengeCount: 1, - lessons: [ - { title: 'Basics of Databases', type: 'lesson' }, - { title: 'What is SQL?', type: 'lesson' }, - { title: 'Types of Queries', type: 'lesson' }, - { title: 'Next Steps', type: 'lesson' }, - { title: 'Introduction Quiz', type: 'challenge' }, - ], - }, - { - icon: , - title: 'SQL Basics', - description: 'Master the essential SQL query operations and syntax.', - lessonCount: 9, - challengeCount: 7, - lessons: [ - { title: 'SELECT Fundamentals', type: 'lesson' }, - { title: 'Aliases and Constants', type: 'lesson' }, - { title: 'Expressions in SELECT', type: 'lesson' }, - { title: 'Selecting DISTINCT Values', type: 'lesson' }, - { title: 'Filtering with WHERE', type: 'lesson' }, - { title: 'Sorting with ORDER BY', type: 'lesson' }, - { title: 'Limiting Results with LIMIT', type: 'lesson' }, - { title: 'Handling NULL Values', type: 'lesson' }, - { title: 'Comments', type: 'lesson' }, - { title: 'Basic Queries Quiz', type: 'quiz' }, - { title: 'Projection Challenge', type: 'challenge' }, - { title: 'Select Expression', type: 'challenge' }, - { title: 'Select Unique', type: 'challenge' }, - { title: 'Logical Operators', type: 'challenge' }, - { title: 'Sorting Challenge', type: 'challenge' }, - { title: 'Sorting and Limiting', type: 'challenge' }, - { title: 'Sorting and Filtering', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Manipulating Data', - description: 'Learn how to modify and manipulate data in your database.', - lessonCount: 3, - challengeCount: 3, - lessons: [ - { title: 'INSERT Operations', type: 'lesson' }, - { title: 'UPDATE Operations', type: 'lesson' }, - { title: 'DELETE Operations', type: 'lesson' }, - { title: 'Data Manipulation Quiz', type: 'quiz' }, - { title: 'Inserting Customers', type: 'challenge' }, - { title: 'Updating Bookstore', type: 'challenge' }, - { title: 'Deleting Books', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Defining Tables', - description: 'Master database schema design and table management.', - lessonCount: 9, - challengeCount: 7, - lessons: [ - { title: 'Creating Tables', type: 'lesson' }, - { title: 'Data Types in SQLite', type: 'lesson' }, - { title: 'Common Data Types', type: 'lesson' }, - { title: 'More on Numeric Types', type: 'lesson' }, - { title: 'Temporal Data Types', type: 'lesson' }, - { title: 'CHECK Constraints', type: 'lesson' }, - { title: 'Primary Key Constraint', type: 'lesson' }, - { title: 'Modifying Tables', type: 'lesson' }, - { title: 'Dropping and Truncating', type: 'lesson' }, - { title: 'Defining Tables Quiz', type: 'quiz' }, - { title: 'Simple Table Creation', type: 'challenge' }, - { title: 'Data Types Challenge', type: 'challenge' }, - { title: 'Constraints Challenge', type: 'challenge' }, - { title: 'Temporal Validation', type: 'challenge' }, - { title: 'Sales Data Analysis', type: 'challenge' }, - { title: 'Modifying Tables', type: 'challenge' }, - { title: 'Removing Table Data', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Multi-Table Queries', - description: - 'Learn to work with multiple tables using JOINs and relationships.', - lessonCount: 7, - challengeCount: 10, - lessons: [ - { title: 'More on Relational Data', type: 'lesson' }, - { title: 'Relationships and Types', type: 'lesson' }, - { title: 'JOINs in Queries', type: 'lesson' }, - { title: 'Self Joins and Usecases', type: 'lesson' }, - { title: 'Foreign Key Constraint', type: 'lesson' }, - { title: 'Set Operator Queries', type: 'lesson' }, - { title: 'Views and Virtual Tables', type: 'lesson' }, - { title: 'Multi-Table Queries Quiz', type: 'quiz' }, - { title: 'Inactive Customers', type: 'challenge' }, - { title: 'Recent 3 Orders', type: 'challenge' }, - { title: 'High Value Orders', type: 'challenge' }, - { title: 'Specific Book Customers', type: 'challenge' }, - { title: 'Referred Customers', type: 'challenge' }, - { title: 'Readers Like You', type: 'challenge' }, - { title: 'Same Price Books', type: 'challenge' }, - { title: 'Multi-Section Authors', type: 'challenge' }, - { title: 'Expensive Books', type: 'challenge' }, - { title: 'Trending Tech Books', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Aggregate Functions', - description: - "Analyze and summarize data using SQL's powerful aggregation features.", - lessonCount: 4, - challengeCount: 10, - lessons: [ - { title: 'What is Aggregation?', type: 'lesson' }, - { title: 'Basic Aggregation', type: 'lesson' }, - { title: 'Grouping Data', type: 'lesson' }, - { title: 'Grouping and Filtering', type: 'lesson' }, - { title: 'Aggregate Queries Quiz', type: 'quiz' }, - { title: 'Book Sales Summary', type: 'challenge' }, - { title: 'Category Insights', type: 'challenge' }, - { title: 'Author Tier Analysis', type: 'challenge' }, - { title: 'Author Book Stats', type: 'challenge' }, - { title: 'Daily Sales Report', type: 'challenge' }, - { title: 'Publisher Stats', type: 'challenge' }, - { title: 'High Value Publishers', type: 'challenge' }, - { title: 'Premium Authors', type: 'challenge' }, - { title: 'Sales Analysis', type: 'challenge' }, - { title: 'Employee Performance', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Scalar Functions', - description: - 'Master built-in functions for data transformation and manipulation.', - lessonCount: 6, - challengeCount: 5, - lessons: [ - { title: 'What are they?', type: 'lesson' }, - { title: 'String Functions', type: 'lesson' }, - { title: 'Numeric Functions', type: 'lesson' }, - { title: 'Date Functions', type: 'lesson' }, - { title: 'Conversion Functions', type: 'lesson' }, - { title: 'Logical Functions', type: 'lesson' }, - { title: 'Scalar Functions Quiz', type: 'quiz' }, - { title: 'Customer Contact List', type: 'challenge' }, - { title: 'Membership Duration', type: 'challenge' }, - { title: 'Book Performance', type: 'challenge' }, - { title: 'Book Categories', type: 'challenge' }, - { title: 'Monthly Sales Analysis', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Subqueries and CTEs', - description: - 'Write complex queries using subqueries and common table expressions.', - lessonCount: 4, - challengeCount: 6, - lessons: [ - { title: 'What are Subqueries?', type: 'lesson' }, - { title: 'Correlated Subqueries', type: 'lesson' }, - { title: 'Common Table Expressions', type: 'lesson' }, - { title: 'Recursive CTEs', type: 'lesson' }, - { title: 'Subqueries Quiz', type: 'quiz' }, - { title: 'Books Above Average', type: 'challenge' }, - { title: 'Latest Category Books', type: 'challenge' }, - { title: 'Low Stock by Category', type: 'challenge' }, - { title: 'Bestseller Rankings', type: 'challenge' }, - { title: 'New Customer Analysis', type: 'challenge' }, - { title: 'Daily Sales Report', type: 'challenge' }, - ], - }, - { - icon: , - title: 'Window Functions', - description: - 'Advanced analytics and calculations using window functions.', - lessonCount: 5, - challengeCount: 7, - lessons: [ - { title: 'What are they?', type: 'lesson' }, - { title: 'OVER and PARTITION BY', type: 'lesson' }, - { title: 'Use of ORDER BY', type: 'lesson' }, - { title: 'Ranking Functions', type: 'lesson' }, - { title: 'Window Frames', type: 'lesson' }, - { title: 'Window Functions Quiz', type: 'quiz' }, - { title: 'Basic Sales Metrics', type: 'challenge' }, - { title: 'Bestseller Comparison', type: 'challenge' }, - { title: 'Author Category Sales', type: 'challenge' }, - { title: 'Top Authors', type: 'challenge' }, - { title: 'Price Tier Rankings', type: 'challenge' }, - { title: 'Month-over-Month Sales', type: 'challenge' }, - { title: 'Price Range Analysis', type: 'challenge' }, - ], - }, - ]; +export const sqlCourseChapters: ChapterData[] = [ + { + icon: , + title: 'Introduction', + description: 'Get comfortable with database concepts and SQL fundamentals.', + lessonCount: 4, + challengeCount: 1, + lessons: [ + { title: 'Basics of Databases', type: 'lesson' }, + { title: 'What is SQL?', type: 'lesson' }, + { title: 'Types of Queries', type: 'lesson' }, + { title: 'Next Steps', type: 'lesson' }, + { title: 'Introduction Quiz', type: 'challenge' }, + ], + }, + { + icon: , + title: 'SQL Basics', + description: 'Master the essential SQL query operations and syntax.', + lessonCount: 9, + challengeCount: 7, + lessons: [ + { title: 'SELECT Fundamentals', type: 'lesson' }, + { title: 'Aliases and Constants', type: 'lesson' }, + { title: 'Expressions in SELECT', type: 'lesson' }, + { title: 'Selecting DISTINCT Values', type: 'lesson' }, + { title: 'Filtering with WHERE', type: 'lesson' }, + { title: 'Sorting with ORDER BY', type: 'lesson' }, + { title: 'Limiting Results with LIMIT', type: 'lesson' }, + { title: 'Handling NULL Values', type: 'lesson' }, + { title: 'Comments', type: 'lesson' }, + { title: 'Basic Queries Quiz', type: 'quiz' }, + { title: 'Projection Challenge', type: 'challenge' }, + { title: 'Select Expression', type: 'challenge' }, + { title: 'Select Unique', type: 'challenge' }, + { title: 'Logical Operators', type: 'challenge' }, + { title: 'Sorting Challenge', type: 'challenge' }, + { title: 'Sorting and Limiting', type: 'challenge' }, + { title: 'Sorting and Filtering', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Manipulating Data', + description: 'Learn how to modify and manipulate data in your database.', + lessonCount: 3, + challengeCount: 3, + lessons: [ + { title: 'INSERT Operations', type: 'lesson' }, + { title: 'UPDATE Operations', type: 'lesson' }, + { title: 'DELETE Operations', type: 'lesson' }, + { title: 'Data Manipulation Quiz', type: 'quiz' }, + { title: 'Inserting Customers', type: 'challenge' }, + { title: 'Updating Bookstore', type: 'challenge' }, + { title: 'Deleting Books', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Defining Tables', + description: 'Master database schema design and table management.', + lessonCount: 9, + challengeCount: 7, + lessons: [ + { title: 'Creating Tables', type: 'lesson' }, + { title: 'Data Types in SQLite', type: 'lesson' }, + { title: 'Common Data Types', type: 'lesson' }, + { title: 'More on Numeric Types', type: 'lesson' }, + { title: 'Temporal Data Types', type: 'lesson' }, + { title: 'CHECK Constraints', type: 'lesson' }, + { title: 'Primary Key Constraint', type: 'lesson' }, + { title: 'Modifying Tables', type: 'lesson' }, + { title: 'Dropping and Truncating', type: 'lesson' }, + { title: 'Defining Tables Quiz', type: 'quiz' }, + { title: 'Simple Table Creation', type: 'challenge' }, + { title: 'Data Types Challenge', type: 'challenge' }, + { title: 'Constraints Challenge', type: 'challenge' }, + { title: 'Temporal Validation', type: 'challenge' }, + { title: 'Sales Data Analysis', type: 'challenge' }, + { title: 'Modifying Tables', type: 'challenge' }, + { title: 'Removing Table Data', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Multi-Table Queries', + description: + 'Learn to work with multiple tables using JOINs and relationships.', + lessonCount: 7, + challengeCount: 10, + lessons: [ + { title: 'More on Relational Data', type: 'lesson' }, + { title: 'Relationships and Types', type: 'lesson' }, + { title: 'JOINs in Queries', type: 'lesson' }, + { title: 'Self Joins and Usecases', type: 'lesson' }, + { title: 'Foreign Key Constraint', type: 'lesson' }, + { title: 'Set Operator Queries', type: 'lesson' }, + { title: 'Views and Virtual Tables', type: 'lesson' }, + { title: 'Multi-Table Queries Quiz', type: 'quiz' }, + { title: 'Inactive Customers', type: 'challenge' }, + { title: 'Recent 3 Orders', type: 'challenge' }, + { title: 'High Value Orders', type: 'challenge' }, + { title: 'Specific Book Customers', type: 'challenge' }, + { title: 'Referred Customers', type: 'challenge' }, + { title: 'Readers Like You', type: 'challenge' }, + { title: 'Same Price Books', type: 'challenge' }, + { title: 'Multi-Section Authors', type: 'challenge' }, + { title: 'Expensive Books', type: 'challenge' }, + { title: 'Trending Tech Books', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Aggregate Functions', + description: + "Analyze and summarize data using SQL's powerful aggregation features.", + lessonCount: 4, + challengeCount: 10, + lessons: [ + { title: 'What is Aggregation?', type: 'lesson' }, + { title: 'Basic Aggregation', type: 'lesson' }, + { title: 'Grouping Data', type: 'lesson' }, + { title: 'Grouping and Filtering', type: 'lesson' }, + { title: 'Aggregate Queries Quiz', type: 'quiz' }, + { title: 'Book Sales Summary', type: 'challenge' }, + { title: 'Category Insights', type: 'challenge' }, + { title: 'Author Tier Analysis', type: 'challenge' }, + { title: 'Author Book Stats', type: 'challenge' }, + { title: 'Daily Sales Report', type: 'challenge' }, + { title: 'Publisher Stats', type: 'challenge' }, + { title: 'High Value Publishers', type: 'challenge' }, + { title: 'Premium Authors', type: 'challenge' }, + { title: 'Sales Analysis', type: 'challenge' }, + { title: 'Employee Performance', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Scalar Functions', + description: + 'Master built-in functions for data transformation and manipulation.', + lessonCount: 6, + challengeCount: 5, + lessons: [ + { title: 'What are they?', type: 'lesson' }, + { title: 'String Functions', type: 'lesson' }, + { title: 'Numeric Functions', type: 'lesson' }, + { title: 'Date Functions', type: 'lesson' }, + { title: 'Conversion Functions', type: 'lesson' }, + { title: 'Logical Functions', type: 'lesson' }, + { title: 'Scalar Functions Quiz', type: 'quiz' }, + { title: 'Customer Contact List', type: 'challenge' }, + { title: 'Membership Duration', type: 'challenge' }, + { title: 'Book Performance', type: 'challenge' }, + { title: 'Book Categories', type: 'challenge' }, + { title: 'Monthly Sales Analysis', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Subqueries and CTEs', + description: + 'Write complex queries using subqueries and common table expressions.', + lessonCount: 4, + challengeCount: 6, + lessons: [ + { title: 'What are Subqueries?', type: 'lesson' }, + { title: 'Correlated Subqueries', type: 'lesson' }, + { title: 'Common Table Expressions', type: 'lesson' }, + { title: 'Recursive CTEs', type: 'lesson' }, + { title: 'Subqueries Quiz', type: 'quiz' }, + { title: 'Books Above Average', type: 'challenge' }, + { title: 'Latest Category Books', type: 'challenge' }, + { title: 'Low Stock by Category', type: 'challenge' }, + { title: 'Bestseller Rankings', type: 'challenge' }, + { title: 'New Customer Analysis', type: 'challenge' }, + { title: 'Daily Sales Report', type: 'challenge' }, + ], + }, + { + icon: , + title: 'Window Functions', + description: 'Advanced analytics and calculations using window functions.', + lessonCount: 5, + challengeCount: 7, + lessons: [ + { title: 'What are they?', type: 'lesson' }, + { title: 'OVER and PARTITION BY', type: 'lesson' }, + { title: 'Use of ORDER BY', type: 'lesson' }, + { title: 'Ranking Functions', type: 'lesson' }, + { title: 'Window Frames', type: 'lesson' }, + { title: 'Window Functions Quiz', type: 'quiz' }, + { title: 'Basic Sales Metrics', type: 'challenge' }, + { title: 'Bestseller Comparison', type: 'challenge' }, + { title: 'Author Category Sales', type: 'challenge' }, + { title: 'Top Authors', type: 'challenge' }, + { title: 'Price Tier Rankings', type: 'challenge' }, + { title: 'Month-over-Month Sales', type: 'challenge' }, + { title: 'Price Range Analysis', type: 'challenge' }, + ], + }, +]; +export function SQLCoursePage() { return ( <> @@ -379,7 +377,7 @@ export function SQLCoursePage() { />
- {chapters.map((chapter, index) => ( + {sqlCourseChapters.map((chapter, index) => ( ))}
diff --git a/src/components/SQLCourseVariant/SQLCourseVariantPage.tsx b/src/components/SQLCourseVariant/SQLCourseVariantPage.tsx new file mode 100644 index 000000000..c6f8f3775 --- /dev/null +++ b/src/components/SQLCourseVariant/SQLCourseVariantPage.tsx @@ -0,0 +1,211 @@ +import { + BrainIcon, + ClipboardIcon, + CodeIcon, + Eye, + FileCheckIcon, + FileQuestionIcon, +} from 'lucide-react'; +import { AuthorCredentials } from '../SQLCourse/AuthorCredentials'; +import { AuthorQuoteMessage } from '../SQLCourse/AuthorQuoteMessage'; +import { BuyButton } from '../SQLCourse/BuyButton'; +import { ChapterRow } from '../SQLCourse/ChapterRow'; +import { CourseAuthor } from '../SQLCourse/CourseAuthor'; +import { CourseFeature } from '../SQLCourse/CourseFeature'; +import { FAQSection } from '../SQLCourse/FAQSection'; +import { FloatingPurchase } from '../SQLCourse/FloatingPurchase'; +import { PlatformDemo } from '../SQLCourse/PlatformDemo'; +import { ReviewsSection } from '../SQLCourse/ReviewsSection'; +import { SectionHeader } from '../SQLCourse/SectionHeader'; +import { Spotlight } from '../SQLCourse/Spotlight'; +import { sqlCourseChapters } from '../SQLCourse/SQLCoursePage'; +import { RoadmapLogoIcon } from '../ReactIcons/RoadmapLogo'; + +export function SQLCourseVariantPage() { + return ( + <> +
+
+ + +
+ + + +
+

+ Master SQL Queries +

+

+ Complete course with AI Tutor, real-world challenges and more +

+
+
+ + +

+ A structured course to master database querying - perfect for + developers, data analysts, and anyone working with data. +

+ +
+
+ + 55+ Lessons +
+
+ + 100+ Challenges +
+
+ + Integrated IDE +
+
+ + AI Tutor +
+
+ +
+ +
+
+ + + + + + + + + +
+
+ + + + + + +
+
+ +
+

+ Oh, and you get the{' '} + + lifetime access + {' '} + to the course including all the future updates. Also, there is a + certificate of completion which you can share with your potential + employers. +

+
+ + + +
+ {sqlCourseChapters.map((chapter, index) => ( + + ))} +
+ + +

+ I am Kamran Ahmed, an engineering leader with over a decade of + experience in the tech industry. Throughout my career I have + built and scaled software systems, architected complex data + systems, and worked with large amounts of data to create + efficient solutions. +

+

+ I am also the creator of{' '} + + roadmap.sh + + , a platform trusted by millions of developers to guide their + learning journeys. I love to simplify complex topics and make + learning practical and accessible. +

+

+ In this course, I will share everything I have learned about SQL + from the basics to advanced concepts in a way that is easy to + understand and apply. Whether you are just starting or looking + to sharpen your skills, you are in the right place. +

+
+ } + /> + + + + + + + + + + + ); +} diff --git a/src/pages/courses/master-sql.astro b/src/pages/courses/master-sql.astro new file mode 100644 index 000000000..59399b375 --- /dev/null +++ b/src/pages/courses/master-sql.astro @@ -0,0 +1,110 @@ +--- +import { SQLCourseVariantPage } from '../../components/SQLCourseVariant/SQLCourseVariantPage.tsx'; +import SkeletonLayout from '../../layouts/SkeletonLayout.astro'; +--- + + + +