While I generally agree with the prevailing sentiment here I actually managed to implement a captive portal with surprisingly little trouble (ubuntu + haproxy). Use case was an offline WLAN where I needed to direct users through a specific flow / landing page. All up it was less than a day's research and work, plus the landing page build.
Found some decent resources in the process such as https://captivebehavior.wballiance.com/
Happy to provide further detail if anyone is interested.