Add "New" badge for new videos and guides

pull/1657/head
Kamran Ahmed 2 years ago
parent fd63c1b1fc
commit 363656ec53
  1. 2
      components/links-list-item.tsx
  2. 6
      components/watch/video-grid-item.tsx
  3. 56
      content/guides.json
  4. 2
      content/roadmaps/107-python/content/107-python-testing/102-nose.md
  5. 70
      content/videos.json
  6. 2
      lib/guide.ts
  7. 2
      lib/video.ts
  8. 2
      pages/guides/index.tsx
  9. 4
      pages/index.tsx
  10. 3
      pages/watch/index.tsx

@ -49,7 +49,7 @@ export function LinksListItem(props: LinksListItemProps) {
{icon} {icon}
<Text maxWidth={'345px'} isTruncated as='span'>{title}</Text> <Text maxWidth={'345px'} isTruncated as='span'>{title}</Text>
{badgeText && {badgeText &&
<Badge pos='relative' top='1px' variant='subtle' colorScheme='purple' ml='10px'>{badgeText}</Badge>} <Badge pos='relative' top='1px' variant='subtle' colorScheme='green' ml='10px'>{badgeText}</Badge>}
</Flex> </Flex>
<Text d={[hideSubtitleOnMobile ? 'none' : 'inline', 'inline']} mt={['3px', 0]} as='span' <Text d={[hideSubtitleOnMobile ? 'none' : 'inline', 'inline']} mt={['3px', 0]} as='span'
fontSize={['11px', '11px', '12px']} color='gray.500'>{subtitle}</Text> fontSize={['11px', '11px', '12px']} color='gray.500'>{subtitle}</Text>

@ -7,7 +7,6 @@ type VideoGridItemProps = {
date: string; date: string;
target?: string; target?: string;
isNew?: boolean; isNew?: boolean;
isPro?: boolean;
colorIndex?: number; colorIndex?: number;
}; };
@ -54,14 +53,13 @@ const bgColorList = [
]; ];
export function VideoGridItem(props: VideoGridItemProps) { export function VideoGridItem(props: VideoGridItemProps) {
const { title, subtitle, date, isNew = false, isPro = false, colorIndex = 0, href, target } = props; const { title, subtitle, date, isNew = false, colorIndex = 0, href, target } = props;
return ( return (
<Box _hover={{ textDecoration: 'none', transform: 'scale(1.02)' }} as={Link} href={ href } target={target || '_self'} shadow='xl' p='20px' <Box _hover={{ textDecoration: 'none', transform: 'scale(1.02)' }} as={Link} href={ href } target={target || '_self'} shadow='xl' p='20px'
rounded='10px' bg={bgColorList[colorIndex] ?? bgColorList[0]} flex={1}> rounded='10px' bg={bgColorList[colorIndex] ?? bgColorList[0]} flex={1}>
<Text mb='7px' fontSize='12px' color='gray.400'> <Text mb='7px' fontSize='12px' color='gray.400'>
{isNew && <Badge colorScheme={'yellow'} mr='10px'>New</Badge>} {isNew && <Badge colorScheme={'green'} mr='10px'>New</Badge>}
{isPro && <Badge colorScheme={'blue'} mr='10px'>PRO</Badge>}
{date} {date}
</Text> </Text>
<Heading color='white' mb={'6px'} fontSize='20px' lineHeight={'28px'}>{title}</Heading> <Heading color='white' mb={'6px'} fontSize='20px' lineHeight={'28px'}>{title}</Heading>

@ -3,7 +3,7 @@
"id": "avoid-render-blocking-javascript-with-async-defer", "id": "avoid-render-blocking-javascript-with-async-defer",
"title": "Async and Defer Script Loading", "title": "Async and Defer Script Loading",
"description": "Learn how to avoid render blocking JavaScript using async and defer scripts.", "description": "Learn how to avoid render blocking JavaScript using async and defer scripts.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-09-10T19:59:14.191Z", "updatedAt": "2021-09-10T19:59:14.191Z",
"createdAt": "2021-09-10T19:59:14.191Z" "createdAt": "2021-09-10T19:59:14.191Z"
@ -12,7 +12,7 @@
"id": "what-are-web-vitals", "id": "what-are-web-vitals",
"title": "What are Web Vitals?", "title": "What are Web Vitals?",
"description": "Learn what are the core web vitals and how to measure them.", "description": "Learn what are the core web vitals and how to measure them.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-09-05T19:59:14.191Z", "updatedAt": "2021-09-05T19:59:14.191Z",
"createdAt": "2021-09-05T19:59:14.191Z" "createdAt": "2021-09-05T19:59:14.191Z"
@ -21,7 +21,7 @@
"id": "what-is-sli-slo-sla", "id": "what-is-sli-slo-sla",
"title": "SLIs, SLOs and SLAs", "title": "SLIs, SLOs and SLAs",
"description": "Learn what are different indicators for performance identification of any service.", "description": "Learn what are different indicators for performance identification of any service.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-08-31T19:59:14.191Z", "updatedAt": "2021-08-31T19:59:14.191Z",
"createdAt": "2021-08-31T19:59:14.191Z" "createdAt": "2021-08-31T19:59:14.191Z"
@ -30,7 +30,7 @@
"id": "ci-cd", "id": "ci-cd",
"title": "What is CI and CD?", "title": "What is CI and CD?",
"description": "Learn the basics of CI/CD and how to implement that with GitHub Actions.", "description": "Learn the basics of CI/CD and how to implement that with GitHub Actions.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-07-09T19:59:14.191Z", "updatedAt": "2021-07-09T19:59:14.191Z",
"createdAt": "2021-07-09T19:59:14.191Z" "createdAt": "2021-07-09T19:59:14.191Z"
@ -39,7 +39,7 @@
"id": "sso", "id": "sso",
"title": "SSO — Single Sign On", "title": "SSO — Single Sign On",
"description": "Learn the basics of SAML and understand how does Single Sign On work.", "description": "Learn the basics of SAML and understand how does Single Sign On work.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-07-01T19:59:14.191Z", "updatedAt": "2021-07-01T19:59:14.191Z",
"createdAt": "2021-07-01T19:59:14.191Z" "createdAt": "2021-07-01T19:59:14.191Z"
@ -48,7 +48,7 @@
"id": "oauth", "id": "oauth",
"title": "OAuth — Open Authorization", "title": "OAuth — Open Authorization",
"description": "Learn and understand what is OAuth and how it works", "description": "Learn and understand what is OAuth and how it works",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-06-28T19:59:14.191Z", "updatedAt": "2021-06-28T19:59:14.191Z",
"createdAt": "2021-06-28T19:59:14.191Z" "createdAt": "2021-06-28T19:59:14.191Z"
@ -57,7 +57,7 @@
"id": "jwt-authentication", "id": "jwt-authentication",
"title": "JWT Authentication", "title": "JWT Authentication",
"description": "Understand what is JWT authentication and how is it implemented", "description": "Understand what is JWT authentication and how is it implemented",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-06-20T19:59:14.191Z", "updatedAt": "2021-06-20T19:59:14.191Z",
"createdAt": "2021-06-20T19:59:14.191Z" "createdAt": "2021-06-20T19:59:14.191Z"
@ -66,7 +66,7 @@
"id": "token-authentication", "id": "token-authentication",
"title": "Token Based Authentication", "title": "Token Based Authentication",
"description": "Understand what is token based authentication and how it is implemented", "description": "Understand what is token based authentication and how it is implemented",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-06-02T20:59:14.191Z", "updatedAt": "2021-06-02T20:59:14.191Z",
"createdAt": "2021-06-02T20:59:14.191Z" "createdAt": "2021-06-02T20:59:14.191Z"
@ -75,7 +75,7 @@
"id": "session-authentication", "id": "session-authentication",
"title": "Session Based Authentication", "title": "Session Based Authentication",
"description": "Understand what is session based authentication and how it is implemented", "description": "Understand what is session based authentication and how it is implemented",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-05-26T20:59:14.191Z", "updatedAt": "2021-05-26T20:59:14.191Z",
"createdAt": "2021-05-26T20:59:14.191Z" "createdAt": "2021-05-26T20:59:14.191Z"
@ -84,7 +84,7 @@
"id": "basic-authentication", "id": "basic-authentication",
"title": "Basic Authentication", "title": "Basic Authentication",
"description": "Understand what is basic authentication and how it is implemented", "description": "Understand what is basic authentication and how it is implemented",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-05-19T20:59:14.191Z", "updatedAt": "2021-05-19T20:59:14.191Z",
"createdAt": "2021-05-19T20:59:14.191Z" "createdAt": "2021-05-19T20:59:14.191Z"
@ -93,7 +93,7 @@
"id": "character-encodings", "id": "character-encodings",
"title": "Character Encodings", "title": "Character Encodings",
"description": "Covers the basics of character encodings and explains ASCII vs Unicode", "description": "Covers the basics of character encodings and explains ASCII vs Unicode",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-05-14T20:59:14.191Z", "updatedAt": "2021-05-14T20:59:14.191Z",
"createdAt": "2021-05-14T20:59:14.191Z" "createdAt": "2021-05-14T20:59:14.191Z"
@ -102,7 +102,7 @@
"id": "unfamiliar-codebase", "id": "unfamiliar-codebase",
"title": "Unfamiliar Codebase", "title": "Unfamiliar Codebase",
"description": "Tips on getting getting familiar with an unfamiliar codebase", "description": "Tips on getting getting familiar with an unfamiliar codebase",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-05-04T20:59:14.191Z", "updatedAt": "2021-05-04T20:59:14.191Z",
"createdAt": "2021-05-04T20:59:14.191Z" "createdAt": "2021-05-04T20:59:14.191Z"
@ -111,7 +111,7 @@
"id": "why-build-it-and-they-will-come-wont-work-anymore", "id": "why-build-it-and-they-will-come-wont-work-anymore",
"title": "Build it and they will come?", "title": "Build it and they will come?",
"description": "Why “build it and they will come” alone won’t work anymore", "description": "Why “build it and they will come” alone won’t work anymore",
"isPro": false, "isNew": false,
"authorUsername": "spekulatius", "authorUsername": "spekulatius",
"updatedAt": "2021-05-04T12:59:14.191Z", "updatedAt": "2021-05-04T12:59:14.191Z",
"createdAt": "2021-05-04T12:59:14.191Z" "createdAt": "2021-05-04T12:59:14.191Z"
@ -120,7 +120,7 @@
"id": "dhcp-in-one-picture", "id": "dhcp-in-one-picture",
"title": "DHCP in One Picture", "title": "DHCP in One Picture",
"description": "Here is what happens when a new device joins the network.", "description": "Here is what happens when a new device joins the network.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-04-28T15:48:21.191Z", "updatedAt": "2021-04-28T15:48:21.191Z",
"createdAt": "2021-04-28T15:48:21.191Z" "createdAt": "2021-04-28T15:48:21.191Z"
@ -129,7 +129,7 @@
"id": "ssl-tls-https-ssh", "id": "ssl-tls-https-ssh",
"title": "SSL vs TLS vs SSH", "title": "SSL vs TLS vs SSH",
"description": "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH", "description": "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-04-22T15:48:21.191Z", "updatedAt": "2021-04-22T15:48:21.191Z",
"createdAt": "2021-04-22T15:48:21.191Z" "createdAt": "2021-04-22T15:48:21.191Z"
@ -138,7 +138,7 @@
"id": "asymptotic-notation", "id": "asymptotic-notation",
"title": "Asymptotic Notation", "title": "Asymptotic Notation",
"description": "Learn the basics of measuring the time and space complexity of algorithms", "description": "Learn the basics of measuring the time and space complexity of algorithms",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-04-03T15:48:21.191Z", "updatedAt": "2021-04-03T15:48:21.191Z",
"createdAt": "2021-04-03T15:48:21.191Z" "createdAt": "2021-04-03T15:48:21.191Z"
@ -147,7 +147,7 @@
"id": "big-o-notation", "id": "big-o-notation",
"title": "Big-O Notation", "title": "Big-O Notation",
"description": "Easy to understand explanation of Big-O notation without any fancy terms", "description": "Easy to understand explanation of Big-O notation without any fancy terms",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-03-15T15:48:21.191Z", "updatedAt": "2021-03-15T15:48:21.191Z",
"createdAt": "2021-03-15T15:48:21.191Z" "createdAt": "2021-03-15T15:48:21.191Z"
@ -156,7 +156,7 @@
"id": "random-numbers", "id": "random-numbers",
"title": "Random Numbers: Are they?", "title": "Random Numbers: Are they?",
"description": "Learn how they are generated and why they may not be truly random.", "description": "Learn how they are generated and why they may not be truly random.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-03-14T15:48:21.191Z", "updatedAt": "2021-03-14T15:48:21.191Z",
"createdAt": "2021-03-14T15:48:21.191Z" "createdAt": "2021-03-14T15:48:21.191Z"
@ -165,7 +165,7 @@
"id": "scaling-databases", "id": "scaling-databases",
"title": "Scaling Databases", "title": "Scaling Databases",
"description": "Learn the ups and downs of different database scaling strategies", "description": "Learn the ups and downs of different database scaling strategies",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2021-02-18T15:48:21.191Z", "updatedAt": "2021-02-18T15:48:21.191Z",
"createdAt": "2021-02-18T15:48:21.191Z" "createdAt": "2021-02-18T15:48:21.191Z"
@ -174,7 +174,7 @@
"id": "what-is-internet", "id": "what-is-internet",
"title": "How does the internet work?", "title": "How does the internet work?",
"description": "Learn the basics of internet and everything involved with this short video series", "description": "Learn the basics of internet and everything involved with this short video series",
"isPro": false, "isNew": false,
"authorUsername": "dmytrobol", "authorUsername": "dmytrobol",
"updatedAt": "2021-02-29T15:48:21.191Z", "updatedAt": "2021-02-29T15:48:21.191Z",
"createdAt": "2021-02-29T15:48:21.191Z" "createdAt": "2021-02-29T15:48:21.191Z"
@ -183,7 +183,7 @@
"id": "torrent-client", "id": "torrent-client",
"title": "Building a BitTorrent Client", "title": "Building a BitTorrent Client",
"description": "Learn everything you need to know about BitTorrent by writing a client in Go", "description": "Learn everything you need to know about BitTorrent by writing a client in Go",
"isPro": false, "isNew": false,
"authorUsername": "jesse", "authorUsername": "jesse",
"updatedAt": "2021-01-17T15:48:21.191Z", "updatedAt": "2021-01-17T15:48:21.191Z",
"createdAt": "2021-01-17T15:48:21.191Z", "createdAt": "2021-01-17T15:48:21.191Z",
@ -193,7 +193,7 @@
"id": "levels-of-seniority", "id": "levels-of-seniority",
"title": "Levels of Seniority", "title": "Levels of Seniority",
"description": "How to Step Up as a Junior, Mid Level or a Senior Developer?", "description": "How to Step Up as a Junior, Mid Level or a Senior Developer?",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2020-12-03T12:13:00.860Z", "updatedAt": "2020-12-03T12:13:00.860Z",
"createdAt": "2020-12-03T12:13:00.860Z" "createdAt": "2020-12-03T12:13:00.860Z"
@ -202,7 +202,7 @@
"id": "design-patterns-for-humans", "id": "design-patterns-for-humans",
"title": "Design Patterns for Humans", "title": "Design Patterns for Humans",
"description": "A language agnostic, ultra-simplified explanation to design patterns", "description": "A language agnostic, ultra-simplified explanation to design patterns",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2019-10-09T12:00:00.860Z", "updatedAt": "2019-10-09T12:00:00.860Z",
"createdAt": "2019-01-23T17:00:00.860Z" "createdAt": "2019-01-23T17:00:00.860Z"
@ -211,7 +211,7 @@
"id": "journey-to-http2", "id": "journey-to-http2",
"title": "Journey to HTTP/2", "title": "Journey to HTTP/2",
"description": "The evolution of HTTP. How it all started and where we stand today", "description": "The evolution of HTTP. How it all started and where we stand today",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"createdAt": "2018-12-04T12:00:00.860Z", "createdAt": "2018-12-04T12:00:00.860Z",
"updatedAt": "2018-12-04T12:00:00.860Z", "updatedAt": "2018-12-04T12:00:00.860Z",
@ -221,7 +221,7 @@
"id": "dns-in-one-picture", "id": "dns-in-one-picture",
"title": "DNS in One Picture", "title": "DNS in One Picture",
"description": "Quick illustrative guide on how a website is found on the internet.", "description": "Quick illustrative guide on how a website is found on the internet.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"updatedAt": "2018-12-04T12:00:00.860Z", "updatedAt": "2018-12-04T12:00:00.860Z",
"createdAt": "2018-12-04T17:00:00.860Z" "createdAt": "2018-12-04T17:00:00.860Z"
@ -230,7 +230,7 @@
"id": "http-caching", "id": "http-caching",
"title": "HTTP Caching", "title": "HTTP Caching",
"description": "Everything you need to know about web caching", "description": "Everything you need to know about web caching",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"createdAt": "2018-11-29T17:00:00.860Z", "createdAt": "2018-11-29T17:00:00.860Z",
"updatedAt": "2018-11-29T17:00:00.860Z" "updatedAt": "2018-11-29T17:00:00.860Z"
@ -239,7 +239,7 @@
"id": "history-of-javascript", "id": "history-of-javascript",
"title": "Brief History of JavaScript", "title": "Brief History of JavaScript",
"description": "How JavaScript was introduced and evolved over the years", "description": "How JavaScript was introduced and evolved over the years",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"createdAt": "2017-10-28T17:00:00.860Z", "createdAt": "2017-10-28T17:00:00.860Z",
"updatedAt": "2017-10-28T17:00:00.860Z" "updatedAt": "2017-10-28T17:00:00.860Z"
@ -248,7 +248,7 @@
"id": "proxy-servers", "id": "proxy-servers",
"title": "Proxy Servers", "title": "Proxy Servers",
"description": "How do proxy servers work and what are forward and reverse proxies?", "description": "How do proxy servers work and what are forward and reverse proxies?",
"isPro": false, "isNew": false,
"authorUsername": "ebrahimbharmal007", "authorUsername": "ebrahimbharmal007",
"createdAt": "2017-10-24T17:00:00.860Z", "createdAt": "2017-10-24T17:00:00.860Z",
"updatedAt": "2017-10-24T17:00:00.860Z" "updatedAt": "2017-10-24T17:00:00.860Z"

@ -5,5 +5,3 @@ Nose is another opensource testing framework that extends `unittest` to provide
<ResourceGroupTitle>Free Content</ResourceGroupTitle> <ResourceGroupTitle>Free Content</ResourceGroupTitle>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://nose.readthedocs.io/en/latest/'>Introduction to Nose</BadgeLink> <BadgeLink colorScheme='yellow' badgeText='Read' href='https://nose.readthedocs.io/en/latest/'>Introduction to Nose</BadgeLink>
<BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.lambdatest.com/blog/selenium-python-nose-tutorial/'>Getting Started With Nose In Python</BadgeLink> <BadgeLink colorScheme='yellow' badgeText='Read' href='https://www.lambdatest.com/blog/selenium-python-nose-tutorial/'>Getting Started With Nose In Python</BadgeLink>

@ -3,7 +3,7 @@
"id": "tree-data-structure", "id": "tree-data-structure",
"title": "Tree Data Structure", "title": "Tree Data Structure",
"description": "Learn everything you need to know about the tree data structure", "description": "Learn everything you need to know about the tree data structure",
"isPro": false, "isNew": true,
"youtubeLink": "https://www.youtube.com/watch?v=S2W3SXGPVyU", "youtubeLink": "https://www.youtube.com/watch?v=S2W3SXGPVyU",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -14,7 +14,7 @@
"id": "hash-table-data-structure", "id": "hash-table-data-structure",
"title": "Hash Table Data Structure", "title": "Hash Table Data Structure",
"description": "Learn everything you need to know about the hash table data structure", "description": "Learn everything you need to know about the hash table data structure",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=jalSiaIi8j4", "youtubeLink": "https://www.youtube.com/watch?v=jalSiaIi8j4",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -25,7 +25,7 @@
"id": "queue-data-structure", "id": "queue-data-structure",
"title": "Queue Data Structure", "title": "Queue Data Structure",
"description": "Learn everything you need to know about the queue data structure", "description": "Learn everything you need to know about the queue data structure",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=mDCi1lXd9hc", "youtubeLink": "https://www.youtube.com/watch?v=mDCi1lXd9hc",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "4 minutes", "duration": "4 minutes",
@ -36,7 +36,7 @@
"id": "stack-data-structure", "id": "stack-data-structure",
"title": "Stack Data Structure", "title": "Stack Data Structure",
"description": "Learn everything you need to know about the stack data structure", "description": "Learn everything you need to know about the stack data structure",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=I5lq6sCuABE", "youtubeLink": "https://www.youtube.com/watch?v=I5lq6sCuABE",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "5 minutes", "duration": "5 minutes",
@ -47,7 +47,7 @@
"id": "linked-list-data-structure", "id": "linked-list-data-structure",
"title": "Linked List Data Structure", "title": "Linked List Data Structure",
"description": "Learn everything you need to know about linked list data structure", "description": "Learn everything you need to know about linked list data structure",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=odW9FU8jPRQ", "youtubeLink": "https://www.youtube.com/watch?v=odW9FU8jPRQ",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "11 minutes", "duration": "11 minutes",
@ -58,7 +58,7 @@
"id": "array-structure", "id": "array-structure",
"title": "All about Array Data Structure", "title": "All about Array Data Structure",
"description": "Learn everything you need to know about array data structure", "description": "Learn everything you need to know about array data structure",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=QJNwK2uJyGs", "youtubeLink": "https://www.youtube.com/watch?v=QJNwK2uJyGs",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "10 minutes", "duration": "10 minutes",
@ -69,7 +69,7 @@
"id": "what-are-data-structures", "id": "what-are-data-structures",
"title": "What are Data Structures?", "title": "What are Data Structures?",
"description": "Learn about the different data structures in this illustrated series", "description": "Learn about the different data structures in this illustrated series",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=9rhT3P1MDHk", "youtubeLink": "https://www.youtube.com/watch?v=9rhT3P1MDHk",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "1 minute", "duration": "1 minute",
@ -80,7 +80,7 @@
"id": "what-is-eventual-consistency", "id": "what-is-eventual-consistency",
"title": "What is Eventual Consistency?", "title": "What is Eventual Consistency?",
"description": "Learn about the different consistency models in distributed systems", "description": "Learn about the different consistency models in distributed systems",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=rpqsSkTIdAw", "youtubeLink": "https://www.youtube.com/watch?v=rpqsSkTIdAw",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "5 minutes", "duration": "5 minutes",
@ -91,7 +91,7 @@
"id": "ssh-ssl-tls", "id": "ssh-ssl-tls",
"title": "SSH vs TLS vs SSL", "title": "SSH vs TLS vs SSL",
"description": "Learn the difference between SSH, TLS and SSL", "description": "Learn the difference between SSH, TLS and SSL",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=k3rFFLmQCuY", "youtubeLink": "https://www.youtube.com/watch?v=k3rFFLmQCuY",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "3 minutes", "duration": "3 minutes",
@ -102,7 +102,7 @@
"id": "async-javascript", "id": "async-javascript",
"title": "Asynchronous JavaScript", "title": "Asynchronous JavaScript",
"description": "Learn how to write asynchronous JavaScript using Async/Await", "description": "Learn how to write asynchronous JavaScript using Async/Await",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=VyIK6SV5f7o", "youtubeLink": "https://www.youtube.com/watch?v=VyIK6SV5f7o",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "15 minutes", "duration": "15 minutes",
@ -113,7 +113,7 @@
"id": "random-number-generators", "id": "random-number-generators",
"title": "Random Number Generators", "title": "Random Number Generators",
"description": "How do random number generators work?", "description": "How do random number generators work?",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=nDv3yXdD0rk", "youtubeLink": "https://www.youtube.com/watch?v=nDv3yXdD0rk",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -124,7 +124,7 @@
"id": "big-o-notation", "id": "big-o-notation",
"title": "Big O Notation", "title": "Big O Notation",
"description": "Learn what the Big-O notation is and how to calculate the time complexity of an algorithm.", "description": "Learn what the Big-O notation is and how to calculate the time complexity of an algorithm.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=Z0bH0cMY0E8", "youtubeLink": "https://www.youtube.com/watch?v=Z0bH0cMY0E8",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -135,7 +135,7 @@
"id": "yaml-in-depth", "id": "yaml-in-depth",
"title": "YAML in Depth", "title": "YAML in Depth",
"description": "Everything you need to know about YAML", "description": "Everything you need to know about YAML",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=ImHSpwUlNVc", "youtubeLink": "https://www.youtube.com/watch?v=ImHSpwUlNVc",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -146,7 +146,7 @@
"id": "floating-point-arithmetic", "id": "floating-point-arithmetic",
"title": "Floating Point Arithmetic", "title": "Floating Point Arithmetic",
"description": "Learn how ow the arithmetic operations work on floating-point numbers and why the results might be different from what you may expect.", "description": "Learn how ow the arithmetic operations work on floating-point numbers and why the results might be different from what you may expect.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=RIiq4tTt6rI", "youtubeLink": "https://www.youtube.com/watch?v=RIiq4tTt6rI",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "4 minutes", "duration": "4 minutes",
@ -157,7 +157,7 @@
"id": "what-is-cap-theorem", "id": "what-is-cap-theorem",
"title": "What is CAP Theorem?", "title": "What is CAP Theorem?",
"description": "An illustrated explanation to CAP theorem with examples and proof.", "description": "An illustrated explanation to CAP theorem with examples and proof.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=_RbsFXWRZ10", "youtubeLink": "https://www.youtube.com/watch?v=_RbsFXWRZ10",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
@ -168,7 +168,7 @@
"id": "acid-explained", "id": "acid-explained",
"title": "ACID Explained", "title": "ACID Explained",
"description": "Learn what it means for a database to be ACID compliant with examples.", "description": "Learn what it means for a database to be ACID compliant with examples.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=yaQ5YMWkxq4", "youtubeLink": "https://www.youtube.com/watch?v=yaQ5YMWkxq4",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "5 minutes", "duration": "5 minutes",
@ -179,7 +179,7 @@
"id": "transport-protocols-tcp-vs-udp", "id": "transport-protocols-tcp-vs-udp",
"title": "Transport Protocols: TCP vs UDP", "title": "Transport Protocols: TCP vs UDP",
"description": "Learn about the Transport Layer of the TCP/IP model and different transport protocols.", "description": "Learn about the Transport Layer of the TCP/IP model and different transport protocols.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=37AFBZv4_6Y", "youtubeLink": "https://www.youtube.com/watch?v=37AFBZv4_6Y",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "10 minutes", "duration": "10 minutes",
@ -190,7 +190,7 @@
"id": "tcp-ip-model", "id": "tcp-ip-model",
"title": "TCP/IP Model Explained", "title": "TCP/IP Model Explained",
"description": "Learn what is TCP/IP Model and the different layers involved.", "description": "Learn what is TCP/IP Model and the different layers involved.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"youtubeLink": "https://www.youtube.com/watch?v=F5rni9fr1yE", "youtubeLink": "https://www.youtube.com/watch?v=F5rni9fr1yE",
"duration": "5 minutes", "duration": "5 minutes",
@ -201,7 +201,7 @@
"id": "osi-model", "id": "osi-model",
"title": "OSI Model Explained", "title": "OSI Model Explained",
"description": "Learn what is OSI Model and the different layers involved.", "description": "Learn what is OSI Model and the different layers involved.",
"isPro": false, "isNew": false,
"youtubeLink": "https://www.youtube.com/watch?v=dV8mjZd1OtU", "youtubeLink": "https://www.youtube.com/watch?v=dV8mjZd1OtU",
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "7 minutes", "duration": "7 minutes",
@ -213,7 +213,7 @@
"title": "Freeze and Seal in JavaScript", "title": "Freeze and Seal in JavaScript",
"description": "Learn what is object freeze and seal in JavaScript and how to use them", "description": "Learn what is object freeze and seal in JavaScript and how to use them",
"youtubeLink": "https://www.youtube.com/watch?v=O3uT2l6vgZ8", "youtubeLink": "https://www.youtube.com/watch?v=O3uT2l6vgZ8",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "6 minutes", "duration": "6 minutes",
"updatedAt": "2020-10-16T19:59:14.191Z", "updatedAt": "2020-10-16T19:59:14.191Z",
@ -224,7 +224,7 @@
"title": "All about HTTP Caching", "title": "All about HTTP Caching",
"description": "Learn what is HTTP caching, places for caching and different caching headers.", "description": "Learn what is HTTP caching, places for caching and different caching headers.",
"youtubeLink": "https://www.youtube.com/watch?v=HiBDZgTNpXY", "youtubeLink": "https://www.youtube.com/watch?v=HiBDZgTNpXY",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "13 minutes", "duration": "13 minutes",
"updatedAt": "2020-10-04T19:59:14.191Z", "updatedAt": "2020-10-04T19:59:14.191Z",
@ -235,7 +235,7 @@
"title": "Content Delivery Networks", "title": "Content Delivery Networks",
"description": "Learn what the CDNs are and the difference between push CDN vs pull CDN.", "description": "Learn what the CDNs are and the difference between push CDN vs pull CDN.",
"youtubeLink": "https://www.youtube.com/watch?v=6DXEPcXKQNY", "youtubeLink": "https://www.youtube.com/watch?v=6DXEPcXKQNY",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "4 minutes", "duration": "4 minutes",
"updatedAt": "2020-09-26T19:59:14.191Z", "updatedAt": "2020-09-26T19:59:14.191Z",
@ -246,7 +246,7 @@
"title": "Load Balancers 101", "title": "Load Balancers 101",
"description": "Learn the basics of load balancers, types and different algorithms.", "description": "Learn the basics of load balancers, types and different algorithms.",
"youtubeLink": "https://www.youtube.com/watch?v=galcDRNd5Ow", "youtubeLink": "https://www.youtube.com/watch?v=galcDRNd5Ow",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "9 minutes", "duration": "9 minutes",
"updatedAt": "2020-09-18T19:59:14.191Z", "updatedAt": "2020-09-18T19:59:14.191Z",
@ -257,7 +257,7 @@
"title": "DNS Records", "title": "DNS Records",
"description": "Learn what the DNS is and how a website is found on the internet.", "description": "Learn what the DNS is and how a website is found on the internet.",
"youtubeLink": "https://www.youtube.com/watch?v=7lxgpKh_fRY", "youtubeLink": "https://www.youtube.com/watch?v=7lxgpKh_fRY",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "6 minutes", "duration": "6 minutes",
"updatedAt": "2020-08-31T19:59:14.191Z", "updatedAt": "2020-08-31T19:59:14.191Z",
@ -268,7 +268,7 @@
"title": "DNS and how does it work?", "title": "DNS and how does it work?",
"description": "Learn what the DNS is and how a website is found on the internet.", "description": "Learn what the DNS is and how a website is found on the internet.",
"youtubeLink": "https://www.youtube.com/watch?v=Wj0od2ag5sk", "youtubeLink": "https://www.youtube.com/watch?v=Wj0od2ag5sk",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "5 minutes", "duration": "5 minutes",
"updatedAt": "2020-08-17T19:59:14.191Z", "updatedAt": "2020-08-17T19:59:14.191Z",
@ -279,7 +279,7 @@
"title": "System Design 101", "title": "System Design 101",
"description": "Learn about all the bits and pieces of system design.", "description": "Learn about all the bits and pieces of system design.",
"youtubeLink": "https://www.youtube.com/watch?v=Y-Gl4HEyeUQ", "youtubeLink": "https://www.youtube.com/watch?v=Y-Gl4HEyeUQ",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "7 minutes", "duration": "7 minutes",
"updatedAt": "2020-08-08T19:59:14.191Z", "updatedAt": "2020-08-08T19:59:14.191Z",
@ -290,7 +290,7 @@
"title": "JavaScript Fetch API", "title": "JavaScript Fetch API",
"description": "Learn how to use JavaScript's Fetch API to interact with remote API.", "description": "Learn how to use JavaScript's Fetch API to interact with remote API.",
"youtubeLink": "https://www.youtube.com/watch?v=-ZI0ea5O2oA", "youtubeLink": "https://www.youtube.com/watch?v=-ZI0ea5O2oA",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "3 minutes", "duration": "3 minutes",
"updatedAt": "2020-08-02T19:59:14.191Z", "updatedAt": "2020-08-02T19:59:14.191Z",
@ -301,7 +301,7 @@
"title": "Scaling the Unscalable", "title": "Scaling the Unscalable",
"description": "Learn the basics of System Design and understand how to build a scalable application.", "description": "Learn the basics of System Design and understand how to build a scalable application.",
"youtubeLink": "https://www.youtube.com/watch?v=a2rcgzludDU", "youtubeLink": "https://www.youtube.com/watch?v=a2rcgzludDU",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "10 minutes", "duration": "10 minutes",
"updatedAt": "2020-07-26T19:59:14.191Z", "updatedAt": "2020-07-26T19:59:14.191Z",
@ -312,7 +312,7 @@
"title": "All about Promises in JavaScript", "title": "All about Promises in JavaScript",
"youtubeLink": "https://www.youtube.com/watch?v=BvrkobaCVVE", "youtubeLink": "https://www.youtube.com/watch?v=BvrkobaCVVE",
"description": "Learn how to write asynchronous code in JavaScript using promises.", "description": "Learn how to write asynchronous code in JavaScript using promises.",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "8 minutes", "duration": "8 minutes",
"updatedAt": "2020-07-20T19:59:14.191Z", "updatedAt": "2020-07-20T19:59:14.191Z",
@ -323,7 +323,7 @@
"title": "Automate with GitHub Actions", "title": "Automate with GitHub Actions",
"description": "Learn how to implement CI/CD with GitHub Actions", "description": "Learn how to implement CI/CD with GitHub Actions",
"youtubeLink": "https://www.youtube.com/watch?v=nyKZTKQS_EQ", "youtubeLink": "https://www.youtube.com/watch?v=nyKZTKQS_EQ",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "6 minutes", "duration": "6 minutes",
"updatedAt": "2020-07-13T19:59:14.191Z", "updatedAt": "2020-07-13T19:59:14.191Z",
@ -334,7 +334,7 @@
"title": "What is Dependency Injection?", "title": "What is Dependency Injection?",
"description": "Learn what is dependency injection and how to write better code with the help of it.", "description": "Learn what is dependency injection and how to write better code with the help of it.",
"youtubeLink": "https://www.youtube.com/watch?v=0yc2UANSDiw", "youtubeLink": "https://www.youtube.com/watch?v=0yc2UANSDiw",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "3 minutes", "duration": "3 minutes",
"updatedAt": "2020-07-04T19:59:14.191Z", "updatedAt": "2020-07-04T19:59:14.191Z",
@ -345,7 +345,7 @@
"title": "How to use CSS Variables?", "title": "How to use CSS Variables?",
"description": "Learn how to write scalable CSS using CSS Variables.", "description": "Learn how to write scalable CSS using CSS Variables.",
"youtubeLink": "https://www.youtube.com/watch?v=lgaxU7CRmxU", "youtubeLink": "https://www.youtube.com/watch?v=lgaxU7CRmxU",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "5 minutes", "duration": "5 minutes",
"updatedAt": "2020-07-03T19:59:14.191Z", "updatedAt": "2020-07-03T19:59:14.191Z",
@ -356,7 +356,7 @@
"title": "DOM, Shadow DOM, Virtual DOM", "title": "DOM, Shadow DOM, Virtual DOM",
"description": "Learn what is DOM, Shadow DOM and Virtual DOM and how they work.", "description": "Learn what is DOM, Shadow DOM and Virtual DOM and how they work.",
"youtubeLink": "https://www.youtube.com/watch?v=7Tok22qxPzQ", "youtubeLink": "https://www.youtube.com/watch?v=7Tok22qxPzQ",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "6 minutes", "duration": "6 minutes",
"updatedAt": "2020-07-20T19:59:14.191Z", "updatedAt": "2020-07-20T19:59:14.191Z",
@ -367,7 +367,7 @@
"title": "Practical Introduction to React", "title": "Practical Introduction to React",
"description": "Learn how to create a React Application with practical example.", "description": "Learn how to create a React Application with practical example.",
"youtubeLink": "https://www.youtube.com/watch?v=NyG7YJWJd6s&list=PLkZYeFmDuaN3NDLnBG01-sH2-nwn43mYu", "youtubeLink": "https://www.youtube.com/watch?v=NyG7YJWJd6s&list=PLkZYeFmDuaN3NDLnBG01-sH2-nwn43mYu",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "40 minutes", "duration": "40 minutes",
"updatedAt": "2020-07-09T19:59:14.191Z", "updatedAt": "2020-07-09T19:59:14.191Z",
@ -378,7 +378,7 @@
"title": "Arrays and Objects in JavaScript", "title": "Arrays and Objects in JavaScript",
"description": "Learn how to manipulate arrays and objects in JavaScript.", "description": "Learn how to manipulate arrays and objects in JavaScript.",
"youtubeLink": "https://www.youtube.com/watch?v=n3NKGsM3iEw", "youtubeLink": "https://www.youtube.com/watch?v=n3NKGsM3iEw",
"isPro": false, "isNew": false,
"authorUsername": "kamranahmedse", "authorUsername": "kamranahmedse",
"duration": "12 minutes", "duration": "12 minutes",
"updatedAt": "2020-05-09T19:59:14.191Z", "updatedAt": "2020-05-09T19:59:14.191Z",

@ -6,7 +6,7 @@ export type GuideType = {
id: string; id: string;
title: string; title: string;
description: string; description: string;
isPro: boolean; isNew: boolean;
isDraft: boolean; isDraft: boolean;
createdAt: string; createdAt: string;
updatedAt: string; updatedAt: string;

@ -7,7 +7,7 @@ export type VideoType = {
title: string; title: string;
description: string; description: string;
youtubeLink?: string; youtubeLink?: string;
isPro: boolean; isNew: boolean;
duration: string; duration: string;
createdAt: string; createdAt: string;
updatedAt: string; updatedAt: string;

@ -52,7 +52,7 @@ export default function Guides(props: GuidesProps) {
href={`/guides/${oldGuide.id}`} href={`/guides/${oldGuide.id}`}
key={oldGuide.id} key={oldGuide.id}
title={oldGuide.title} title={oldGuide.title}
badgeText={oldGuide.isPro ? 'PRO' : ''} badgeText={oldGuide.isNew ? 'NEW' : ''}
subtitle={oldGuide.formattedUpdatedAt!} subtitle={oldGuide.formattedUpdatedAt!}
/> />
))} ))}

@ -97,7 +97,7 @@ export default function Home(props: HomeProps) {
target={'_blank'} target={'_blank'}
key={video.id} key={video.id}
href={video.youtubeLink!} href={video.youtubeLink!}
badgeText={video.isPro ? 'PRO' : ''} badgeText={video.isNew ? 'NEW' : ''}
hideSubtitleOnMobile hideSubtitleOnMobile
title={video.title} title={video.title}
subtitle={video.duration} subtitle={video.duration}
@ -132,7 +132,7 @@ export default function Home(props: HomeProps) {
key={guide.id} key={guide.id}
href={`/guides/${guide.id}`} href={`/guides/${guide.id}`}
title={guide.title} title={guide.title}
badgeText={guide.isPro ? 'PRO' : ''} badgeText={guide.isNew ? 'NEW' : ''}
subtitle={guide.formattedUpdatedAt!} subtitle={guide.formattedUpdatedAt!}
/> />
))} ))}

@ -33,9 +33,8 @@ export default function Watch(props: VideosProps) {
title={video.title} title={video.title}
subtitle={video.description} subtitle={video.description}
date={video.formattedUpdatedAt!} date={video.formattedUpdatedAt!}
isNew={counter <= 1}
colorIndex={counter} colorIndex={counter}
isPro={video.isPro} isNew={video.isNew}
/> />
))} ))}
</SimpleGrid> </SimpleGrid>

Loading…
Cancel
Save