Heading out soon so I'll give you a bit to go off on in the time I have. Feel free to reach out to me (profile) for more info.

Since you've been programming since 12, I can say you are far far better off than many of us already. I for instance, got my first computer around 15 and had to learn how to drag a mouse around a screen, touch type, and use the internet.

What you need to realize is while you also need technical skill, when you're starting out, that's really not the most important thing. Very quickly you will learn that many people are looking down on you or see you as an incredibly cheap deal. You're a dropout, and it may sound crude, but no one cares about your life or your problems. They really don't. They probably think you're some lazy kid who is money hungry. But it doesn't matter. Most of these people will NEVER hire you. And that's okay; ignore them. Many people still need the skills you have, no matter how refined those skills may be. Now you have 2 main barriers to getting them to pay you.

1. How do these people find you? Do they type into "the Google" and find your beautiful portfolio and contact you? At this point, perhaps not. Perhaps you need (shocking, I know), to get off the internet and meet them before they even do that.

2. Can you solve their problem? You may not have a portfolio, and it wouldn't matter, except how do they know whether you can solve their problem? I don't care how you accomplish this, but that's all really all they want to know. You'd be surprised how a simply/ugly static HTML page can blow the mind of certain people. Many do not even know what they need to be able to hire someone online to do it for them. Just using email is enough of a hurdle.

Some information about myself. I got my first computer around 15 years old, learned to use it, and was interested in web development, so by 16 I was doing simple websites in PHP/HTML/CSS along with small bits of copy/paste Javascript. I moonlighted during high school (at which time my poor family got sued for no legitimate reason), paid off a lawsuit, and started 2 small side businesses.

One was a private server for a small online game. A small online game you say? What does that have anything to do with web dev? It doesn't, I enjoyed the game and did it. But it did help me immensely with not ending up on the streets, I used my web dev skills to improve it and built a community around it, and made a bit of money. Most importantly, I met many people who could later act as testimonials to their friends and family of my web development skills. Most of this stuff happened the same time I was refining my technical skills.

The second venture was started because of one of the players on the server. He referred his friend to me who had a business idea but was unable to execute without programming knowledge. We built 2 large online communities and made a portion of a million dollars in advertisements and sponsorships. This later allowed me to officially start the freelance business I have now (I just turned 21). Which allowed me to secure multiple full-time offers at reputable companies despite my (lack of) credentials, speak at some local events, and charge significantly more (aka bring more value) than I ever imagined I would back at 15.

Enough about me, let's get back to you. At this point, the biggest skill you need to learn is not technical, it's learning how to influence, persuade, and prove to potential clients that you can do the job. I have to get going so I'm going to stop here, but you most definitely have everything you need to be successful as a freelancer, don't let anyone tell you you don't.

But it takes a heck of a lot of determination and hard work.

P.S: If you're really unable to find your first client, I do have a small project making doing some front-end work for a website. Very simple HTML/CSS/JS stuff that I was planning to give off to a friend to learn. But please, do everything and anything you can to find that first client yourself. It will help you a lot more in the long run than people on HN feeding you projects. Good luck!