Here is a functional 3D software rasterizer that can render any obj file. Currently this runs horribly so i'm sure there's room for optimization.
Building a 3D software rasterizer is a wild way to learn graphics math, but handling the projection logic can get messy. I found using this fraction calculator https://edubrain.ai/fraction-calculator/ super helpful for debugging my coordinate scaling issues. It definitely beats scratching your head over manual ratios!