APEX Template Component Competition is live now
Why we need custom components
#I was sitting in the keynote in Zeist at NLOUGs APEX World 2023 when I first heard about APEX 23.1’s headline feature, Template Components. Menno Hoogendijk of the Oracle APEX development team announced this new plug-in type that allows you to create custom UI components with just a few lines of HTML (and optionally the templating syntax, CSS, and JavaScript). He elaborated on how much easier this made developing APEX internally. And “eating your own dog” food is always a good sign.
I was immediately amazed by this feature, as I always thought that one problem with APEX was that everything tended to look the same. The framework leads developers to use tables all the time. A few of the classic report templates and the card regions showed that some different data representations were possible, but this was not enough for my taste.
If you think about the big websites you use every day, how many times do you see a plain table or generic cards? Not that often, right? YouTube, Google, food delivery, social media, and news sites all have these fancy and custom data lists for their content. And it makes sense to think about the best way to present your data to the users.
What’s new about this plug-in type
#Everything you can do with a template component, you could also do with a classic region plug-in. But these plug-ins are really hard to develop, and take a lot of time. For me, it was the last thing I learned about APEX. There are not many examples, and I needed some time to wrap my head around how APEX_EXEC
even works.
The great thing about template components is that literally anybody with some HTML knowledge can learn how to create basic components in little to no time. I was able to create my first components in one hour and even published a video and blog post about them on the same day.
The vision: a huge library of custom components
#I think what makes this feature so important is the ability to share them. You can just export your plug-in, and anyone else could use it. One day, you would just check apex.world, get a gallery of all the components submitted by the community, see some that could fit your use case, and just import them into your app. This would be wonderful! Or you could see a great starting point, fork the plug-in, customize it, merge it, or submit it back to the gallery.
I thought it just needed a small push to get this started, to get the community excited about this new feature, and to get some components out there. So I had the idea to start a competition.
I pitched this idea to my colleagues Kai and Niels. A few days later, we had some meetings to discuss the details and got the go-ahead from the company (MT GmbH) to sponsor some prizes.
The timing was also pretty great, as I attended Kscope23 a few days later. I remember hacking together a small landing page to collect e-mails at the fancy hotel. During the conference, we talked to numerous people about the competition and got some great feedback about it.
The competition
#Well, today is the day. The competition is live now, and you can submit your components until the 31st of October. The winners will be announced after the jury has reviewed all the submissions. You can find all the details and rules on the landing page.
We have some great prizes for the winners. The best five submissions can win gift cards ranging from 850€ to 100€.
Thanks a lot to every member of the jury for taking the time, to my colleagues for making this possible and helping me out, and to my company for sponsoring the prizes.
Now it’s your turn
#I hope I can motivate you to test out this new plug-in type and maybe even submit a component to the competition. This competition only works if we get many submissions, and I hope we can get plenty of people excited about it.
If you have any questions, feel free to reach out to me on Twitter or LinkedIn.
(I played around with Diffusion Bee, which lets you generate AI images from text on your own machine. Some fingers were harmed in the making of this image.)