dwyl / alog

🌲 alog (Append-only Log) is an easy way to start using the Lambda/Kappa architecture in your Elixir/Phoenix Apps while still using PostgreSQL (with Ecto).
GNU General Public License v2.0
15 stars 2 forks source link

Example Apps #35

Open Danwhy opened 5 years ago

Danwhy commented 5 years ago

Our guide for creating an Append Only Log is good for explaining the concepts, but as an example is a bit abstract.

We should create a few (fairly) simple apps utilising this module to demonstrate its use. This will also allow us to foresee any potential problems before using it in more production apps.

If anyone has any ideas for example apps, please add them here.

@nelsonic Were the changes you had in mind for this module likely to involve large API changes? I know you were keen on potentially moving away from using macros, and if so it might make sense to wait until those changes have been implemented.

nelsonic commented 5 years ago

Hi @Danwhy, thank you for proactively opening this issue. 🥇

I agree that while the https://github.com/dwyl/phoenix-ecto-append-only-log-example is a good starting point (that other people in the Elixir community have already found useful 🎉), it is a bit "abstract" and needs to be evolved into a more complete example with a UI people can interact with similar to the "Chat" example: https://github.com/dwyl/phoenix-chat-example

Example Apps?

For the (sample) list of Apps we are going to build over the next few months to showcase our "67 Stack" please see: https://github.com/dwyl/technology-stack/issues/67#issuecomment-437145610

The reason I have not (yet) dived into building "example apps" is that we needed the CID https://github.com/dwyl/cid/issues/11 Now that CID has shipped https://hex.pm/packages/excid 🚀 We can re-focus on building Alog and ensuring that each entry has unique deterministic ID. Which will ensure we do not have duplicate rows (i.e. wasting database space) ...

Using CID in the append-only example and in alog does add a layer of "complexity" which will require a brief paragraph to explain to people, but I 100% think it's worth it. I hope this extra effort will become clear to other people in due course (or if not, please keep asking questions so we can clarify!).

Answer

Yes, we will require a few minor API changes to alog to facilitate our transition to using CIDs. I have hinted at these changes in other issues/answers and will attempt to summarise the API (though you will be leading the charge on implementing it so I expect you to use your superior Elixir/Ecto skills to come up with the elegant interface beyond my "overview" ...)

@RobStallion has opened a question that already has bit more detail on the API change question: https://github.com/dwyl/phoenix-ecto-append-only-log-example/issues/23

I will attempt to clarify this as much as I can over the weekend so that everyone is on the "same page".