diff --git a/public/authors/peter-thaleikis.png b/public/authors/peter-thaleikis.png new file mode 100644 index 000000000..a338ab497 Binary files /dev/null and b/public/authors/peter-thaleikis.png differ diff --git a/src/components/VideoHeader.astro b/src/components/VideoHeader.astro index 3c0cabdef..1d3717414 100644 --- a/src/components/VideoHeader.astro +++ b/src/components/VideoHeader.astro @@ -1,40 +1,38 @@ --- import type { VideoFileType } from '../lib/video'; -import YouTubeAlert from "./YouTubeAlert.astro"; +import YouTubeAlert from './YouTubeAlert.astro'; export interface Props { video: VideoFileType; } const { video } = Astro.props; -const { frontmatter } = video; -const { author } = frontmatter; +const { frontmatter, author } = video; --- -
+
-

+

{frontmatter.title}

-
diff --git a/src/data/authors/ebrahim-bharmal.md b/src/data/authors/ebrahim-bharmal.md new file mode 100644 index 000000000..3763d5972 --- /dev/null +++ b/src/data/authors/ebrahim-bharmal.md @@ -0,0 +1,8 @@ +--- +name: 'Ebrahim Bharmal' +imageUrl: '/authors/ebrahimbharmal007.png' +social: + twitter: 'https://twitter.com/BharmalEbrahim' +--- + +Full-stack developer interested in all things web development. \ No newline at end of file diff --git a/src/data/authors/jesse-li.md b/src/data/authors/jesse-li.md new file mode 100644 index 000000000..4f7049c52 --- /dev/null +++ b/src/data/authors/jesse-li.md @@ -0,0 +1,9 @@ +--- +name: 'Jesse Li' +imageUrl: '/authors/jesse.png' +social: + twitter: 'https://twitter.com/__jesse_li' + github: 'https://github.com/veggiedefender' +--- + +Jesse has made several [interesting open-source projects](https://github.com/veggiedefender) and wrote some interesting [articles on his blog](https://blog.jse.li/) including the one he wrote on roadmap.sh. \ No newline at end of file diff --git a/src/data/authors/peter-thaleikis.md b/src/data/authors/peter-thaleikis.md new file mode 100644 index 000000000..635f41a86 --- /dev/null +++ b/src/data/authors/peter-thaleikis.md @@ -0,0 +1,9 @@ +--- +name: 'Peter Thaleikis' +imageUrl: '/authors/peter-thaleikis.png' +social: + twitter: 'https://twitter.com/spekulatius1984' + website: 'https://peterthaleikis.com/' +--- + +Peter Thaleikis a software engineer and business owner. He has been developing web applications since around 2000. Before he started his own software development company [Bring Your Own Ideas Ltd.](https://bringyourownideas.com/), he has been a Lead Developer for multiple organizations. \ No newline at end of file diff --git a/src/data/guides/proxy-servers.md b/src/data/guides/proxy-servers.md index de53315cf..560245872 100644 --- a/src/data/guides/proxy-servers.md +++ b/src/data/guides/proxy-servers.md @@ -1,10 +1,7 @@ --- title: 'Proxy Servers' description: 'How do proxy servers work and what are forward and reverse proxies?' -author: - name: 'Ebrahim Bharmal' - url: 'https://twitter.com/BharmalEbrahim' - imageUrl: '/authors/ebrahimbharmal007.png' +authorId: 'ebrahim-bharmal' seo: title: 'Proxy Servers - roadmap.sh' description: 'How do proxy servers work and what are forward and reverse proxies?' diff --git a/src/data/guides/torrent-client.md b/src/data/guides/torrent-client.md index 63af12295..536b57cae 100644 --- a/src/data/guides/torrent-client.md +++ b/src/data/guides/torrent-client.md @@ -1,10 +1,7 @@ --- title: 'Building a BitTorrent Client' description: 'Learn everything you need to know about BitTorrent by writing a client in Go' -author: - name: 'Jesse Li' - url: 'https://twitter.com/__jesse_li' - imageUrl: '/authors/jesse.png' +authorId: 'jesse-li' seo: title: 'Building a BitTorrent Client - roadmap.sh' description: 'Learn everything you need to know about BitTorrent by writing a client in Go' diff --git a/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md b/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md index 0d7a730c3..769343c6a 100644 --- a/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md +++ b/src/data/guides/why-build-it-and-they-will-come-wont-work-anymore.md @@ -1,10 +1,7 @@ --- title: 'Build it and they will come?' description: 'Why “build it and they will come” alone won’t work anymore' -author: - name: 'Peter Thaleikis' - url: 'https://twitter.com/spekulatius1984' - imageUrl: '/authors/spekulatius.jpg' +authorId: 'peter-thaleikis' seo: title: 'Build it and they will come? - roadmap.sh' description: 'Why “build it and they will come” alone won’t work anymore' diff --git a/src/data/videos/acid-explained.md b/src/data/videos/acid-explained.md index cf9097b8e..280911d18 100644 --- a/src/data/videos/acid-explained.md +++ b/src/data/videos/acid-explained.md @@ -4,10 +4,7 @@ description: 'Learn what it means for a database to be ACID compliant with examp duration: '5 minutes' isNew: false date: 2021-09-26 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/all-about-http-caching.md b/src/data/videos/all-about-http-caching.md index e749426e2..16a48f554 100644 --- a/src/data/videos/all-about-http-caching.md +++ b/src/data/videos/all-about-http-caching.md @@ -4,10 +4,7 @@ description: 'Learn what is HTTP caching, places for caching and different cachi duration: '13 minutes' isNew: false date: 2020-10-04 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/array-structure.md b/src/data/videos/array-structure.md index 99f473e7b..127a19352 100644 --- a/src/data/videos/array-structure.md +++ b/src/data/videos/array-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about array data structure' duration: '10 minutes' isNew: false date: 2022-01-09 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/arrays-and-objects-in-javascript.md b/src/data/videos/arrays-and-objects-in-javascript.md index f67c620bd..979bb4831 100644 --- a/src/data/videos/arrays-and-objects-in-javascript.md +++ b/src/data/videos/arrays-and-objects-in-javascript.md @@ -4,10 +4,7 @@ description: 'Learn how to manipulate arrays and objects in JavaScript.' duration: '12 minutes' isNew: false date: 2020-05-09 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/async-javascript.md b/src/data/videos/async-javascript.md index 12a95903d..6622b9e22 100644 --- a/src/data/videos/async-javascript.md +++ b/src/data/videos/async-javascript.md @@ -4,10 +4,7 @@ description: 'Learn how to write asynchronous JavaScript using Async/Await' duration: '15 minutes' isNew: false date: 2021-11-14 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/basic-authentication.md b/src/data/videos/basic-authentication.md index 223461fc4..6c6adc45c 100644 --- a/src/data/videos/basic-authentication.md +++ b/src/data/videos/basic-authentication.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about basic authentication' duration: '5 minutes' isNew: false date: 2022-10-01 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/basics-of-authentication.md b/src/data/videos/basics-of-authentication.md index fd10bfc54..28e029f42 100644 --- a/src/data/videos/basics-of-authentication.md +++ b/src/data/videos/basics-of-authentication.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about authentication with this A duration: '5 minutes' isNew: false date: 2022-09-21 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/big-o-notation.md b/src/data/videos/big-o-notation.md index 60b2b1e0f..8509e7bdc 100644 --- a/src/data/videos/big-o-notation.md +++ b/src/data/videos/big-o-notation.md @@ -4,10 +4,7 @@ description: 'Learn what the Big-O notation is and how to calculate the time com duration: '8 minutes' isNew: false date: 2021-10-25 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/content-delivery-networks.md b/src/data/videos/content-delivery-networks.md index 6a47235e8..505e853ca 100644 --- a/src/data/videos/content-delivery-networks.md +++ b/src/data/videos/content-delivery-networks.md @@ -4,10 +4,7 @@ description: 'Learn what the CDNs are and the difference between push CDN vs pul duration: '4 minutes' isNew: false date: 2020-09-26 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/dns-explained.md b/src/data/videos/dns-explained.md index b3efdf901..6ad370ed0 100644 --- a/src/data/videos/dns-explained.md +++ b/src/data/videos/dns-explained.md @@ -4,10 +4,7 @@ description: 'Learn what the DNS is and how a website is found on the internet.' duration: '5 minutes' isNew: false date: 2020-08-17 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/dns-records.md b/src/data/videos/dns-records.md index 9f8aeaea3..3aa4cb4a9 100644 --- a/src/data/videos/dns-records.md +++ b/src/data/videos/dns-records.md @@ -4,10 +4,7 @@ description: 'Learn what the DNS is and how a website is found on the internet.' duration: '6 minutes' isNew: false date: 2020-08-31 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/floating-point-arithmetic.md b/src/data/videos/floating-point-arithmetic.md index 2aab972f1..d5e3601c4 100644 --- a/src/data/videos/floating-point-arithmetic.md +++ b/src/data/videos/floating-point-arithmetic.md @@ -4,10 +4,7 @@ description: 'Learn how ow the arithmetic operations work on floating-point numb duration: '4 minutes' isNew: false date: 2021-10-10 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/freeze-and-seal-objects-in-javascript.md b/src/data/videos/freeze-and-seal-objects-in-javascript.md index 397064de3..81d100cfe 100644 --- a/src/data/videos/freeze-and-seal-objects-in-javascript.md +++ b/src/data/videos/freeze-and-seal-objects-in-javascript.md @@ -4,10 +4,7 @@ description: 'Learn what is object freeze and seal in JavaScript and how to use duration: '6 minutes' isNew: false date: 2020-10-16 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/graph-data-structure.md b/src/data/videos/graph-data-structure.md index 571b235c8..71cd08360 100644 --- a/src/data/videos/graph-data-structure.md +++ b/src/data/videos/graph-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the graph data structure' duration: '13 minutes' isNew: false date: 2022-09-08 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/hash-table-data-structure.md b/src/data/videos/hash-table-data-structure.md index 3b8547a43..6d590206c 100644 --- a/src/data/videos/hash-table-data-structure.md +++ b/src/data/videos/hash-table-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the hash table data struct duration: '8 minutes' isNew: false date: 2022-02-21 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/heap-data-structure.md b/src/data/videos/heap-data-structure.md index e78066ad7..67467adba 100644 --- a/src/data/videos/heap-data-structure.md +++ b/src/data/videos/heap-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the heap data structure' duration: '11 minutes' isNew: false date: 2022-08-24 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/how-to-use-css-variables.md b/src/data/videos/how-to-use-css-variables.md index e45ae8ef4..897c1ef0a 100644 --- a/src/data/videos/how-to-use-css-variables.md +++ b/src/data/videos/how-to-use-css-variables.md @@ -4,10 +4,7 @@ description: 'Learn how to write scalable CSS using CSS Variables.' duration: '5 minutes' isNew: false date: 2020-07-03 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/how-to-use-github-actions.md b/src/data/videos/how-to-use-github-actions.md index aac637de6..96ff1c68a 100644 --- a/src/data/videos/how-to-use-github-actions.md +++ b/src/data/videos/how-to-use-github-actions.md @@ -4,10 +4,7 @@ description: 'Learn how to implement CI/CD with GitHub Actions' duration: '6 minutes' isNew: false date: 2020-07-13 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/javascript-fetch-api.md b/src/data/videos/javascript-fetch-api.md index 92a548e80..1fdc57398 100644 --- a/src/data/videos/javascript-fetch-api.md +++ b/src/data/videos/javascript-fetch-api.md @@ -4,10 +4,7 @@ description: "Learn how to use JavaScript's Fetch API to interact with remote AP duration: '3 minutes' isNew: false date: 2020-08-02 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/linked-list-data-structure.md b/src/data/videos/linked-list-data-structure.md index a6284ff62..86b282c3d 100644 --- a/src/data/videos/linked-list-data-structure.md +++ b/src/data/videos/linked-list-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about linked list data structure duration: '11 minutes' isNew: false date: 2022-01-31 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/load-balancers-101.md b/src/data/videos/load-balancers-101.md index 171064787..d9a54b6da 100644 --- a/src/data/videos/load-balancers-101.md +++ b/src/data/videos/load-balancers-101.md @@ -4,10 +4,7 @@ description: 'Learn the basics of load balancers, types and different algorithms duration: '9 minutes' isNew: false date: 2020-09-18 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/osi-model.md b/src/data/videos/osi-model.md index a2fce9cb6..7ae8a3b85 100644 --- a/src/data/videos/osi-model.md +++ b/src/data/videos/osi-model.md @@ -4,10 +4,7 @@ description: 'Learn what is OSI Model and the different layers involved.' duration: '7 minutes' isNew: false date: 2020-10-24 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/practical-intro-to-react.md b/src/data/videos/practical-intro-to-react.md index 6c61c3485..d84b194dd 100644 --- a/src/data/videos/practical-intro-to-react.md +++ b/src/data/videos/practical-intro-to-react.md @@ -4,10 +4,7 @@ description: 'Learn how to create a React Application with practical example.' duration: '40 minutes' isNew: false date: 2020-07-09 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/promises-in-javascript.md b/src/data/videos/promises-in-javascript.md index 2a2bcca18..9b64540c6 100644 --- a/src/data/videos/promises-in-javascript.md +++ b/src/data/videos/promises-in-javascript.md @@ -4,10 +4,7 @@ description: 'Learn how to write asynchronous code in JavaScript using promises. duration: '8 minutes' isNew: false date: 2020-07-20 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/queue-data-structure.md b/src/data/videos/queue-data-structure.md index 7d7460aa2..0ad33608a 100644 --- a/src/data/videos/queue-data-structure.md +++ b/src/data/videos/queue-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the queue data structure' duration: '4 minutes' isNew: false date: 2022-02-14 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/random-number-generators.md b/src/data/videos/random-number-generators.md index e680cf50f..cce5d9f99 100644 --- a/src/data/videos/random-number-generators.md +++ b/src/data/videos/random-number-generators.md @@ -4,10 +4,7 @@ description: 'How do random number generators work?' duration: '8 minutes' isNew: false date: 2021-11-03 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/scaling-the-unscalable.md b/src/data/videos/scaling-the-unscalable.md index 31705439b..8fff50164 100644 --- a/src/data/videos/scaling-the-unscalable.md +++ b/src/data/videos/scaling-the-unscalable.md @@ -4,10 +4,7 @@ description: 'Learn the basics of System Design and understand how to build a sc duration: '10 minutes' isNew: false date: 2020-07-26 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/session-based-authentication.md b/src/data/videos/session-based-authentication.md index 12838e055..318b0a2f9 100644 --- a/src/data/videos/session-based-authentication.md +++ b/src/data/videos/session-based-authentication.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about session authentication' duration: '2 minutes' isNew: false date: 2022-11-02 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/ssh-ssl-tls.md b/src/data/videos/ssh-ssl-tls.md index 9968a953c..12af0ffbc 100644 --- a/src/data/videos/ssh-ssl-tls.md +++ b/src/data/videos/ssh-ssl-tls.md @@ -4,10 +4,7 @@ description: 'Learn the difference between SSH, TLS and SSL' duration: '3 minutes' isNew: false date: 2021-11-25 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/stack-data-structure.md b/src/data/videos/stack-data-structure.md index 5b07d9483..c0114692f 100644 --- a/src/data/videos/stack-data-structure.md +++ b/src/data/videos/stack-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the stack data structure' duration: '5 minutes' isNew: false date: 2022-02-07 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/system-design-101.md b/src/data/videos/system-design-101.md index 34483b9ac..90a1bf317 100644 --- a/src/data/videos/system-design-101.md +++ b/src/data/videos/system-design-101.md @@ -4,10 +4,7 @@ description: 'Learn about all the bits and pieces of system design.' duration: '7 minutes' isNew: false date: 2020-08-08 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/tcp-ip-model.md b/src/data/videos/tcp-ip-model.md index 08dd9a210..341fde8b1 100644 --- a/src/data/videos/tcp-ip-model.md +++ b/src/data/videos/tcp-ip-model.md @@ -4,10 +4,7 @@ description: 'Learn what is TCP/IP Model and the different layers involved.' duration: '5 minutes' isNew: false date: 2020-11-06 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/transport-protocols-tcp-vs-udp.md b/src/data/videos/transport-protocols-tcp-vs-udp.md index 928e408b1..53c6ea6e2 100644 --- a/src/data/videos/transport-protocols-tcp-vs-udp.md +++ b/src/data/videos/transport-protocols-tcp-vs-udp.md @@ -4,10 +4,7 @@ description: 'Learn about the Transport Layer of the TCP/IP model and different duration: '10 minutes' isNew: false date: 2020-11-21 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/tree-data-structure.md b/src/data/videos/tree-data-structure.md index 93e39d340..01ed0018e 100644 --- a/src/data/videos/tree-data-structure.md +++ b/src/data/videos/tree-data-structure.md @@ -4,10 +4,7 @@ description: 'Learn everything you need to know about the tree data structure' duration: '8 minutes' isNew: false date: 2022-08-11 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/what-are-data-structures.md b/src/data/videos/what-are-data-structures.md index 10b68816f..54bdffd0b 100644 --- a/src/data/videos/what-are-data-structures.md +++ b/src/data/videos/what-are-data-structures.md @@ -4,10 +4,7 @@ description: 'Learn about the different data structures in this illustrated seri duration: '1 minute' isNew: false date: 2021-12-12 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/what-is-cap-theorem.md b/src/data/videos/what-is-cap-theorem.md index da9966cf0..84693bb42 100644 --- a/src/data/videos/what-is-cap-theorem.md +++ b/src/data/videos/what-is-cap-theorem.md @@ -4,10 +4,7 @@ description: 'An illustrated explanation to CAP theorem with examples and proof. duration: '8 minutes' isNew: false date: 2021-10-05 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/what-is-dependency-injection.md b/src/data/videos/what-is-dependency-injection.md index d5c0a764a..2eb60772e 100644 --- a/src/data/videos/what-is-dependency-injection.md +++ b/src/data/videos/what-is-dependency-injection.md @@ -4,10 +4,7 @@ description: 'Learn what is dependency injection and how to write better code wi duration: '3 minutes' isNew: false date: 2020-07-04 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md b/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md index b669eca20..6aade4a57 100644 --- a/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md +++ b/src/data/videos/what-is-dom-shadow-dom-virtual-dom.md @@ -4,10 +4,7 @@ description: 'Learn what is DOM, Shadow DOM and Virtual DOM and how they work.' duration: '6 minutes' isNew: false date: 2020-07-20 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/what-is-eventual-consistency.md b/src/data/videos/what-is-eventual-consistency.md index 6cb9df11e..78ef37a77 100644 --- a/src/data/videos/what-is-eventual-consistency.md +++ b/src/data/videos/what-is-eventual-consistency.md @@ -4,10 +4,7 @@ description: 'Learn about the different consistency models in distributed system duration: '5 minutes' isNew: false date: 2021-11-30 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/data/videos/yaml-in-depth.md b/src/data/videos/yaml-in-depth.md index 9967ffde6..6fc6e4a54 100644 --- a/src/data/videos/yaml-in-depth.md +++ b/src/data/videos/yaml-in-depth.md @@ -4,10 +4,7 @@ description: 'Everything you need to know about YAML' duration: '8 minutes' isNew: false date: 2021-10-18 -author: - name: 'Kamran Ahmed' - url: 'https://twitter.com/kamrify' - imageUrl: '/authors/kamranahmedse.jpeg' +authorId: 'kamran' sitemap: priority: 0.7 changefreq: 'weekly' diff --git a/src/lib/video.ts b/src/lib/video.ts index d0eeb9ec6..09629cf21 100644 --- a/src/lib/video.ts +++ b/src/lib/video.ts @@ -1,14 +1,13 @@ import type { MarkdownFileType } from './file'; -import type {AuthorFileType} from "./author.ts"; +import type { AuthorFileType } from './author.ts'; +import { getAllAuthors } from './author.ts'; +import type {GuideFileType} from "./guide.ts"; +import {getAllGuides} from "./guide.ts"; export interface VideoFrontmatter { title: string; description: string; - author: { - name: string; - url: string; - imageUrl: string; - }; + authorId: string; seo: { title: string; description: string; @@ -40,6 +39,14 @@ function videoPathToId(filePath: string): string { return fileName.replace('.md', ''); } +export async function getVideosByAuthor( + authorId: string, +): Promise { + const allVideos = await getAllVideos(); + + return allVideos.filter((video) => video.author?.id === authorId); +} + /** * Gets all the videos sorted by the publishing date * @returns Promisifed video files @@ -49,10 +56,15 @@ export async function getAllVideos(): Promise { eager: true, }); + const allAuthors = await getAllAuthors(); + const videoFiles = Object.values(videos); const enrichedVideos = videoFiles.map((videoFile) => ({ ...videoFile, id: videoPathToId(videoFile.file), + author: allAuthors.find( + (author) => author.id === videoFile.frontmatter.authorId, + )!, })); return enrichedVideos.sort( diff --git a/src/pages/authors/[authorId].astro b/src/pages/authors/[authorId].astro index 61097093a..c3d9c349e 100644 --- a/src/pages/authors/[authorId].astro +++ b/src/pages/authors/[authorId].astro @@ -2,9 +2,10 @@ import BaseLayout from '../../layouts/BaseLayout.astro'; import AstroIcon from '../../components/AstroIcon.astro'; import { getGuidesByAuthor } from '../../lib/guide'; -import { getAllVideos } from '../../lib/video'; +import {getAllVideos, getVideosByAuthor} from '../../lib/video'; import GuideListItem from '../../components/GuideListItem.astro'; import { getAuthorById, getAuthorIds } from '../../lib/author'; +import VideoListItem from "../../components/VideoListItem.astro"; interface Params extends Record {} @@ -18,10 +19,13 @@ export async function getStaticPaths() { const { authorId } = Astro.params; +console.log(authorId); + const author = await getAuthorById(authorId); +console.log(author); const guides = await getGuidesByAuthor(authorId); -const videos = await getAllVideos(); +const videos = await getVideosByAuthor(authorId); ---
-
+

{author.frontmatter.name}

{guides.map((guide) => )} + {videos.map((video) => )}