black.uprise
Hi all,
I’ve released Vicander 0.1.1, a DDD framework for Elixir built on behaviours and macros (modules are DDD.*).
The core idea is to lift Elixir’s great features to next level :}. Elixir is great but lacks proper library to put some good constraints on usage of data structures.
What I added is support for:
- Entities, aggregates, value objects, composable specifications (always valid domain entites)
- Commands and queries with typed params, filters, pages and cursor slices
- A transactional event outbox (retries, leases, dead letters, per-handler delivery tracking) for domain events
- Projections (read models fed by events, rebuildable based on history)
- Ecto/Postgres repositories behind a port, auto-generated by framework (similar to spring data repositories)
- An MCP server native support, so you can expose commands/queries and repositories through MCP server very easily (matter of configuration)
- mix vic.* tasks: migration generators, health, dead-letter tooling, projection rebuild
{:vicander, “~> 0.1”}
It’s a library: it starts nothing on its own. Set config :vicander, repo: MyApp.Repo and add {DDD.Supervisor, handlers: […]} to your supervision tree.
Example: vicander_examples (GitHub - blackuprise/vicander_examples: Example applications built with the vicander DDD framework · GitHub) is a full todo app with four layers and compile-time boundary checks. It has event-driven achievements and is served over MCP and a small HTTP API.
Status: PostgreSQL only for now; DDD.Dialect is the seam for other databases.
Hex: vicander | Hex
Docs: vicander v0.1.1 — Documentation
Source:
GitHub - blackuprise/vicander: Domain-Driven Design framework for Elixir · GitHub (Apache-2.0)
Feedback welcome, especially on the API shape and/or people want to join and contribute. In order to make it properly I would expect some help from community.
Regards,
Mika :}
Trending in Announcing
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #code-sync
- #discussion
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #blog-post
- #elixirconf-us
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #security
- #elixirconf-eu
- #api
- #forms
- #hex










