The ExSemantica way of thinking

The ExSemantica way of thinking

Costs to optimize programs; comparing and contrasting the in-house frontend and backend to the theoretical Phoenix-generated counterpart

EDIT: I changed my mind but this may give a bit of insight on my rants of how kind of overcomplicated things can be a little more simple. I will post another article if I go through with this.

. . .

Hey, I just need to get this off my chest, many people have asked why not use Phoenix in an API-heavy distributed Elixir project like this...

Why not Phoenix for ExSemantica?

I came to the conclusion that Phoenix wasn't fit for my project, the generated result can get too monolithic. I will keep it in mind for a future project that is simpler, and tighter in time constraints. I'm not a fan of monolithic code bases, modularity is nice to me since they allow you to disable units of core functionality.

Tools that Phoenix uses, though, like ESBuild and TailwindCSS loaders for Elixir, are pretty nice. In exsemtheme's Mix file, the theming engine that (yes, ExSemantica decouples frontend from backend to make things easier, and to allow third-party clients to connect to the APIs and a loosely-based-off-IRC low-bandwidth chat service)

# . . .
# RATIONALE: Themer engine requires ESBuild and TailwindCSS.
{:esbuild, "~> 0.2", runtime: Mix.env() == :dev},
{:tailwind, "~> 0.1", runtime: Mix.env() == :dev},
# . . .

What does Phoenix provide?

I think Phoenix provides you with a quick and easy way to generate a web project that uses an Ecto-compatible database. Also, this is part of the amazing PETAL stack.

What does ExSemantica provide (for me?)

I made a Venn diagram. PETAL is one circle and ExSemantica is the other.

Check it out

If you want to see more, the project is on GitHub.

I'd like to thank the Phoenix/Elixir/Tailwind/Alpine/LiveView devs and everyone else who made this possible.

What about IRC?

Have poked my head in a few rooms on a few servers before. Very lightweight and distributed protocol. I said "loosely" because only a subset of it will be implemented. <3