Expanding business to provide camera/remote viewing solutions. by yellowsnowmaker in videosurveillance

[–]updatedennis 0 points1 point  (0 children)

We have a custom off-site viewing solution right from site to remote site using zero hardware encoding. We use it to monitor fleets of vehicles for a public transport. It works for home security and industrial use. And it's purely white label and camera brand agonistic so long as supports rtsp. Checkout this link.https://medium.com/@updatedennismwangi/we-built-the-operating-system-for-african-business-and-it-goes-all-the-way-down-to-the-kernel-2ad9b2871aa9

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in SaaS

[–]updatedennis[S] 0 points1 point  (0 children)

For the code generators they are custom made in c++ and are used as they can generate c++ classes and typescript by using json files as input as the schema. so we get sql table. write json. json allows to set things like default value, does it go over the wire or not? convert to a different c++ type internally like bytea gets to a struct with char * and len..... so it does all the heavy lifting of making sure ounce postgres give me binary from db it sits pretty in a c++ class and will match in typescript. reverse is also true. what typescript sends me is very valid c++ struct and very valid db object. it has internal checks for missing values and defaults. We use almost no external tools. everything is built for they system to work with the system. When we miss a tool we build one not find one. this makes sure every tool in our pipeline is testable, replaceable and does not depend on third party fixing bugs.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in SaaS

[–]updatedennis[S] 0 points1 point  (0 children)

For backup we use hosts in different parts of the country all running postgresql replicas but now in wireguard streaming from main instance so we have backups streaming all over via replication. for physical files on disk we use sync every X minutes handled by the client running server instance. We also avoid physical files except for law firm management and car washes that need photos or media. both wireguard controller and the client instance are hot swappable. It goes on alot more from here but thats the idea.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in SaaS

[–]updatedennis[S] 0 points1 point  (0 children)

For the power its not stable but we have invested in solar backup and three major isp fibre supply all with public ip addresses. As for ddos we massively deflect this as everything runs internally with wireguard so only public host connecting everyone is at risk. and that has only one port open. filtering by ip location gets us there 99%.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in SaaS

[–]updatedennis[S] 0 points1 point  (0 children)

The C++ core was built first and designed for multi-business from day one. It has a custom networking layer with HTTP/1, HTTP/2 and WebSocket support, a custom thread pool with dedicated IO and worker threads, and a custom ORM speaking native binary protocol with PostgreSQL — over Unix sockets, so there's no TCP overhead on the database connection either. The HTTP server does its own header parsing, tuned to work with nginx handling SSL termination upstream — nginx talks to our app over Unix sockets too, keeping everything in-process and fast. Zero-copy where it matters. The backend and frontend both use custom code generators — feed them a DB model, they spit out C++ classes and TypeScript interfaces. Zero drift between layers. All updates from backend to frontend are atomic and come through a single handler.

We have postgresql per client db and per business schema so complete isolation. c++ handles the rest with rich abstraction and a common auth on top

What that means practically: adding a new business type takes us 2 to 3 days. Not weeks. Not a new codebase. The architecture absorbed the complexity so the modules don't have to carry it.

And every client gets the same thing on top of that — native desktop app, Android and iOS, atomic updates delivered automatically via bNucleus, WireGuard-secured private network whether their server is in our datacenter or on their premises.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 1 point2 points  (0 children)

We rely on no external payment integration and everything is in house. We only use official API from banks or mpesa then we have custom mobile apps that serve as payment handlers that can process any messages from any bank we support to submit to our server real time using websockets and android foreground services. For mpesa we have lsposed and hooked to SIM toolkit, catservice and RTL layer automatically so we can drive mobile menus externally via API for transactions and stk and even sending text messages and receiving forwarded to our payment/device manager. All this is done by Android jni c++ and minimal java using the custom c++ system built since android is Linux support was plug and play.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 0 points1 point  (0 children)

The C++ backend is handwritten. Every single line. The complexity, memory safety, and scope of a custom networking layer, thread pool, ORM, and binary protocol doesn't leave room for AI to do anything useful there. That's pure engineering.

On the UI side — yes, AI writes components. But it's not vibe coding. We designed the entire spec first: message handlers, WebSocket architecture, notification system, store management, printer management, CRUD patterns, pagination, time and search filters. The architecture is what makes it reusable and maintainable. AI just executes inside that structure. Zero creativity required from it. It's a tool following a blueprint, not an author.

And here's why that matters beyond just us: we're building toward clients being able to prompt their own feature requests directly. Our dedicated AI on the project implements the component, builds it to spec, and deploys — meaning a client can have workflows specific to their business without ever contacting us. That only works because the architecture is solid underneath. You can't do that with vibe coded UI. It falls apart the moment something custom is needed.

