I have done this multiple time in different ways.
One thing that you need to be careful of is who you are building it for and how many options you give them. My first attempt at this was to do what you are planning
container => row => columns
allowing clients to create any number of columns. The UI became large and confusing for the client. How many columns, how wide is each column, column alignment, column spacing, etc, etc.
I have found that you need to simplify this, for example a layout with 1 column or 2 or 3 with limited settings for columns settings as well as any other settings that might be needed. Also limit it to only what they need to have.
If you are designing something for yourself or other developers that is different than designing something for non-developers to use. You may think that the concept and all of the settings make sense but in the hands of someone that does not already understand how bootstrap works or the terms used in BS it will be a nightmare to use. And they WILL NOT take the time to learn it and then you will find yourself either abandoning the idea completely or re-teaching people how to use it every time they use it.
That being said, I cannot give you any live examples because none of the themes I’ve built like this are publicly available.
They depend heavily on clone fields. For example I have a field group for “column content” that includes “heading”, “subheading”, “content” and “CTAs” that is cloned into all column fields. the “CTAs” in this group are actually a clone of a “CTAs” field group so that the client can insert predefined CTA buttons into any location where they can add content.
The column field group is then cloned into a “Layout Field Group” for example a “2 column layout” field group.
Each of the layout field groups is then cloned into the flexible content field.
There is another field group for “container layout options” that is cloned into every layout field group that contains things like container width (container/container-fluid) and other options that can be applied to every container.
What you are embarking on is a huge project and you need to think about how you will re-use everything and not duplicate fields. As well has how to keep is simple enough for your users so you don’t confuse them.
I would suggest that you read what other have done
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!