Ok. Using uci, you could set e.g. (assuming 12 would be the single CPU that functions as internal trunk, use 'swconfig dev switch0 help' to see which port(s) are your CPU(s) ). Note that you can also do this in the Luci UI (under switch) graphically...
Then, as example for VLAN1, use 'uci set [key]=[value]"
network.@switch[0]=switch
network.@switch[0].name='switch0'
network.@switch[0].reset='1'
network.@switch[0].enable_vlan='1'
network.@switch_vlan[0]=switch_vlan
network.@switch_vlan[0].device='switch0'
network.@switch_vlan[0].ports='0 1 3 4 5 6 7 12t'
network.@switch_vlan[0].vlan='1'
and continue with the others, notice the -t for non-pvid vlans on trunk
Then assign matching 802.1q devices (starting from 1 here, assuming the br-lan is already in place).
Note that you can do this also in the Luci UI (under Interfaces, with it's sub tabs) graphically...
network.@device[1].name='eth0.1'
network.@device[1].type='8021q'
network.@device[1].ifname='eth0'
network.@device[1].vid='1'
network.@device[1].name='br-vlan1'
, and continue with the others...
Then assign the interfaces...
network.VLAN1=interface
network.VLAN1.proto='static'
network.VLAN1.ipaddr='192.168.1.1'
network.VLAN1.netmask='255.255.255.0'
network.VLAN1.device='br-vlan1'
Then assign the services, e.g. (not in your config, just made it up as example).
This can also be set graphically in Luci UI under Network -> DHCP and DNS
dhcp.VLAN1=dhcp
dhcp.VLAN1.interface='VLAN1'
dhcp.VLAN1.start='100'
dhcp.VLAN1.limit='150'
dhcp.VLAN1.leasetime='12h'
dhcp.VLAN1.ra_flags='none'
, and continue with the others...
Then set up dnsmasq - best to refer to https://openwrt.org/docs/guide-user/base-system/dhcp
Finally, don't forget the uci commit !
Hope that clarifies.