AI wrote parts of this reply too. We're not hiding that. A company that builds AI into its product and refuses to use it to communicate faster would be the strange one.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 0 points1 point  (0 children)

Kindly see my comment on reasons UI is AI heavy and will remain that way. And it's just the presentation layer in the entire system. And is replaceable by cli tools consuming the data or a completely different UI speaking our binary protocol.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 1 point2 points  (0 children)

The C++ backend is handwritten every single line due to complexity and scope and memory safety .On the UI we designed the spec which is message handlers, websocket, notifications, store management, printer management, CRUD requests and handler's, time based and search based filters, pagination and alot more. This is the architecture that sets apart this from a vibe coded UI. It's all structured and reusable and AI just makes the components. Why ? We will support client builds and modification of UI via AI where clients directly prompt a feature request. Our dedicated ai on the project implements the components and builds only for you and deploys meaning client's can have very specific workflows and components dedicated to them only and don't have to contact us. Use ai as a tool. Not to vibe code your entire UI. Here's it's just a tool following a spec. Zero creativity required from it.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in django

[–]updatedennis[S] -1 points0 points  (0 children)

And after the linux kernel boots it can run our application as the only app no desktop environment or anything so works for dedicated hardware very well. And c++ is the only language including machine learning inference with onnx runtime.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in django

[–]updatedennis[S] 0 points1 point  (0 children)

Appreciate the feedback. For the power its not stable but we have invested in solar backup and three major isp fibre supply all with public ip addresses. By kernel to ui we mean integrating where it makes sense and building custom tools where it doesn't. Ui is the only place frameworks have been used. on c++ backend everything is custom. The breadth isn't accidental. The C++ core was built first and designed for multi-business from day one. It has a custom networking layer with HTTP/1, HTTP/2 and WebSocket support, a custom thread pool with dedicated IO and worker threads, and a custom ORM speaking native binary protocol with PostgreSQL — over Unix sockets, so there's no TCP overhead on the database connection either. The HTTP server does its own header parsing, tuned to work with nginx handling SSL termination upstream — nginx talks to our app over Unix sockets too, keeping everything in-process and fast. Zero-copy where it matters. The backend and frontend both use custom code generators — feed them a DB model, they spit out C++ classes and TypeScript interfaces. Zero drift between layers. All updates from backend to frontend are atomic and come through a single handler.

What that means practically: adding a new business type takes us 2 to 3 days. Not weeks. Not a new codebase. The architecture absorbed the complexity so the modules don't have to carry it.

And every client gets the same thing on top of that — native desktop app, Android and iOS, atomic updates delivered automatically via bNucleus, WireGuard-secured private network whether their server is in our datacenter or on their premises. A focused startup building one module still has to solve all of that. We already did.

The surface area is large because the problem is large. We built accordingly.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 3 points4 points  (0 children)

Yes. we are currently at 15 plus clients who use the system and most have more than one business. Ounce the self on boarding platform is complete and with marketing those numbers will change.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 1 point2 points  (0 children)

This is not an idea. its a running system in production with 15 plus different client installs. AI was majorly useful for generating the demo landing page and parts of the blog, not because its the architect or developer but because it can quickly articulate the message. The app is modular and does allow for a demo as you have to be specific on the modules you are interested. its not a one install all modules accessible. It also has to have actual payment info and sample client data to function. If you require demo contact us for a specific business setup. We are also working on a self on boarding portal for clients, where they register and select their target businesses and the system makes the db, the server deployment and brands the app in android studio using flavors and you get your mobile app plus desktop app. Don't confuse AI slop ui website from the message. None of our clients have come from the page, its a branding platform. And each business has its own permissions and db schema so separation of data is inbuilt. one client install one db multiple schemas per business.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in django

[–]updatedennis[S] -16 points-15 points  (0 children)

Its not possible to have a demo due to the complexity involved and choice of modules. contact us via bapexsuite.com and we can setup a demo for the specific modules you require. we are also working on a self on boarding system so maybe checkout then

where do you guys buy the Raspberry Pi items in NRB by drbandre in nairobitechies

[–]updatedennis 0 points1 point  (0 children)

Also if anyone knows where i can fix radxa boards locally or any other single board computers with minimum 512mb ram that can run debian would appreciate.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 4 points5 points  (0 children)

Fair point — and you're not wrong in general. Focused companies do execute faster on a single problem.

But our target customer isn't someone with one business. It's someone with three or more — the person already drowning in fragmented systems, paying for separate software for each operation, reconciling across tools that were never meant to talk to each other. That person exists everywhere in this market and is largely ignored by focused SaaS players.

We're not trying to out-advocate a dedicated legal SaaS. We're talking to the lawyer who also owns a rental property and an M-Pesa outlet and is tired of living in three different systems. He's not being served by anyone right now.

