RxAssim
I’m excited to announce ExInertia, a toolkit built on top of Igniter that provides a robust integration between Phoenix and Inertia.js, with first-class support for Routes library and Bun.
Technical Stack:
- Built on Igniter for powerful, composable installer generators
- Full Inertia.js integration with Phoenix using Inertiajs/inertia-phoenix
- Modern asset pipeline using Bun + Vite (replacing esbuild/tailwind)
- Built-in Routes integration for type-safe routing between Phoenix and TypeScript
- Automated manifest handling for Vite assets
Installation:
def deps do
[
{:exinertia, "~> 0.5.0"},
]
end
The installer, powered by Igniter (thanks @zachdaniel ), handles the complete setup:
mix exinertia.install
What gets installed:
- Vite manifest reader in your Web namespace
- Inertia pipeline + configuration in your Router
- Routes integration for type-safe routing
- Modified root layout with Vite asset handling
- Complete Bun + Vite setup replacing esbuild/tailwind
- TypeScript-ready frontend structure with Routes type definitions
- Automated mix aliases for asset building
Development Experience:
- Hot Module Replacement (HMR) with Vite
- TypeScript compilation with Bun
- Type-safe routing between Phoenix and TypeScript using Routes
- Seamless server-side rendering support
- Zero-configuration Tailwind integration
Type-safe routing example with Routes:
// Your routes are automatically typed!
const url = Routes.path('user.show', { id: 123 });
// => "/users/123"
// TypeScript error if you miss required params
const url = Routes.path('user.show'); // Error: missing id parameter
The project is built to be modular - you can use the installers independently or compose them with your own Igniter-based installers.
Resources:
- Documentation: HexDocs
- GitHub:
https://github.com/nordbeam/exinertia
Contributions and feedback are welcome! We’re particularly interested in hearing about different use cases and integration patterns.
Trending in Announcing
You may know https://ui.shadcn.com/, a UI component library for React. I really love it’s design style and components. I’ve built some co...
New
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries.
offset-based pagination with...
New
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub.
Docs are at OpenaiEx User Gu...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
The Chelekom project is a library of Phoenix and LiveView components generated via Mix tasks to fit developer needs seamlessly.
One of i...
New
Phoenix components for pagination, sortable tables and filter forms with Flop and (optionally) Ecto.
pagination
cursor pagination
sorta...
New
Please say hi to a new lib, Astro that aims to deliver easy-to-consume astronomy calculations of practical use. For now it only calculat...
New
Other Trending Topics
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog
It says that Fly is going all-in on sprites, which is a worry ...
New
Hey folks,
I just published a post about Hologram’s funding and where the project goes next - the short version:
Curiosum as Main Spons...
New
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using.
We’re particularly inte...
New
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #ai
- #genstage
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










Showing Posts 1 to 10- Show Best Posts
- Show All Posts (oldest first)
- Show All Posts (newest first)
zachdaniel
Looks awesome!
FYI your package can be installed without modifying the
mix.exsfile by anyone who already is using igniter withmix igniter.install exinertiaand that’s the command we recommend to use when running installers as opposed to callingexinertia.installdirectlyGreat work!
RxAssim
Thank you!
I actually wanted to contact you before I release this to get feedback about how I used Igniter.
For the installer part, I figured that since Igniter is relatively new, not a lot of people would be using it in their projects, and I aimed for having the users add only one dependency to get started.
But I’ll refine this moving forward to include your suggestion.
zachdaniel
Ah, actually I just spotted this: exinertia/mix.exs at main · nordbeam/exinertia · GitHub
So one of the main reasons we suggest people work with igniter directly to install packages etc. is to ensure that igniter is a dev/test only dependency. Igniter depends on mix and having it as a production dependency causes issues.
So either exinertia itself needs to be a dev/test dependency, or it needs to make igniter an optional dependency. This lets end users list it as a dev/test dependency in their application.
Based on what it does I think either of those things is fine because exinertia doesn’t need to run in production for users right?
Small note, if you set
onlytoonly: [:dev, :test]in your installer’s info callback, then igniter will automatically install it withonly: [:dev, :test], but only if installed viamix igniter.install exinertiaRxAssim
Thanks for the feedback! I’ve updated exinertia to make Igniter an optional dependency and modified the README to instruct users to install via
mix igniter.install exinertia. This should help ensure Igniter remains a dev/test only dependency as intended.zachdaniel
Awesome! One small note is that
mix igniter.installactually works even when igniter is not installed into a project, as long asigniter_newis installed as an archive.So your instructions could be
And then the user doesn’t have to manually edit even a single file
skyturtle
Thanks for creating this! I’ve been playing around with Inertia.js and Phoenix and have really been enjoying the experience. It was getting old having to go through all the same setup steps. I had a couple of questions:
mix phx.gen.release --docker? I tried to deploy my app to Coolify on a self-hosted VPS. My build keeps failing during the builder stage atRUN mix assets.deploy. Here is what I see in the debug log:It looks like the Vite.js config file can’t be found. When I used Svelte in a Phoenix + Inertia.js project, I had to install Node for the build stage to run
npm installis theassetsdirectory after it was copied. I wasn’t sure if I need to do something similar here. This is my first time using the Hex Bun package. I thought the Bun wrapper package eliminated the need to install any additional JavaScript tooling, but I might be mistaken.PhxManifestReadermodule. When I was trying to setup Vite within a Phoenix project, I noticed other examples had setmanifest: falsein theirvite.config.tsand put theoutputto match theassetsfolder used by Phoenix. Is there an advantage to reading those manifest files in this manner?Thanks again for creating this toolkit! Everything seems to be working in dev right now. This was also my first time using Igniter and the
ExInertiainstallation experience was sweet.RxAssim
Hi!
I forgot to
bun installwhen runningmix assets.deploy, but I’ve fixed this with the 0.7 release.As for the
PhxManifestReaderquestion, we usePhxManifestReaderto dynamically read Vite’s generated manifest file, allowing Phoenix to reference the correct, hashed asset filenames in production.This approach leverages Vite’s chunking and cache-busting optimizations in both development and production, simplifying asset management without needing to disable the manifest in Vite.
dmitriid
Is there any expplanation on what Inertia is, and why everyone seems to be so excited about it?
I can’t get head or tails of it from the websites, and all integrations (exinertia included) have no docs whatsoever on how you would use it
c4710n
dmitriid
I read that, too. And that means what exactly? I’ve always been able to build anything on the frontend using anything on the backend