bitcrowd

bitcrowd

Surveyor & Assay - toolkit for legacy rewrites, looking for friendly users (esp. Phoenix + JS SPA teams eyeing LiveView)

Hi all,

Wanted to share two tools we’ve been building plus a request for friendly users — the request is at the bottom.

Surveyor (Mix project): point it at a codebase, walks you through system context, containers, components, generates a C4 diagram, calls out to an LLM for the inferential parts but flags everything with a confidence level so you can accept / edit / retry. Output is a workspace.dsl you can render in Structurizr, with each component decorated with assay.specs and assay.schema properties.

Assay: small behavioral spec runner. *.assay files in plain text, component-scoped step matching (so step namespaces don’t collide across bounded contexts), pre-check before execution (no half-run scenarios leaving test data behind), and per-scenario state in the process dictionary. Bindings are just Elixir modules — bring whatever you need (Req, AMQP, System.cmd, …). The same spec runs against --target legacy and --target new. Green on both = the rewrite is behavior-equivalent for what you covered.

Write-up: Surveyor
Companion piece on reading legacy code: field guide

The ask.

We’re running a friendly user trial. Sweet-spot profile is Phoenix + Ecto backend, a JS SPA (React, Vue, Svelte, anything) on the frontend, with a LiveView migration either in active planning or in the “we keep talking about it” stage.

You can continue to use the tool afterwards, and you walk away with three artefacts you keep:

  • C4 architecture diagrams of your system — context, containers, and components per container
  • MADR style decision records extracted from your codebase
  • Detailed behavioural specifications per bounded context, in plain text your PO can read and your engineers can run against the live system
  • An automated rewrite estimate, broken down by bounded context, grounded in what’s actually in your codebase — not gut feel

If that’s roughly your situation, please DM or reply. Happy to answer anything about the design choices in either tool.

Where Next?

Popular in Announcing Top

tmbb
PhoenixWS - Websockets over Phoenix Channels Source code on Github here: GitHub - tmbb/phoenix_ws: Websockets implemented over Phoenix Ch...
New
martinthenth
Hello everybody :wave: Recently, some of my colleagues talked about database ids and uuids and their problems, and I remembered the pain...
New
mischov
import Meeseeks.CSS html = HTTPoison.get!("https://news.ycombinator.com/").body for story <- Meeseeks.all(html, css("tr.athing")) do...
New
bluzky
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...
384 14136 119
New
zorbash
I created Kitto a framework for dashboards inspired by Dashing. The distributed characteristics of Elixir and the low memory footprint...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52673 488
New
blatyo
The best overview for how things are tied together is this presentation. Modules and functions are pretty well documented at this point, ...
New
mbuhot
Leverage Open Api 3.0 (Swagger) to document, test, validate and explore your Plug and Phoenix APIs. Generate and serve a JSON Open API ...
New
mplatts
With HEEX released we decided to start a components library using Tailwind CSS - check it out here: Petal Components. We also have a boi...
New
New

Other popular topics Top

New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43757 214
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54120 245
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

We're in Beta

About us Mission Statement