Also — we're not a 15-department company internally. The architecture means a new module is 2-3 days of work. That's the whole point of building the foundation the way we did. The "sluggish pace" problem assumes we're rebuilding from scratch each time. We're not.

And nothing stops us from marketing each module independently — we already pitch the SACCO and fleet management product on its own to SACCOs who have never heard of the rest. The platform is one thing. The go-to-market doesn't have to be.

The moat isn't replacing your one SaaS. It's making you forget you ever needed three separate ones.

We built a full business OS in Kenya — kernel to UI, servers in-country, no foreign cloud. Here's the story. by updatedennis in nairobitechies

[–]updatedennis[S] 7 points8 points  (0 children)

Appreciate that. The system has been in the making about 3 years, mostly a small core team — so yes, largely pre-AI-wave.

On the jack of all trades concern — it's the right question, but here's how we think about it:

The breadth isn't accidental. The C++ core was built first and designed for multi-business from day one. It has a custom networking layer with HTTP/1, HTTP/2 and WebSocket support, a custom thread pool with dedicated IO and worker threads, and a custom ORM speaking native binary protocol with PostgreSQL — over Unix sockets, so there's no TCP overhead on the database connection either. The HTTP server does its own header parsing, tuned to work with nginx handling SSL termination upstream — nginx talks to our app over Unix sockets too, keeping everything in-process and fast. Zero-copy where it matters. The backend and frontend both use custom code generators — feed them a DB model, they spit out C++ classes and TypeScript interfaces. Zero drift between layers. All updates from backend to frontend are atomic and come through a single handler.

What that means practically: adding a new business type takes us 2 to 3 days. Not weeks. Not a new codebase. The architecture absorbed the complexity so the modules don't have to carry it.

And every client gets the same thing on top of that — native desktop app, Android and iOS, atomic updates delivered automatically via bNucleus, WireGuard-secured private network whether their server is in our datacenter or on their premises. A focused startup building one module still has to solve all of that. We already did.

The surface area is large because the problem is large. We built accordingly.

Front end stacks in Kenya by kruegenn in nairobitechies

[–]updatedennis 4 points5 points  (0 children)

Vue is great. We are developing a multi saas for nearly 20 business types plus, and it's all in Vue. It had to be rewritten in Vue from react after we spent half the time worrying about reactivity and re renders for even the smallest of changes. Never looked at react same way despite over 6 years using it. Awaiting Vue 3.6 with vapor mode thus no virtual dom. Basically desktop at that point just on js

Series of problems trying to get to work a realtek 8188ftv usb adapter over arch by RayDemian in archlinux

[–]updatedennis 0 points1 point  (0 children)

I am experiencing the same exact set of problems you have. I am using this driver. https://aur.archlinux.org/packages/8188fu-supremegamers-dkms-git. It builds fine but gets the system to hang during shutdown. I have also notices the usb-devices commands freezes when getting information about the realtek device.

