banknet
Capstone – part of a larger project, with code to be used on a Raspberry Pi; not a website.
BankNet, a portable SIM-less micro ISP router
BankNet is a battery powered portable router that stores internet bandwidth locally and distributes it to connected devices as a small micro ISP.
The network banking concept and core modules
BankNet is a battery powered portable router that works as a micro ISP. The README introduces the idea of network banking, where internet bandwidth is stored locally as a usable quota and then distributed to connected devices even when the upstream connection is unstable. The project is presented as a prototype that demonstrates edge networking architecture, traffic shaping, and software defined routing built on Node.js and Linux networking tools, and it is inspired by satellite systems such as Starlink for how portable ISP nodes might operate in remote or intermittent connectivity environments. The core modules table lays out the responsibilities. The Bank Engine stores the bandwidth quota. The WiFi Manager handles the access point and uplink connections. The NAT Router routes packets to connected devices. The Traffic Controller handles bandwidth throttling and shaping. The Scheduler performs automatic network bank refilling. The API Server is the router control interface, and the Web Dashboard provides monitoring and configuration. These modules map directly onto the live system flow diagram in the README, which moves from upstream internet through an uplink manager and the network bank engine into traffic control, then the NAT router, and finally out to a WiFi access point and an Ethernet LAN that reach the client devices. The engineering highlights list embedded networking, Linux packet routing and NAT, bandwidth shaping, REST API design, edge computing, and portable ISP design as the skills the project demonstrates.
Installing and configuring the router
The README gives a simple install path built on Node.js. You clone the repository and change into it, then run npm install to pull dependencies, with an optional pip install from requirements.txt for the Python command line utilities. Starting the router is npm start. Configuration lives in config/config.yaml, and the README shows an example with a wifi block that sets the SSID and password, a bank block that sets capacity and a refill threshold, and a network block that sets a maximum speed. The web dashboard is served at http://localhost:8080 and lets you monitor the bank balance, manage the bandwidth supply, connect to upstream networks, view device activity, and check system health. There is also a command line tool: node src/cli/status.js reports system status, and you can point it at a custom host with environment variables for the host and port. The REST API table documents the endpoints, including GET on /api/bank/status, POST on /api/bank/refill, POST on /api/bank/speed, GET on /api/wifi/status, POST on /api/wifi/scan, POST on /api/nat/start, and POST on /api/scheduler/start. The repository structure separates the code into banking, wifi, nat, scheduler, api, web, and cli folders under src, with config and docs folders alongside, which makes the module boundaries from the core modules table visible in the file layout.
Hardware needs, performance, and roadmap
The README specifies the hardware the project targets and the performance it reports. The recommended CPU is a Raspberry Pi Compute Module 4 with 2 GB or more of RAM, 16 GB microSD storage, a dual band WiFi adapter, and a battery in the 10k to 20k mAh range. The battery table estimates 4 to 6 hours of runtime for a 10,000 mAh pack and 8 to 12 hours for a 20,000 mAh pack. The example performance benchmarks list a maximum throughput of 280 Mbps, support for 45 concurrent client devices, a bank storage capacity of 10 GB, a LAN latency of 3 ms, and power consumption of 6W. Upstream connectivity can come from satellite modules, WiFi uplink networks, Ethernet WAN, or future LTE and 5G support, which the README says lets the router function in remote or unstable network environments. The supply control section notes administrators can dynamically set bandwidth from 1 Mbps to 1000 Mbps for throttling, fair allocation, and preservation. Auto refill reconnects to upstream sources when the bank runs low, and LAN refill lets bandwidth be injected manually through Ethernet for offline networks, edge nodes, and disaster recovery. The development roadmap runs through five phases from a prototype with dual mode WiFi and basic banking, through core software with accounting and scheduling, hardware integration with battery and LAN refill, advanced networking with LTE and mesh, and finally a production phase with security hardening and documentation.
Editorial conclusion
BankNet is an Apache 2.0 licensed Node.js router that you start with npm install then npm start, and it serves a web dashboard at http://localhost:8080 for monitoring the local bandwidth bank.
Community notes