I'm pretty sure the proper way would be to use something like Grease Pencil with a Line Art
modifier—you might wanna look into that—but I'd like to showcase a method I use often: rendering viewport directly, WYSIWYG (what you see is what you get) style.
To get a look like your example, I'm following these steps below:
- Go to Preferences > Themes > 3D Viewport and change the Wire color, which controls the color of your edges, to pure white
- Under Preferences > Themes > 3D Viewport > Theme Space > Gradient Colors switch the Background Type to Single Color and make the gradient color pure black.
- In the 3D Viewport, make sure you're in Solid View mode. Open its options panel and switch the Background mode to Theme so it uses your theme settings you've just set

So, now your 3D Viewport is black, and your edges are white (you might wanna save that theme for later use). To not see faces, but only edges, you have a couple of options. You can simply enter into Edit Mode with your objects selected, select all with A, then X > Only Faces to delete all faces. You can keep that procedural with a very simple Geometry Nodes like this. Another option is to use the Wireframe mode instead of Solid, but that results in slightly dimmed whites for your edges and you can't pick and choose which objects get to be rendered as wireframe as you can in Solid.
That's about it. Blender has an option to render exactly what you see in the viewport called Viewport Render Image/Animation but it's not located in the Render menu, it's under View instead. It'll respect the settings in your Output Properties panel and if you're looking through a camera, it'll render what that camera sees:
