I'd quite possibly hire you for a mid-level developer position, perhaps with a little bit more pairing than for people with a more traditional trajectory. I wouldn't hire you unless I was confident that you'd be fully mid-level within 12 months. That said, the fact that you're active in open-source and have learned a lot on your own makes you a very strong candidate for that.
The above is, by the way, what you'll be facing. Based on what I've gleaned from your work, you're a strong candidate for mid-level front-end positions. No one is going to hire you for a truly junior position because of your age; but you're a strong candidate for mid-level work.
What else? First of all, I'm biased against business undergraduate programs. I don't hold it against the students (that's a decision made at 19-20, and you're a lot older than that) but I dislike the idea of undergraduate business majors. That said, you probably have stronger quantitative skills than most college graduates, and combining that with your front-end chops, I think you've overcome any bias there.
Also, you don't need a CS major to get a decent programming job. "Ivy League" (or the lack thereof) doesn't matter after 25.
You want to market yourself as a well-traveled "jack of all trades". You've taught. That's an extremely valuable experience. Most developers suck at teaching others, which is why they generate undocumented, poorly-structured code. You've learned a lot of skills on your own. That's a major plus. You write better than most engineers. Include that in your pitch. You've worked in the open source world. That's a bonus, too. You're probably overqualified (and too old, sorry) for truly junior/subordinate developer positions but you're a very strong candidate for the mid-level stuff that requires some leadership, aesthetic sense, and creativity.
You don't have the "rubber stamp" of a CS degree, but you have a lot of validations that matter more, in my opinion, so long as you can actually code (and it appears that you can). Learning a new skill at 28 is more indicative than having picked the right courses at 20, at least as far as I see it.