[{"data":1,"prerenderedAt":430},["ShallowReactive",2],{"footer-primary":3,"footer-secondary":93,"footer-description":119,"digging-the-rabbit-hole-production":121,"digging-the-rabbit-hole-production-next":163,"sales-reps":178},{"items":4},[5,29,49,69],{"id":6,"title":7,"url":8,"page":8,"children":9},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",null,[10,15,20,25],{"id":11,"title":12,"url":8,"page":13},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":14},"/solutions/headless-cms",{"id":16,"title":17,"url":8,"page":18},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":19},"/solutions/backend-as-a-service",{"id":21,"title":22,"url":8,"page":23},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":24},"/solutions/product-information-management",{"id":26,"title":27,"url":28,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":30,"title":31,"url":8,"page":8,"children":32},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[33,37,41,45],{"id":34,"title":35,"url":36,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":38,"title":39,"url":40,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":42,"title":43,"url":44,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":46,"title":47,"url":48,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":50,"title":51,"url":8,"page":8,"children":52},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[53,57,61,65],{"id":54,"title":55,"url":56,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":58,"title":59,"url":60,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":62,"title":63,"url":64,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":66,"title":67,"url":68,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":70,"title":71,"url":8,"page":8,"children":72},"49141403-4f20-44ac-8453-25ace1265812","Organization",[73,78,84,88],{"id":74,"title":75,"url":76,"page":77},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":76},{"id":79,"title":80,"url":81,"page":82},"b84bf525-5471-4b14-a93c-225f6c386005","Careers","#",{"permalink":83},"/careers",{"id":85,"title":86,"url":87,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":89,"title":90,"url":8,"page":91},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":92},"/contact",{"items":94},[95,101,107,113],{"id":96,"title":97,"url":8,"page":98,"children":100},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":99},"/cloud-policies",[],{"id":102,"title":103,"url":81,"page":104,"children":106},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":105},"/bsl",[],{"id":108,"title":109,"url":81,"page":110,"children":112},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":111},"/terms",[],{"id":114,"title":115,"url":81,"page":116,"children":118},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":117},"/privacy",[],{"description":120},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"id":122,"slug":123,"vimeo_id":124,"description":125,"tile":126,"length":127,"resources":8,"people":128,"episode_number":132,"published":133,"title":134,"video_transcript_html":135,"video_transcript_text":136,"content":8,"status":137,"episode_people":138,"recommendations":149,"season":150,"seo":8},"8fc804e1-786d-4a14-bddd-74d2785b20a6","production","918868401","In this episode, Kevin discusses the efficient processes created to enable show creation at scale. ","4bce4584-b5b0-4002-bbee-c3836c8b716f",7,[129],{"name":130,"url":131},"Kevin Lewis","https://directus.io/team/kevin-lewis",3,"2024-03-04","The Production","\u003Cp>Speaker 0: Hello, and welcome back to Digging the Rabbit Hole. And in this episode, we're going to talk a bit about how a show goes from a pitch through to release. Now in the last episode, we discussed that very first part. We discussed what a pitch looks like and why we may choose to commission a show over others. But there is obviously a really big gap between agreeing to do something and getting it out the door.\u003C/p>\u003Cp>Let's start by talking a bit about some of our team's strengths, because I think that helps contextualize the process we've created as well as some of our shortcomings. So, our strengths. Right. Really good at making video, actually. Really good at taking something from idea, creating the graphics required, actually filming, editing, and finally, publishing content.\u003C/p>\u003Cp>We have a few people in the organization who are good at this from various teams. So the ability to create video was never a challenge. And in fact, I would go as far as to say, many of our team have an affinity towards creating video content, but there are some challenges. Firstly, all of those steps that I just described take a lot of time. And in fact, time is the challenge with this project.\u003C/p>\u003Cp>We don't have a dedicated person running directors TV, and indeed, it would always require a cross team effort, right, to make sure shows have, you know, a few different faces involved in them. Being a 35 person company across the board from core engineering through to marketing sales, you know, general administrative over in developer relations, all of us, 35 people, is that we move really, really quickly. But by moving quickly, projects that you have to keep returning to are often the projects, that get left behind, and indeed, this has happened. There are video series on our YouTube channel, where there were 2 or 3 episodes, and then we simply run out of time. There was always something more important, more pressing, you know, more impactful to do, and those series were just left, unloved.\u003C/p>\u003Cp>So that is a little bit of context as to our team. Really good at making video, but it takes a lot of time and time is the enemy. So what did we do? We created a process which basically involves batching work. When an idea is pitched, it is pitched with a number of episodes that will be produced or that are being pitched as part of that series.\u003C/p>\u003Cp>Sometimes that's a negotiation, you know, sometimes we pair it back, Sometimes we will increase it and so on, but we have a clear idea what is going to be created and how many episodes will be released. We have a big content calendar. It's basically populated now, like, 4 or 5 months ahead of time, which is lovely. So, when an idea is accepted, it also comes with a release date, and that release date will be months away realistically for most shows. From there, we work back.\u003C/p>\u003Cp>A week before that is the editing deadline, and then generally, like, 2 to 4 weeks before that, depending on the series and the complexity of the edit, is the deadline for all the footage. Instead and this is the key. Instead All of the recording happens together. Then we have an amazing editor, Nat. He was gonna join me on this episode, but he's a little unwell.\u003C/p>\u003Cp>And that will basically then get the whole package. 100 acts in a 100 hours an episode a series is 10 episodes. He gets all 10 episodes raw recording at once. Now the team don't need to care about the editing so much. We just have to care about producing the raw footage.\u003C/p>\u003Cp>We hand it off, and that creates 1 episode if it's a new show for a look and feel so we can approve it, make sure it feels good, tweak it, and so on, and then he can go and batch edit them all. Batch upload them all, batch prepare them all inside of the director's instance that runs director's TV. More about that in the next episode. And then each day, we simply release, distribute, and share. And that allows us to pour our full energy into making sure that people are actually watching them, that we're actually doing episodes justice by sharing them far and wide in communities that will find that content interesting.\u003C/p>\u003Cp>And that's really it. That is the process. So stuff goes from a pitch to being approved, then the planning portion comes in. Some shows, you know, I I have to go out and find guests, for example, then there's a filming part. Once the filming part has concluded, there is an editing part, and then we go ahead load it all into the director's project that runs director's TV, and we go ahead and release it.\u003C/p>\u003Cp>And so, yeah, I wanted to talk just very briefly about this process we've created because it is what enables this absolute powerhouse of a content production machine is this process. Now don't get me wrong. That isn't without its challenges to actually be able to block out time to using a 100 apps and a 100 hours as an example to do the minimal preparation for each episode and then record it. I mean, you're talking now half a week completely carved out or, you know, half a day every day for a week or however that may may be organized. But you are we're demanding more time of our team, but just in a batch.\u003C/p>\u003Cp>And then they know I don't have to worry about finding the time for this series, on an ongoing basis because that's then taken care of, and centralized as well. So that's a little bit, about how it works. We also have a design team who managed to create all of the lovely graphics for each of our shows. We're giving each show its own unique identity look and feel while making sure they look good as a collective when presented with each other. And I think that's kind of it.\u003C/p>\u003Cp>Yeah. I just wanted to give a little bit of a rundown about this process we've created, about how we kind of batch the work. And the other fantastic thing about batching work is it allows us to do what we have done today on the release day of this episode, which is, release into you know, know what's coming, an entire slate of shows, and the confidence that we will be able to deliver that slate because all the recordings done, Most of the editing is done, and then it's all just, you know, batch kind of admin work. So this was an episode all about the process. I hope you have enjoyed it, and we'll see you in the next episode of digging the rabbit hole.\u003C/p>\u003Cp>Bye for now.\u003C/p>","Hello, and welcome back to Digging the Rabbit Hole. And in this episode, we're going to talk a bit about how a show goes from a pitch through to release. Now in the last episode, we discussed that very first part. We discussed what a pitch looks like and why we may choose to commission a show over others. But there is obviously a really big gap between agreeing to do something and getting it out the door. Let's start by talking a bit about some of our team's strengths, because I think that helps contextualize the process we've created as well as some of our shortcomings. So, our strengths. Right. Really good at making video, actually. Really good at taking something from idea, creating the graphics required, actually filming, editing, and finally, publishing content. We have a few people in the organization who are good at this from various teams. So the ability to create video was never a challenge. And in fact, I would go as far as to say, many of our team have an affinity towards creating video content, but there are some challenges. Firstly, all of those steps that I just described take a lot of time. And in fact, time is the challenge with this project. We don't have a dedicated person running directors TV, and indeed, it would always require a cross team effort, right, to make sure shows have, you know, a few different faces involved in them. Being a 35 person company across the board from core engineering through to marketing sales, you know, general administrative over in developer relations, all of us, 35 people, is that we move really, really quickly. But by moving quickly, projects that you have to keep returning to are often the projects, that get left behind, and indeed, this has happened. There are video series on our YouTube channel, where there were 2 or 3 episodes, and then we simply run out of time. There was always something more important, more pressing, you know, more impactful to do, and those series were just left, unloved. So that is a little bit of context as to our team. Really good at making video, but it takes a lot of time and time is the enemy. So what did we do? We created a process which basically involves batching work. When an idea is pitched, it is pitched with a number of episodes that will be produced or that are being pitched as part of that series. Sometimes that's a negotiation, you know, sometimes we pair it back, Sometimes we will increase it and so on, but we have a clear idea what is going to be created and how many episodes will be released. We have a big content calendar. It's basically populated now, like, 4 or 5 months ahead of time, which is lovely. So, when an idea is accepted, it also comes with a release date, and that release date will be months away realistically for most shows. From there, we work back. A week before that is the editing deadline, and then generally, like, 2 to 4 weeks before that, depending on the series and the complexity of the edit, is the deadline for all the footage. Instead and this is the key. Instead All of the recording happens together. Then we have an amazing editor, Nat. He was gonna join me on this episode, but he's a little unwell. And that will basically then get the whole package. 100 acts in a 100 hours an episode a series is 10 episodes. He gets all 10 episodes raw recording at once. Now the team don't need to care about the editing so much. We just have to care about producing the raw footage. We hand it off, and that creates 1 episode if it's a new show for a look and feel so we can approve it, make sure it feels good, tweak it, and so on, and then he can go and batch edit them all. Batch upload them all, batch prepare them all inside of the director's instance that runs director's TV. More about that in the next episode. And then each day, we simply release, distribute, and share. And that allows us to pour our full energy into making sure that people are actually watching them, that we're actually doing episodes justice by sharing them far and wide in communities that will find that content interesting. And that's really it. That is the process. So stuff goes from a pitch to being approved, then the planning portion comes in. Some shows, you know, I I have to go out and find guests, for example, then there's a filming part. Once the filming part has concluded, there is an editing part, and then we go ahead load it all into the director's project that runs director's TV, and we go ahead and release it. And so, yeah, I wanted to talk just very briefly about this process we've created because it is what enables this absolute powerhouse of a content production machine is this process. Now don't get me wrong. That isn't without its challenges to actually be able to block out time to using a 100 apps and a 100 hours as an example to do the minimal preparation for each episode and then record it. I mean, you're talking now half a week completely carved out or, you know, half a day every day for a week or however that may may be organized. But you are we're demanding more time of our team, but just in a batch. And then they know I don't have to worry about finding the time for this series, on an ongoing basis because that's then taken care of, and centralized as well. So that's a little bit, about how it works. We also have a design team who managed to create all of the lovely graphics for each of our shows. We're giving each show its own unique identity look and feel while making sure they look good as a collective when presented with each other. And I think that's kind of it. Yeah. I just wanted to give a little bit of a rundown about this process we've created, about how we kind of batch the work. And the other fantastic thing about batching work is it allows us to do what we have done today on the release day of this episode, which is, release into you know, know what's coming, an entire slate of shows, and the confidence that we will be able to deliver that slate because all the recordings done, Most of the editing is done, and then it's all just, you know, batch kind of admin work. So this was an episode all about the process. I hope you have enjoyed it, and we'll see you in the next episode of digging the rabbit hole. Bye for now.","published",[139],{"people_id":140},{"id":141,"first_name":142,"last_name":143,"avatar":144,"bio":145,"links":146},"82b3f7e5-637b-4890-93b2-378b497d5dc6","Kevin","Lewis","a662f91b-1ee9-4277-8c9d-3ac1878e44ad","Director of Developer Experience at Directus",[147],{"url":131,"service":148},"website",[],{"id":151,"number":152,"year":153,"episodes":154,"show":160},"5a656532-6f30-42e9-9a11-24b0b9041642",1,"2024",[155,156,122,157,158,159],"30a30326-0bd0-4a40-b680-8c652f58a746","4aa1ba58-7820-40a4-9196-5e186be53f3a","3262bf03-ab28-45e1-a824-c0418b29927a","8fdf7563-f9e4-4321-ae64-d009b0fddfaf","1db8f535-b44b-4b5d-9937-a922ae7560db",{"title":161,"tile":162},"Digging the Rabbit Hole","19c63cdb-35e3-457f-97fd-653500c9eff7",{"id":157,"slug":164,"season":151,"vimeo_id":165,"description":166,"tile":167,"length":168,"resources":8,"people":169,"episode_number":171,"published":133,"title":172,"video_transcript_html":173,"video_transcript_text":174,"content":8,"seo":8,"status":137,"episode_people":175,"recommendations":177},"platform","917617587","In this episode, Kevin walks through the code and backend of Directus TV.","d4b0a23c-8836-4bd4-89d8-ca82ea1654d5",10,[170],{"name":130,"url":131},4,"The Platform","\u003Cp>Speaker 0: Hello, and welcome back to Digging the Rabbit Hole. In this episode, I'm gonna run through the codebase and the Director's project, which powers Directus TV to give you a little bit of an insight in how we use Directus at Directus to deliver Directus TV. Now before we jump into code and the Directus project, I basically wanna take some time to show you what I would call the 3 main pages of Directus TV. Firstly, we have this home page here. In the home page, we have this big global featured item here with a couple of buttons, and we also have these category sliders.\u003C/p>\u003Cp>Categories contain shows, and inside of shows, we have this show page. This is the 2nd page. This is an individual show listing. So here in trace talks, we have some information about the show. We have a button to play the latest episode, and then we have a listing of episodes.\u003C/p>\u003Cp>You'll also notice there are seasons. So seasons exist in the data model. A good one to demonstrate that is actually around the world here because we have 2 seasons. So here we have season 1, 2023, and we have season 2, 2024. Now the 3rd page, if we step into one of these, is the actual episode page.\u003C/p>\u003Cp>So in here, we have a video embed, which we'll talk about in a moment. We have a back to show button, a next episode button, which we'll talk about also, metadata about both the show and the episode, and a list of people, and a list of resources, and they both conditionally are shown or hidden depending on where the data exists there. So that's a little bit of a rundown of these pages. We have a home page. We have a show page.\u003C/p>\u003Cp>We have an episode page. Now let's look at the directors data model that powers this, and it's very, very similar to the pages. Firstly, we have shows. Each one of these is a different show, director scene scapes, quick connect, I made this, 100 apps in a 100 hours, and so on. Individual shows have a slug.\u003C/p>\u003Cp>This dictates the URL for that show. The title, a little one liner, which is what is actually shown here on the home page so people know what to expect from this show. A description, and then these three graphics. So we have a tile, a logo, and a cover. To show you how they relate here, if I go into a 100 apps in a 100 hours, we have the logo, we have the background here, and then we have the tile, which is, this view here.\u003C/p>\u003Cp>That's the tile. So we have the tile, the logo, and the cover. Next, we have seasons. Seasons are almost like a junction collection really. Every show has seasons.\u003C/p>\u003Cp>A season is just a show, a number, and a year. And then we have episodes. I've pre filtered this down here just to make sure that we're not getting a huge, huge list of shows, but just a manageable number here. So each individual episode, these are all the episodes of season 1 of Quick Connect, have a published date. This is useful for both displaying in the website, but also for RSS feeds.\u003C/p>\u003Cp>The status, because, of course, we upload all of these in bulk, and then we just change the status and the publish date and re rebuild the site on the day of publishing. Season and episode number, the slug for the URL and the title, the Vimeo ID, which again, we'll talk about in just a moment, a tile description, people, and resources. The tile is, if I go into quick connect, is this this here, each individual tile. And having tiles is useful, of course, for generating social tags, social meta tags. So that's a little rundown.\u003C/p>\u003Cp>Now before we continue, let's quickly talk about Vimeo. We use Vimeo to host our video for a number of reasons, primarily because they have a really good player that works cross platform and also will adapt to the needs of the viewer. If you have less, you know, less bandwidth, it will drop the quality of the video that you get delivered. And to be frank, I just didn't wanna build that. So it's good to lean on other platforms as appropriate.\u003C/p>\u003Cp>Finally, we have categories. These are for the homepage. So these are those sliders of categories. It just has a status, a title, and shows that can be sorted, and these can also be sorted which change the order of the categories and the order of the shows within a category. That's a little bit of a rundown of the director's project.\u003C/p>\u003Cp>Let's do a little rundown of the code now, and hopefully, it should all look reasonably, you know, reasonably sensible given the concepts that we've spoken about so far. So here we have the home page. In a home page, we have a hero. That's that top kind of graphic unit with the featured item, And this grabs data from the global's collection in director, so I didn't show that. Here is the global's collection, and there is a featured item there.\u003C/p>\u003Cp>So that populates the TV hero. And we also have the TV category, which lists all of the categories. Now this is a custom component here inside of TV. We have custom category, which are the sliders. We have the, the show, which are the individual tiles.\u003C/p>\u003Cp>We have the navigation, which goes in the hero. That's a separate item because on the on the actual episode page, it's not nested within the, within the hero, but on the other pages that is nested in the hero. So it's a it's a separate element. That's the hero. Then we have the individual episodes.\u003C/p>\u003Cp>This is for the show listing page with the horizontal I'll show you. With these, that is a TV show here. We use that in a few places. And so they kind of cascade. So on the home page here, we have the categories.\u003C/p>\u003Cp>The categories render the shows. Then over in an individual show page here, we have the hero unit once again. And then we have all of the oh, I'm I'm in the wrong section here. This is where I wanna be. We have the hero, and then we have, each of the seasons being looped over.\u003C/p>\u003Cp>And inside of that, we have each episode. Once again, we're just using directors. So we're grabbing the we're grabbing the show. We're grabbing the latest episode because that's the button here. So it's play latest episodes.\u003C/p>\u003Cp>So we wanna know what that is. We grab all the episodes. We grab all the seasons, and we jam those together here to create our data model. And once again, we just have some SEO meta tags here. In the individual episode page, it pins mostly on this iframe, of course, but we do have this additional data.\u003C/p>\u003Cp>We have back to show, and we also have what's coming up next. Now this is interesting. So the bottom will either say next season or next episode. It will say next season if it's the last episode in a season, or it will say next episode if there is another episode in this season that we're in now. We also just render all of the kind of static information for that episode.\u003C/p>\u003Cp>Looking down at the code here, we grab the episode data here based on whatever is in the URL, and we grab the next item. So the next item will firstly always be of this show. You know, if we're in a 100 apps in a 100 hours, we wanna return an episode of a 100 apps in a 100 hours. And either there will be, an episode in this season, but one episode up, or there won't be because we'll be in the last episode of a season. And in that case, we will want to get one season up and episode number 1.\u003C/p>\u003Cp>Right? And so next, we'll either end up with the next episode, the first episode of the next season, or nothing. And we can conditionally show that next button and what it says based on what is returned. That's a pretty cool use of directors' filter syntax there. And then just a little date for matter.\u003C/p>\u003Cp>Once again, just some just some SEO meta tags. So that's really Directus TV. Pretty, like, straightforward data model. The only thing I would perhaps do differently on reflection is I wouldn't, hard code people. I wouldn't hard code people here into each episode, but I would make that a relational collection.\u003C/p>\u003Cp>But that's fine. We can always enhance that in future. Because I wanna show you stuff that's relevant to everyone, we won't dig into Directus TV live today. But that is a a breakdown of how Directus TV works, both in terms of the mental models and the concepts of shows, seasons, episodes, and categories, how they relate to a data model and how they relate to a code base. So I hope you found this interesting, and we'll see you in the next episode.\u003C/p>","Hello, and welcome back to Digging the Rabbit Hole. In this episode, I'm gonna run through the codebase and the Director's project, which powers Directus TV to give you a little bit of an insight in how we use Directus at Directus to deliver Directus TV. Now before we jump into code and the Directus project, I basically wanna take some time to show you what I would call the 3 main pages of Directus TV. Firstly, we have this home page here. In the home page, we have this big global featured item here with a couple of buttons, and we also have these category sliders. Categories contain shows, and inside of shows, we have this show page. This is the 2nd page. This is an individual show listing. So here in trace talks, we have some information about the show. We have a button to play the latest episode, and then we have a listing of episodes. You'll also notice there are seasons. So seasons exist in the data model. A good one to demonstrate that is actually around the world here because we have 2 seasons. So here we have season 1, 2023, and we have season 2, 2024. Now the 3rd page, if we step into one of these, is the actual episode page. So in here, we have a video embed, which we'll talk about in a moment. We have a back to show button, a next episode button, which we'll talk about also, metadata about both the show and the episode, and a list of people, and a list of resources, and they both conditionally are shown or hidden depending on where the data exists there. So that's a little bit of a rundown of these pages. We have a home page. We have a show page. We have an episode page. Now let's look at the directors data model that powers this, and it's very, very similar to the pages. Firstly, we have shows. Each one of these is a different show, director scene scapes, quick connect, I made this, 100 apps in a 100 hours, and so on. Individual shows have a slug. This dictates the URL for that show. The title, a little one liner, which is what is actually shown here on the home page so people know what to expect from this show. A description, and then these three graphics. So we have a tile, a logo, and a cover. To show you how they relate here, if I go into a 100 apps in a 100 hours, we have the logo, we have the background here, and then we have the tile, which is, this view here. That's the tile. So we have the tile, the logo, and the cover. Next, we have seasons. Seasons are almost like a junction collection really. Every show has seasons. A season is just a show, a number, and a year. And then we have episodes. I've pre filtered this down here just to make sure that we're not getting a huge, huge list of shows, but just a manageable number here. So each individual episode, these are all the episodes of season 1 of Quick Connect, have a published date. This is useful for both displaying in the website, but also for RSS feeds. The status, because, of course, we upload all of these in bulk, and then we just change the status and the publish date and re rebuild the site on the day of publishing. Season and episode number, the slug for the URL and the title, the Vimeo ID, which again, we'll talk about in just a moment, a tile description, people, and resources. The tile is, if I go into quick connect, is this this here, each individual tile. And having tiles is useful, of course, for generating social tags, social meta tags. So that's a little rundown. Now before we continue, let's quickly talk about Vimeo. We use Vimeo to host our video for a number of reasons, primarily because they have a really good player that works cross platform and also will adapt to the needs of the viewer. If you have less, you know, less bandwidth, it will drop the quality of the video that you get delivered. And to be frank, I just didn't wanna build that. So it's good to lean on other platforms as appropriate. Finally, we have categories. These are for the homepage. So these are those sliders of categories. It just has a status, a title, and shows that can be sorted, and these can also be sorted which change the order of the categories and the order of the shows within a category. That's a little bit of a rundown of the director's project. Let's do a little rundown of the code now, and hopefully, it should all look reasonably, you know, reasonably sensible given the concepts that we've spoken about so far. So here we have the home page. In a home page, we have a hero. That's that top kind of graphic unit with the featured item, And this grabs data from the global's collection in director, so I didn't show that. Here is the global's collection, and there is a featured item there. So that populates the TV hero. And we also have the TV category, which lists all of the categories. Now this is a custom component here inside of TV. We have custom category, which are the sliders. We have the, the show, which are the individual tiles. We have the navigation, which goes in the hero. That's a separate item because on the on the actual episode page, it's not nested within the, within the hero, but on the other pages that is nested in the hero. So it's a it's a separate element. That's the hero. Then we have the individual episodes. This is for the show listing page with the horizontal I'll show you. With these, that is a TV show here. We use that in a few places. And so they kind of cascade. So on the home page here, we have the categories. The categories render the shows. Then over in an individual show page here, we have the hero unit once again. And then we have all of the oh, I'm I'm in the wrong section here. This is where I wanna be. We have the hero, and then we have, each of the seasons being looped over. And inside of that, we have each episode. Once again, we're just using directors. So we're grabbing the we're grabbing the show. We're grabbing the latest episode because that's the button here. So it's play latest episodes. So we wanna know what that is. We grab all the episodes. We grab all the seasons, and we jam those together here to create our data model. And once again, we just have some SEO meta tags here. In the individual episode page, it pins mostly on this iframe, of course, but we do have this additional data. We have back to show, and we also have what's coming up next. Now this is interesting. So the bottom will either say next season or next episode. It will say next season if it's the last episode in a season, or it will say next episode if there is another episode in this season that we're in now. We also just render all of the kind of static information for that episode. Looking down at the code here, we grab the episode data here based on whatever is in the URL, and we grab the next item. So the next item will firstly always be of this show. You know, if we're in a 100 apps in a 100 hours, we wanna return an episode of a 100 apps in a 100 hours. And either there will be, an episode in this season, but one episode up, or there won't be because we'll be in the last episode of a season. And in that case, we will want to get one season up and episode number 1. Right? And so next, we'll either end up with the next episode, the first episode of the next season, or nothing. And we can conditionally show that next button and what it says based on what is returned. That's a pretty cool use of directors' filter syntax there. And then just a little date for matter. Once again, just some just some SEO meta tags. So that's really Directus TV. Pretty, like, straightforward data model. The only thing I would perhaps do differently on reflection is I wouldn't, hard code people. I wouldn't hard code people here into each episode, but I would make that a relational collection. But that's fine. We can always enhance that in future. Because I wanna show you stuff that's relevant to everyone, we won't dig into Directus TV live today. But that is a a breakdown of how Directus TV works, both in terms of the mental models and the concepts of shows, seasons, episodes, and categories, how they relate to a data model and how they relate to a code base. So I hope you found this interesting, and we'll see you in the next episode.",[176],"687c6fd3-0c41-47ab-8a08-7055d24d69c8",[],{"reps":179},[180,236],{"name":181,"sdr":8,"link":182,"countries":183,"states":185},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[184],"United States",[186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":237,"link":238,"countries":239},"Michelle Riber","https://meetings.hubspot.com/mriber",[240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,217,428,429],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",1773850433286]