Sign in

Philipp 🐘 keila.io

@pentacent.bsky.social
175 followers 41 following 329 posts

Building keila.io, an easy-to-use and reliable Open Source email newsletter tool. #elixirlang #opensource #buildinpublic

PostsRepliesMedia
Philipp 🐘 keila.io @pentacent.bsky.social · 15h
This is pretty cool: @benfreu.bsky.social's. webtrafficwatch.com helps make sense of Google Search Console data. Here is one of the insights for keila.io (lower is better in the graph) 🚀
Average Position is trending down by 1 position every 6 days, with weekends averaging 1.7 positions higher than weekdays.

The last 7 days performed as expected, staying within the normal range based on the previous 30 days.
121
Philipp 🐘 keila.io @pentacent.bsky.social · 18/09/2026
I talked to a friend today about the fact that in the age of AI slop, people just don't care about the small details anymore. Anyways, here I am on a Friday night making tweaks to a dialogue (adding the singular form and segment names). #opensource #buildinpublic #ux #ui
The "Ready to send your campaign" dialog, saying "Are you ready to send your campaign Lovely Test Campaign to 1 contact in the Test segment".
160
Philipp 🐘 keila.io @pentacent.bsky.social · 17/09/2026
Coming soon: A full email editor for Double-Opt-In and Welcome emails. Another step towards full automation support! #buildinpublic #emailmarketing #opensource
A dialogue that says: "Double Opt-In Email", showing an MJML template in a Keila-branded design.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 09/09/2026
Oooh, exciting! Keila kommer snart att finnas tillgänglig på svenska! github.com/pentacent/ke... 🇸🇪 🫎 #sverige #svenska #i18n #opensource #buildinpublic
github.com
Add Swedish translation by rainersnookh · Pull Request #571 · pentacent/keila
Adds a complete Swedish (sv) translation for Keila. Changes include: Swedish locale added to the Gettext locale configuration Svenska added to the available locale selector Swedish translations fo...
030
Philipp 🐘 keila.io @pentacent.bsky.social · 06/09/2026
I'm happy to announce the release of Keila 0.30.3 which brings major improvements in the rendering performance with large MJML or HTML campaigns. In a synthetic 256 KB template benchmark, this resulted in a 13x speedup. Most real templates are much smaller, btw (<20 KB). #buildinpublic #opensource
050
Philipp 🐘 keila.io @pentacent.bsky.social · 25/08/2026
Currently building some sample campaigns to show off the upcoming new campaign editor for Keila! Still a bit hesitant to release it just yet but I think it will be a huge improvement over the old block editor. #buildinpublic #uxdesign #emailmarketing #mjml #opensource
Screenshot of the new Keila email block editor featuring a campaign for a music school announcing new classes.
050
Philipp 🐘 keila.io @pentacent.bsky.social · 19/08/2026
How much of a discount do you give? At Keila, there is one month for free on the annual plans.
100
Philipp 🐘 keila.io @pentacent.bsky.social · 19/08/2026
On the signup page, is the annual or monthly plan your default?
100
Philipp 🐘 keila.io @pentacent.bsky.social · 19/08/2026
Indie vs VC mindset: We experienced database slowdowns during higher than usual sending volume. Instead of just scaling the Postgres instance, I optimized queries and indexes (the cliff in the graph) - and we're now at a lower db CPU baseline than before. Yay! 😁 #buildinpublic #opensource #indiedev
A CPU Usage graph showing a base level of 20% with spikes at around 100% and a prolonged spike above 90% before a sharp dropoff to a new base level of 10%
060
Philipp 🐘 keila.io @pentacent.bsky.social · 08/08/2026
Cool idea!
110
Philipp 🐘 keila.io @pentacent.bsky.social · 04/08/2026
"But Ethan, I'm a real person, not a bot!" To this day, I'm still sending a personal welcome email to every person who signs up to Keila. This has led to a lot of great conversations, even though in this case it was not appreciated 😅 #buildinpublic
Subject: Re: Hey, how can I help you get started with Keila?
Content: Unsubscribe
050
Philipp 🐘 keila.io @pentacent.bsky.social · 15/07/2026
I'm sure people are gonna love the no-robots option!
100
Philipp 🐘 keila.io @pentacent.bsky.social · 10/07/2026
Nice, great job productizing a reusable part of your actual product! 🚀
100
Philipp 🐘 keila.io @pentacent.bsky.social · 30/06/2026
Yes, these are the kinds of regulations that massively favor large companies while creating ridiculous hurdles for smaller (and even medium-sized) ones.
000
Philipp 🐘 keila.io @pentacent.bsky.social · 26/06/2026
There is a DDoS vulnerability in Plug, which is a library used by Keila. If you're using any version older than Keila 0.30.2, please update as soon as possible. cna.erlef.org/cves/CVE-202... #elixirlang #cve #security
cna.erlef.org
Plug: quadratic-time decoding of nested query/body parameters enables denial of service
This project handles the CVE Numbering Authority (CNA) for the Erlang Ecosystem Foundation (EEF).
071
Philipp 🐘 keila.io @pentacent.bsky.social · 26/06/2026
It's Saturday now and everything's still looking good status.keila.io
status.keila.io
Keila Cloud Status Page
This is the status page for Keila Cloud. Check here for updates on service disruptions or maintenance downtimes.
010
Philipp 🐘 keila.io @pentacent.bsky.social · 26/06/2026
Some people will tell you not to deploy on Fridays. Anyways, Keila 0.30.2 is now live! You can now change the contact status and choose different line heights in the classic template. The release also fixes some bugs from the 0.30.0 release. github.com/pentacent/ke... #buildinpublic #opensource
github.com
Release Keila v0.30.2 · pentacent/keila
Version 0.30.2 Added Added line-height setting for body text in Classic template style editor The status of a contact (active, unsubscribed, or unreachable) can now be changed manually on the cont...
150
Philipp 🐘 keila.io @pentacent.bsky.social · 24/06/2026
You can find more details, additional improvements and fixes in the changelog: More in the changelog: github.com/pentacent/ke...
github.com
Release Keila v0.30.0 · pentacent/keila
Version 0.30.0 MJML, HTML, and Plain-Text Templates, Content Slots, and Transactional Emails Breaking Changes In MJML campaigns, Liquid is now rendered before MJML. This means that the previous ...
020
Philipp 🐘 keila.io @pentacent.bsky.social · 24/06/2026
Today I'm releasing v0.30.0 of Keila, the Open Source email newsletter platform with two major improvements: 1) You can now specify MJML, HTML, and plain-text templates with content slots. 2) You can now send transactional messages via the API #buildinpublic #opensource #emailmarketing #elixirlang
1142
Philipp 🐘 keila.io @pentacent.bsky.social · 23/06/2026
www.youtube.com/watch?v=p5FW... Final episode 😭 Thank you for over 300 wonderful episodes, Mark and David @thinkingelixir.com - including one where somehow I ended up as the interview guest (No 55)! #elixirlang
youtube.com
Thinking Elixir Podcast 309: The Final Episode
YouTube video by Mark Ericksen
040
Philipp 🐘 keila.io @pentacent.bsky.social · 18/06/2026
Oh wow, that's massive! But I also find myself using Google Search less and less, simply because results have become borderline unusable.
000
Philipp 🐘 keila.io @pentacent.bsky.social · 17/06/2026
Keila is now listed on euvetted.com and we're getting a decent 4/5 ⭐️! euvetted.com/p/keila Getting to 5/5 is already in the works! github.com/pentacent/ke... #buildinpublic #eutech #eu
euvetted.com
Keila — EU & privacy compliance profile — EU Vetted
Keila — hosted in Germany. CLOUD Act: Minor. Independent review of hosting, sub-processors, encryption and ownership.
180
Philipp 🐘 keila.io @pentacent.bsky.social · 16/06/2026
Now all of the template refactoring is complete, transactional messages will be easy to add. Might still happen this week 🚀 github.com/pentacent/ke... #buildinpublic #opensource
github.com
Template Refactor + Transactional Messages by wmnnd · Pull Request #537 · pentacent/keila
This PR is a refactor of the template system and introduces transactional messages.
060
Philipp 🐘 keila.io @pentacent.bsky.social · 09/06/2026
It took me legit two days to decide that the input and output data structures of the new Keila email renderer should be called Renderer.Input and Renderer.Output. People have been saying it for a long time: Naming 👏 Things 👏 Is 👏 Hard 👏! #programming #elixirlang #dev
040
Philipp 🐘 keila.io @pentacent.bsky.social · 08/06/2026
Validating email addresses is hard, but if you're using Elixir/Erlang, gen_smtp ships with an RFC 5322 parser! And it's easy to wire it up to an Ecto changeset: gist.github.com/wmnnd/25defa... #elixirlang #myelixirstatus
gist.github.com
validate_email.ex
validate_email.ex. GitHub Gist: instantly share code, notes, and snippets.
0132
Philipp 🐘 keila.io @pentacent.bsky.social · 05/06/2026
I'm happy that Keila is signatory to this open letter from Open Source companies to the European Commission initiated by @suse.com: www.suse.com/eu-tech-sove...
suse.com
Open Letter - Europe’s Digital Future
Open Letter - Europe’s Digital Future
030
Philipp 🐘 keila.io @pentacent.bsky.social · 03/06/2026
Oooh, I see waht might have been the issue, looks like the top menu is a bit broken with certain resolutions and might not have shown you the pricing link. Thanks for the heads-up!
110
Philipp 🐘 keila.io @pentacent.bsky.social · 03/06/2026
Does the pricing page not work for you? www.keila.io/pricing/
keila.io
Pricing - Keila
100
Philipp 🐘 keila.io @pentacent.bsky.social · 02/06/2026
Oh no! I think I've been listening to your podcast pretty much since the start 😭
050
Philipp 🐘 keila.io @pentacent.bsky.social · 01/06/2026
On the Phoenix side, I'm using OpenApiSpex to annotate the APIs.
010
Philipp 🐘 keila.io @pentacent.bsky.social · 01/06/2026
Yep, it's pretty straightforward! But the website is built with Astro/JS, not Phoenix: github.com/pentacent/ke...
github.com
GitHub - pentacent/keila-web
Contribute to pentacent/keila-web development by creating an account on GitHub.
110
Philipp 🐘 keila.io @pentacent.bsky.social · 01/06/2026
The Keila docs have gotten a little glow up! 🎨 Plus, the API docs are now directly integrated into the website (built automatically from the OpenApi spec). #dev #docs #opensource #webdev #buildinpublic
Screenshot of the Keila docs page for the Campaigns API. It shows an excerpt of the GET /api/v1/campaigns endpoint.
1141
Philipp 🐘 keila.io @pentacent.bsky.social · 01/06/2026
It kept happening to me when updates became available: github.com/zed-industri... This meant that I could phyiscally feel there was a new Zed version because the laptop startet getting hot. But yesterday, there were no updates pending and it still used 100% CPU, so I needed to switch.
github.com
If an update is pending, CPU usage keeps ramping up · Issue #53530 · zed-industries/zed
Reproduction steps Install and open Zed on MacOS (26.3.1 / 25D2128 on my machine) When an update is released and downloaded, keep it in a pending state CPU use starts climbing until it saturates on...
010
Philipp 🐘 keila.io @pentacent.bsky.social · 31/05/2026
I think I'll have to stop using @zed.dev - at least for a while. I love Zed but it keeps using 100% CPU on macOS and I don't want to use my laptop as a space heater 😅
110
Philipp 🐘 keila.io @pentacent.bsky.social · 31/05/2026
PSA: If you're using a git client that doesn't support intra-line diffs and doesn't understand whitespace, you're making your life more difficult. Sourcetree vs Sublime Merge Thanks @benfreu.bsky.social for the tip! #dev #software #development
Screenshot from Sourcetree showing 35 removemd and 35 added lines.Screenshot from Sublime Merge with the same diff but showing only a changed HTML tag in one line and single line added elsewhere in the snippet.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 29/05/2026
This might not look like much, but people have been wanting to send campaigns with custom HTML for years so ... enjoy! #webdev #buildinpublic #opensource
Screenshot of the Keila template edtior, showing some HTML and Liquid code (featuring inserting the contact name and the unsubscribe link) on the left and a rendered preview on the right.
090
Philipp 🐘 keila.io @pentacent.bsky.social · 28/05/2026
Besides all the big changes I'm working on, here is a small QOL update: Independent scrolling of the code/preview the MJML editor in Keila. #buildinpublic #emailmarketing #opensource
080
Philipp 🐘 keila.io @pentacent.bsky.social · 28/05/2026
There's an update for tz. Get it so your app doesn't have to keep auto-updating 😄 #elixirlang #myelixirstatus hex.pm/packages/tz
hex.pm
tz
Time zone support for Elixir
020
Philipp 🐘 keila.io @pentacent.bsky.social · 27/05/2026
Sneak peak at the MJML code editor for a campaign with a template that offers a content slot. 👀 #emailmarketing #opensource #buildinpublic #mjml #email
Screenshot of the Keila campaign editor. On the left is a code editor for MJML where two mj-section elements are shown.
On the right is the preview of a full email with a header, the content defined on the left, and a footer.
070
Philipp 🐘 keila.io @pentacent.bsky.social · 26/05/2026
Keila's new template system is going to be awesome. Introducing: MJML templates with content slots. This allows you to keep a consistent layout across multiple campaigns where only certain parts can be edited later. Great for shared workflows. #emailmarketing #buildinpublic #mjml #design
2111
Philipp 🐘 keila.io @pentacent.bsky.social · 26/05/2026
Currently working on a major new feature for Keila: MJML, HTML, and Plain text templates. This will allow you to better customize your messages - and it's another important building block for transactional emails. #opensource #webdev #emailmarketing
Screenshot of the "New Template" screen. It lists the following options:

