Join us for The Changelog, taking you through the month’s Directus updates including product updates, new content and community contribution highlights. This month includes new extensions such as an SEO plugin and field comments module, a new episode of Unchartered Territory and What's in your Dock from Bryant.
Speaker 0: Alright. Hello, everyone. Hopefully, you are having a great day. If you're new here, I'm Beth, and I am here to take you through what is new with Directus in March. We have a really great show for you today.
We have a lot of Bryant. We're very lucky. He will be taking us through what his working setup is in a special edition of what's in your dock. We also have a brand new episode one of uncharted territory, a brand new director's TV show. But first, I have an invite for you.
So if you are free on the March 20, we are hosting a workshop with Ingest called building advanced content workflows. And in it, you can learn how to build an automated translation system using direct us in ingest that you can implement immediately. It is on the March 20. And if you are in our Discord, you can see it with the little events tab on the there. First of all though I'm gonna take you through to Carmen who has got the product updates for you, for this month.
Speaker 1: Hey, everyone. Carmen here to tell you about what we've shipped in Directus in the last month or so with eleven point five point zero and eleven point five point one. We've added numerous small improvements and bug fixes. And in this section, I'm gonna highlight two of these to draw your attention. Firstly and importantly, we have a breaking change to bring to your attention.
There is a changed error message when a flow condition operation fails, And we've added partial Prometheus supports for your monitoring needs. Currently, we support the pull method via the metrics endpoint. Metrics generated can be controlled by a CSV of services to observe using the metric services environment variable. So that's what we've released in the last month. Be sure to keep up with releases on our documentation at directus.i0/docs.
And if you have any questions or feedback, be sure to join us on Discord. This month, we've added two different tutorials to our documentation in four frameworks each, Next. Js, Astro, SvelteKit, and Nuxt. So, yeah, we've got eight new articles. These are on implementing multilingual content using Directus and the framework and rendering dynamic blocks using framework.
You can check them out at directus.i0/docs forward /tutorials forward slash getting dash started.
Speaker 2: Hello. I'm Mike, and I'm from the marketing team. I'm gonna be here to talk to you about all the latest extensions that have been released in the Director's Labs org on GitHub. Just as a reminder, this org is where we publish regularly new experimental extensions with quality of life or feature improvements that could be used. First, we're gonna be talking about the field comments module.
First, what we need to do is connect it to a collection. In this case, I'm gonna attach it to our employees collection. We can enable it on all fields by default, or we can select specific fields we wish to be able to comment against. When we add an official record, so for this, I'll be adding myself. I am the developer experience engineer.
I do things with extensions. You'll notice how there's no additional information or anything here. Once the record is created, we can go back in, and you'll notice how there are now additional comments sections that we can add. So in this case, at admin user, is this person actually the dev ex engineer? Once we submit this, we'll be had a comment to that field, and it'll tag accordingly how many comments are available.
This also uses the existing commenting, feature of directors. So if you tag somebody, etcetera, they will receive a notification about it. And as an aside, any field level comment is completely isolated to its field and doesn't appear in the item level comments. The next extension we're talking about is the SEO plugin. We can configure this quickly with templates for both the title, the meta description, and we can enable additional functionality such as sitemap controls for how often things are going to be updating our sitemap, search engine controls for things such as no follow and no index, as well as adding the social media image for graphs.
I'm going to just quickly skip that one so I don't have to attach an image. Add this to
Speaker 1: our data model. Once we are
Speaker 2: back in our data model, you'll be able to see that we have our content as well as our new fields for SEO. So, okay. Alsmore is the DevX engineer. Mike those things with extensions for directors. And you'll notice how we're now getting a lovely preview with some help controllers, so we don't want this to be followed, but we do want it to be indexed.
And now we can save this. This extension that we'll be looking at is the WYSIWYG add edit file link. So if we create an item, this is the selected field. There is a new add edit file link button. So if we have some content and we want to insert a file, for example, we can grab off my desktop a text file, add it, the transcript of the meeting, and we can have it open in a new field.
This image, preview doesn't work as it's not an image, but we add this, and we'll have the transcript to the new meeting as a file. We can also then go in, revise it, and change anything. The complete just as if we were editing the normal link, we can also and just to double check, we can also upload an image. Director's logo, which will have the preview and allow us to insert it with the download option. And they look like so, with the complete URL through to the assets library locally.
The final module for this month is going to be the migrate module. Here you can see I have the migrate modules interface, and the Directus instance I'm going to send it to. This is, my local instance, and this is a remote cloud instance. As you can see here, there is no content, no collections available, but we have a collection available here. So I'm just gonna quickly grab a static token, as the module requires a authorization token to interact with the client.
Don't worry. I'll recycle this afterwards so that nobody can use it. Save that. Going to grab our domain for the client. Now we can really check to see if it is compatible.
And you'll see here that there there is a difference. My local is running 11.4, and the remote is 11.51. We can force this through. I'm going to now. Or we can use this as an opportunity to run any upgrades, etcetera, to make sure everything is aligned, especially if there is a major difference like version 10 or any of the larger schema changes internally.
So we're gonna force this, and we don't want to copy over the users because I already have an admin user over in my remote. So we are now going to start the dry run, and it's going to create a snapshot and create collection options. This may take a moment. We're also able to preview every one of the files created as part of the migration, all the individual components that make it up. Now to actually do the migration, we apply our key and our domain.
We are once again gonna have to force it through, and we remove the driver and tag. This way, it's not just building it and running locally. It is pushing up to the remote instance. So just to validate again, we don't have a collection here. I'm gonna start the migration process.
And now we can see that the migration is complete, but it has skipped the users as we already have an admin user. Now if I reload the content, we will have our employee collection with me, the developer experience engineer, with all the relevant information internally. The only thing that's missing is this instance will now need to be configured with the correct extensions for it to operate as expected.
Speaker 0: Alright. Hopefully, you found those interesting. Mike, I don't know if you're in the chat, but what is your keyboard? It's clicky, it's a chef's kiss. Very nice.
It's very satisfying. If you are planning on using anything that was just mentioned or you have any questions, let us know. A few of us are hanging around in the chat so we can see them and answer your questions. Or if you are catching this on demand, let us know in Discord, and we'll see what we can do. It is time for the first of Brian's sections.
So he is gonna be talking us through what is in your doc. And if you haven't caught that on the director's TV already, we have a bunch of cool people with very interesting jobs tell us what they are using in their day to day setup. And so here is Bryant's. Hey.
Speaker 3: Hey. Bryant here from Directus, and I I guess today I'm actually breaking down what's in my doc. Now, our CTO, Ryke, did one of these videos not too long ago and there's a lot of overlap in our setups. So I'll try to cover some of the apps that he didn't mention, but if you haven't checked out his video, definitely give it a watch to see what he's running. Alright.
So let's dive in. Right. Onto, like, my main squeezes, the daily drivers. First up has got to be Missive. Hands down, the only email app you'll ever need.
I've been using it for years. Now what makes it special? Well, I can manage both work and personal inboxes in a single app. That's the biggest thing. No more bouncing between Gmail tabs or different applications.
And, you know, if you're working with a team, the collaboration features are killer, especially if you're just sharing inboxes with said team. Alright. Next up is gonna be Raycast. I use that for navigating and launching apps, and I was an Alford user for a lot of years. Even built a few plugins for that, but honestly Raycast blows it out of the water.
Quick app switching, the clipboard history is probably what I use most. It's just become one of those tools that I can't imagine working without anymore. I do pay for the Pro plan, but, honestly, I don't use the AI features a ton because the experience is just a little clunky compared to some of the dedicated apps. For API work I'm using Bruno. If you've caught any of my 100 Apps one hundred Hours episodes, you've probably seen me using it to make API calls.
It's a great open source alternative to Postman. The interface is a lot cleaner, and it's been super reliable for me. I've also recently switched to Orb Stack as a replacement for Docker Desktop. It seems to be a lot lighter on resources, it starts up a lot faster for me, and it it really just feels more native. So definitely give it a look.
Now, on to videos, which is what I get asked about most. So, like, my setup, I get questions on all the time on the YouTube channel, both privately in the Discord community and sometimes via email. We do a lot of different styles of videos, so I'm gonna do a quick breakdown here of what I'm using. As far as the video apps, Loom is my go to for sharing quick updates with the Directus Core team or within the Directus community. If you need to explain a bug or show how something works, just click Record, boom, I get a link to share and then I'm done.
That's it. For those UI focused recordings where you see me zipping around the screen, with all the slick animations, I'm using Screen Studio. It automatically adds those smooth zooms and highlights, and it makes just UI demos way more engaging. 99% of the time audio is off for those videos. When I need something more robust for longer form content, I'm using ScreenFlow.
The editing capabilities within it are super quick and lightweight. It's perfect for me to put out, quick but yet still polished videos. Most of the time though, I'm exporting for our main man, Nat, who is our editor. And, Nat, you should probably edit yourself in here taking a battle somewhere because you are freaking amazing. And then the little mouse highlight pointy thing that everybody asks about, that's Mouse Pose.
It's a nice simple little tool with a hot key. It makes following those cursor movements so much easier for viewers and I've been using it for so long, like, using it to explain stuff has become second nature to me. As far as the video gear that I'm using, on the hardware side, my mic is the Rode VideoMic NTG. It's a bit older, maybe like five, six years old, but the sound quality is incredible for the price point, and I can use it both on my camera or mounted on my desktop here. The headphones that you always see me in are Sony WH-1000XM5s.
I recently upgraded because my dog got a hold of the old pair. These are pretty pricey, but, I've got three little girls so the noise cancellation is definitely worth it to me. Everything plugs into a CalDigit TS USB hub. I've got the TS three plus. There's a newer version available, but this one has worked for me for years.
I still can't get to that one cable nirvana though because I've got two of these, LG five ks displays and my MacBook Pro doesn't run all of that through a single cable. For the camera, I've got a Sony a 6,400 with a Sigma sixteen millimeter lens. That's what gives me that nice bokeh effect that you see in the background. All that is connected through an Elgato Cam Link four k, which converts the HDMI signal to USB and lets me plug that into the computer. The mood lights in the background, those are Govee light bars.
I think that's how you pronounce it. I have their iPhone app so I can just change the vibe depending on what I'm recording or, you know, sometimes my mood that particular day. If it's Christmas, I can turn on Christmas lights. Amazing. Alright.
So for a little more spicier territory, AI. Right? You've probably seen me use AI in some of the hundred apps, hundred hours episodes, if you've caught any. But here's what I'm actually using day to day. Claude has become my daily driver.
It's part of my workflow in some form just about every single day. I could be using it for, like, creating ASCII art for a rabbit that I need for a CLI app. Don't judge me. Or summarizing documents or content that I don't have time to read. Recently used it for, like, health insurance research.
Or, you know, work related. I'm writing meta descriptions for blog posts or, Directus TV episodes. I'm also using Cursor for coding, which, you know, I have a love hate relationship with at the moment. Auto completion works amazingly well probably 75, 80 percent of the time for what I use it for. But most of the LLMs still have the older Directus SDK syntax memorized, so you have to prompt it a bit to pull that out of it.
The agent feature in cursor is is interesting. You know, I've used it on some greenfield projects or some new features. With existing code bases, though, it's kinda been a bit of a mixed bag for me. Also AI wise, I've been playing a lot with replicate. I don't have a ton of time.
I've got three little girls. So, like, setting up all these models and trying to run them locally for me is is not an option or just something I'm not willing to commit to. So, for image generation, I've been playing around with the Flux models. So if you've seen any weird AI generated images, from me, that's where they're coming from. I like Replicate because it's quick and easy to experiment, and I've even run a couple of fine tunes using their platform.
So that's it. You know, the tools I use mostly just to help me get the job done quickly. I'll see you in the community and on Directus TV. I'm definitely gonna invoke rule number two here. And I'm going to go into Directus Cloud and you can call this cheating, you can call this taking advantage of what we've already built previously, but we are going to do a new project using our simple CMS template.
If I bring up my little mouse pointer tool here, it's called Mouse Pose by the way. I think that is like 90% of modern JavaScript development is wrestling with dependencies and bundlers and config. Why go with four? To me, I I hate giving people a middle ground. Right?
So if we have bad or, let's say, the worst, bad, and then good and great, there's no middle ground. Right? So you gotta get off the fence. Hey. That's the way the cookie crumbles sometimes.
I'm not sure what I am doing wrong with this. Feel free to steal this password here because this project should be turned off by the time we get to airing this actual episode. I'm just gonna create a new component. We'll call it feedback. Should we call it widget?
Love widgets. Who doesn't love widgets? This is the personalized content engine. Website personalization engine. Badabing badaboom.
This is beautiful. Right? I've got no idea whether we're actually going to be able to, like, push this one across the finish line or not. So that should be exciting for this episode. Filnaughty.
Filnaughty just typing that out. And then we have the nice list. Create a strong password. Why do I have to create a strong password? Come on, dog.
Why is it asking me to do this? I'm not sure. I'm sure somebody could figure out how to get access to my local host. I know we got a lot of really great hackers out there in the community. This is gonna be Site B.
Alright. The other site. The site that I don't like. Site B. Don't even care about it enough to give it a nice name.
Everything is installed. PMPM dev. I think we need like a blooper reel, but maybe that would be every episode that resulted in just non stop bloopers. We'll delete all of these fields that are no longer global in our data model. And today's exes episode is is really just a, a big exercise in data modeling.
Alright. Delete. Delete. Delete. And this is how you know that these things aren't scripted because if it was, I would be way more organized than this.
Boom. I've got a REST API. Magic happens. Sparkles fall from the sky, etcetera. Sometimes you win, sometimes you lose.
Just gotta keep rolling the dice. Alright. That's it for this episode of hundred apps, hundred hours. We'll catch you on the next one. Thanks for joining.
Speaker 0: Amazing. And all 10 episodes of 100 apps one hundred hours season three. So there's over 30, episodes for you at directorsi0/tv, and it's the first one. I made it the first one, when I uploaded it, so you should have no worries finding it. But thank you so much for Brian for taking us through both what is in his doc and also, the full a hundred apps, a hundred hours season three.
Do go check them out. He's a very entertaining person. It's it's gonna be good. So, next up, we have episode one of another, brand new director's TV, show, which is uncharted territory, and that is we're learning how to use geospatial data with Directus. So I'm gonna hand it over to Carmen to take you through episode one.
Speaker 1: This is my Directus project for tracking all of my hiking activity. And as you can see, I've got a collection called hikes, which is currently empty. Let's take a look at its structure by going to settings, data model, and hikes. Now, here we can see we've got two fields in our hikes collection. But I'd love to show on a map where my hike took place.
So what we're gonna do is create a new field, make it of type map, and call it location. And we can see right now that the type is set to point. But as it turns out, there's lots of types of map data. And in this episode, we're gonna cover each and every one of them. So let's start with point.
I'm gonna save this field and then go and create a hike. Gonna click on create item. Date set to today, and I'll set my location to be in this part of Vienna. So that's what the point type is. It lets us set a single point on a map.
If we take a look at our collection, we'll see we have our type set to point and our coordinates set to these coordinates. Of course, this doesn't look as nice, but we'll cover the layout thereof in another episode. But a point is nice, but a hike is more of a, you know, a journey along a line. What I'm gonna do is create that map type location again, but this time set the type to line string. Go ahead and save that.
And let's try again. Set the date to today. And go for a hike somewhere in France. And what I can do is by setting a certain number of points, create this line that indicates my hiking journey. So now we can see that we have a series of coordinates, which is good.
But what about the other types? Let's once again create that location field and this time set the type to be a polygon. Let's go to Slovakia. So what I can do here is once again, by clicking around, I can now set a polygon to denote which area I've covered with my hike. Go ahead and save that.
And we can see once again, the coordinates are set accordingly. Now let's try the multi point type. Go ahead and create a new hike. Now with multi point, I can set a variety of points. Next let's try the multiline string.
Let's go to The United States. Now with a multiline string, similar to the line string itself, I can now have several strings. The multi polygon location allows us to create multiple polygons on a map. Let's give that a try. Let's go to Argentina.
And as you can see, I can create multiple polygons in a map. Let's try the geometry all option. I'm gonna save this and create a new hike. Now what the geography all option lets you do is mark all kinds of points. So we can have points, we can have polygons, and we can have lines.
Let's cover what the rest of the types look like. First, there's json. And json looks exactly like a geometry all object, but stored as json. A string is also a geometry all object stored as a string of characters, a text. You guessed it.
Also a geometry all object, but stored as text. And CSV is a geometry object, but stored as CSV or comma separated values. How can I best store my hike? Now, as we said towards the beginning of this, the line string is really going to be my best bet because it's a series of points that I follow during my hike. So these are the different types in which we can store that GeoJSON mapping data in DirectUs.
Speaker 4: We want to take a moment towards the end of the change log for thanking our amazing community contributors who give their time to improve the director's project. Since last month, there have been two contributors. A huge thank you to Chiyako for fixing a marketplace extension detail page back button and Gerard for removing a duplicated key validation logic from update by query. Thank you again. You can see the specific pull requests inside of the full release notes on GitHub.
Lastly, we also want to take the time to thank our GitHub sponsors of February who financially contribute to Directsys development. A huge thank you to Wayfan, Entel, Mike, Fergus, Omar, Marcus, Peter, Utomic, Steven, Robson, Nonlinear, Andreas, John, Khan, Biab, Adam, Jason, Birka, Vincent, CK, Valentino, and Jens. The money we are given from our GitHub Sponsors goes straight back to community members who build tooling and extensions for the directors ecosystem. Thank you again for being part of that. For this month's reading list, we're following on from changing up a bit like last month with the audio special and are coming to you with video recommendations coming from FODSTEM, the free and open source software developers European meeting that took place last month.
There are recordings from lots of different tracks including community, data analytics, inclusive web, security, tool the docs and so many others. To call out three of the recordings, there's alternative text for images text anyway from Mike Gifford, lessons learned open sourcing The UK's COVID tracing app from Terence Eden, and beyond the readme, crafting a better developer Experience for Open Source Projects from Lorna Mitchell. There's a seriously impressive volume of resources available to watch at fosdem.org, so we recommend you go check them out.
Speaker 0: Alright. That is it for March's the changelog. If you are still here, thank you so much for taking the time to hang out with us. Hopefully, you found something useful and something that excites you for the day. Have a great rest of your day.
In the meantime, as I said at the beginning, if you are free on the March 20 and want to join our workshop with Ingest, I have just posted the link in the chat. If you're not, in the Direct to CV chat live, you can also find it in the events tab on Discord. Have a great rest of your day, and hopefully see you for the next one. Take care, everyone. Have a good one.
Bye.