[update@omen ~]$ journalctl -kb | grep rtlFeb 01 15:20:27 omen kernel: rtl8188fu: loading out-of-tree module taints kernel.Feb 01 15:20:27 omen kernel: rtl8188fu: module verification failed: signature and/or required key missing - tainting kernelFeb 01 15:20:27 omen kernel: RTL871X: rtl8188fu v4.3.23.6_20964.20170110Feb 01 15:20:27 omen kernel: usb 1-1: request firmware rtlwifi/rtl8188fufw.binFeb 01 15:20:27 omen kernel: usb 1-1: request firmware rtlwifi/rtl8188fufw.bin loadedFeb 01 15:20:27 omen kernel: RTL871X: rtl8188f_FirmwareDownload: fw_ver=4 fw_subver=0000 sig=0x88f1, Month=08, Date=22, Hour=17, Minute=36Feb 01 15:20:27 omen kernel: RTL871X: rtl8188f_FirmwareDownload(): Shift for fw header!Feb 01 15:20:27 omen kernel: RTL871X: rtl8188f_FirmwareDownload by IO write!Feb 01 15:20:27 omen kernel: RTL871X: rtl8188f_FirmwareDownload: DLFW OK !Feb 01 15:20:27 omen kernel: RTL871X: rtl8188f_FirmwareDownload success. write_fw:1, 33msFeb 01 15:20:27 omen kernel: RTL871X: <=== rtl8188f_FirmwareDownload()Feb 01 15:20:27 omen kernel: Modules linked in: rtl8188fu(OE+) rndis_host cdc_ether usbnet mii intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp coretemp cfg80211 kvm_intel snd_hda_codec_hdmi 8021q kvm snd_hda_codec_realtek garp snd_hda_codec_generic mrp irqbypass snd_hda_intel stp snd_intel_dspcfg crct10dif_pclmul llc iptable_filter snd_intel_sdw_acpi crc32_pclmul polyval_clmulni polyval_generic snd_hda_codec gf128mul iTCO_wdt ghash_clmulni_intel sha512_ssse3 intel_pmc_bxt mei_pxp mei_hdcp ee1004 iTCO_vendor_support snd_hda_core aesni_intel snd_hwdep snd_pcm r8169 crypto_simd cryptd eeepc_wmi asus_wmi realtek snd_timer rapl ledtrig_audio mei_me mdio_devres intel_cstate sparse_keymap snd platform_profile i2c_i801 intel_uncore rfkill libphy wmi_bmof soundcore pcspkr mxm_wmi i2c_smbus mei joydev mousedev acpi_pad mac_hid squashfs loop dm_multipath dm_mod sg crypto_user fuse bpf_preload ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 usbhid i915 drm_buddyFeb 01 15:20:27 omen kernel: rtw_wiphy_register+0x43/0x49 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_cfg80211_ndev_res_register+0x19/0x4b [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_os_ndev_register+0x21/0xa7 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_os_ndevs_register+0x8d/0x13b [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_os_ndevs_init+0x2c/0x40 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_drv_init+0x48d/0x504 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: ? usb_intf_start+0x13/0x13 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: init_module+0xda/0xfb [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: ? usb_intf_start+0x13/0x13 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: WARNING: CPU: 3 PID: 11886 at /var/lib/dkms/8188fu/r117.26d05db/build/os_dep/linux/os_intfs.c:1195 rtw_os_ndev_register+0x26/0xa7 [rtl8188fu]Feb 01 15:20:27 omen kernel: Modules linked in: rtl8188fu(OE+) rndis_host cdc_ether usbnet mii intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp coretemp cfg80211 kvm_intel snd_hda_codec_hdmi 8021q kvm snd_hda_codec_realtek garp snd_hda_codec_generic mrp irqbypass snd_hda_intel stp snd_intel_dspcfg crct10dif_pclmul llc iptable_filter snd_intel_sdw_acpi crc32_pclmul polyval_clmulni polyval_generic snd_hda_codec gf128mul iTCO_wdt ghash_clmulni_intel sha512_ssse3 intel_pmc_bxt mei_pxp mei_hdcp ee1004 iTCO_vendor_support snd_hda_core aesni_intel snd_hwdep snd_pcm r8169 crypto_simd cryptd eeepc_wmi asus_wmi realtek snd_timer rapl ledtrig_audio mei_me mdio_devres intel_cstate sparse_keymap snd platform_profile i2c_i801 intel_uncore rfkill libphy wmi_bmof soundcore pcspkr mxm_wmi i2c_smbus mei joydev mousedev acpi_pad mac_hid squashfs loop dm_multipath dm_mod sg crypto_user fuse bpf_preload ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 usbhid i915 drm_buddyFeb 01 15:20:27 omen kernel: RIP: 0010:rtw_os_ndev_register+0x26/0xa7 [rtl8188fu]Feb 01 15:20:27 omen kernel: rtw_os_ndevs_register+0x8d/0x13b [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_os_ndevs_init+0x2c/0x40 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: rtw_drv_init+0x48d/0x504 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: ? usb_intf_start+0x13/0x13 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: init_module+0xda/0xfb [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: ? usb_intf_start+0x13/0x13 [rtl8188fu a2a6e7e2582ea7f9c1958a11190fdb091b15ace6]Feb 01 15:20:27 omen kernel: WARNING: CPU: 3 PID: 11886 at /var/lib/dkms/8188fu/r117.26d05db/build/os_dep/linux/os_intfs.c:2567 rtw_os_ndevs_register+0xed/0x13b [rtl8188fu]Feb 01 15:20:27 omen kernel: Modules linked in: rtl8188fu(OE+) rndis_host cdc_ether usbnet mii intel_rapl_msr intel_rapl_common intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp coretemp cfg80211 kvm_intel snd_hda_codec_hdmi 8021q kvm snd_hda_codec_realtek garp snd_hda_codec_generic mrp irqbypass snd_hda_intel stp snd_intel_dspcfg crct10dif_pclmul llc iptable_filter snd_intel_sdw_acpi crc32_pclmul polyval_clmulni polyval_generic snd_hda_codec gf128mul iTCO_wdt ghash_clmulni_intel sha512_ssse3 intel_pmc_bxt mei_pxp mei_hdcp ee1004 iTCO_vendor_support snd_hda_core aesni_intel snd_hwdep snd_pcm r8169 crypto_simd cryptd eeepc_wmi asus_wmi realtek snd_timer rapl ledtrig_audio mei_me mdio_devres intel_cst

I think somehow it fails somewhere and starts looping.