1) Classic: The classic Keila template with easy options for adjusting styles. This type can be used to create Markdown and Block editor emails. It can not be configured with custom content at the template level.
2) MJML:  MJML makes it easy to create responsive emails.  This type can be used to create Markdown, Block editor, and MJML emails. 
3) HTML:  Raw HTML template for full customizability. 
4) Plain text:  Template type for plain-text emails.
070
Philipp 🐘 keila.io @pentacent.bsky.social · 25/05/2026
Ah, looks like @maennchen.dev added this two weeks ago. Neat! github.com/hexpm/hex/pu...
github.com
Warn on installation of vulnerable packages by maennchen · Pull Request #1150 · hexpm/hex
clean retired vulnerable retired & vulnerable
130
Philipp 🐘 keila.io @pentacent.bsky.social · 25/05/2026
Thanks for sharing this! It seems mix hex.audit only warns if packages have been retired and not if there's a known vulnerability 🤔
110
Philipp 🐘 keila.io @pentacent.bsky.social · 25/05/2026
Today we're releasing version 0.20.1 of Keila, the Open Source email newsletter platform. It adds a new Brazilian Portuguese translation and pre-filled forms! 🇧🇷✍️ github.com/pentacent/ke... Some examples for the pre-filled forms: www.keila.io/updates/pre-... #buildinpublic #opensource #brazil
github.com
Release Keila v0.20.1 · pentacent/keila
Version 0.20.1 🇧🇷 Brazilian Portuguese, pre-filled forms, and many fixes Added Added Brazilian Portuguese (pt-BR) translation (thanks @polesapart) Contact form fields can now be pre-populated us...
060
Philipp 🐘 keila.io @pentacent.bsky.social · 23/05/2026
Introducing: pre-filled forms ✍ Do you already have some info about a contact or want to let subscribers update their details? You can now pre-populate any signup form using query parameters. Now on Keila Cloud. Example: app.keila.io/forms/nfrm_q... #buildinpublic #opensource #emailmarketing
080
Philipp 🐘 keila.io @pentacent.bsky.social · 20/05/2026
Just deployed a small fix to the Keila block editor base template: Centered image alignment and column gutter rendering improved in Outlook. Still loving testi.at for testing these kinds of changes #buildinpublic #emailmarketing #html
Screenshot from testi.at, showing a multi-column layout across various versions of Outlook, rendering identically.
060
Philipp 🐘 keila.io @pentacent.bsky.social · 20/05/2026
24 hours on a train for a conference?! That's what I did to travel to #ElixirConf EU in Málaga. It's worth it! Flying emits 18x more CO2 and I can be productive while travelling. Plus, trains are cool. Win-win-win. (Writing this on my way back on the ICE from #O5F5 in Paris) #train #travel #climate
Infographic showing a comparison between taking a train from Nuremberg to Málaga vs taking the plane. The train causes 17kg, a direct flight 306kg CO2e. The actual trip included a short flight and came in at 63kg CO2e. Data from Atmosfair, DB, and SNCF.
040
Philipp 🐘 keila.io @pentacent.bsky.social · 20/05/2026
Congratulations!
010
Philipp 🐘 keila.io @pentacent.bsky.social · 19/05/2026
Well, that does sound like a challenge with Open Source business models! You're using Open Source software that's critical for you but the vendor hasn't found a sustainable business model and you don't seem to be paying them either 😊
000
Philipp 🐘 keila.io @pentacent.bsky.social · 19/05/2026
Second day of #05F5 Open Source Founders Summit in Paris! 🇫🇷 Lots of interesting conversations about Open Source and the specific challenges Open Source business are facing. #OpenSource #buildinpublic
Photo of the Rotonde de Stalingrad in Paris
030