How I made my iPhone app: from idea to app store

Reader Tracker Screens

My first iPhone app, Reader Tracker, is officially available in the iPhone/iPad App Store! It’s been a long journey from idea to app store (much of which was spent distracted by other half-finished projects) so it’s very exciting to finally see a finished product available for sale.

Coming from a non-technical background, I wanted to show the work that got an app into the App Store. There are numerous articles imploring “idea” entrepreneurs to stop searching for a technical co-founder and to hire freelance. And this is another one of those articles. While building an iPhone app is a bit different than building a website/web application, the principals are the same.

As you can see if you’ve checked out the website, Reader Tracker is a fairly simple application but it taught me a lot about how to communicate my ideas and bring them to life. Next goal: ramp up the scale and build a larger web application.

(Many of the product links use my affiliate code.)

Having an Idea/Learning to Code

I came up with the idea for Reader Tracker after getting a Kindle and starting to read a lot more. I wanted a simple application to keep track of all the books that I read. I had decided to tackle a randomly chosen Top 100 books list, and wanted to see what I’d read, when I’d read it, and be able to sort the list. I jumped on my iPhone and I scoured the App Store for an app, but was unable to find anything I considered worthwhile.

Then I thought, “I should just make the app.”

And then the idea sort of fizzled out from there. I didn’t have any background in programming and wasn’t sure where to even start. I figured an app that would track books wouldn’t be too hard to build (judging by the complexity of almost everything else in the app store), but that was the extent of my knowledge.

I decided that I finally needed to learn to program, and that I would teach myself coding by learning to code for the iPhone. Once I learned how to program, I could create the app that would eventually be Reader Tracker.

I ran to the store (I jumped online) and picked up iPhone Application Development For Dummies and iPhone and iPad Apps for Absolute Beginners. With my usual new-project gusto, I jumped in headfirst. I think I started with iPhone and iPad Apps for Absolute Beginners. I got through the intro and the first chapter and was quite proud of myself for understanding the technical aspects of the book. But soon the book gave a warning: a basis in programming would be required. Then we started getting into the details of Objective C (the programming language used in native Mac apps) and I stuck with it as best I could but I started getting lost. I had no background in any programming language. So I followed through the book a bit, as best I could, but eventually got too confused in the language and stopped retaining any information. Same thing with the Dummies book: I’d only be able to get so far before my brain stopped working. Xcode was big and scary.

I needed a foundation in programming, as each book suggested. But where should I start? After kicking myself for getting my bachelor’s degree in English and not Computer Science, I headed to Lynda to see what classes were offered. I settled on a PHP class, mostly because I had a little experience with WordPress, I knew that PHP was widely used, and I figured it would definitely come in handy. Plus, from what I had read, it was a little easier to learn than Objective C.

So, I came into work early for a couple weeks, watching a few lessons in the office before anyone else showed up. There were a ton of “ohhhh, wow, that makes so much sense!” moments. I gained a much better conceptual understanding of programming in general, with a hint of PHP. I could now look at PHP elements, such as the WordPress loop and understand what it was, how it (generally) worked, and why it was necessary. I started understanding the difference between a server and a database and the way in which code works to serve HTML and store/access data in the database. I still wasn’t confident enough to write code myself, or make extensive edits, but it was a start.

Excited, I got the Lynda iPhone development class. Again, I just started getting lost once talk got into Objective C. I’m sure that if I had really buckled down and focused all my energy on figuring it out, I’d get it. However, a different idea came to mind.

This is when I decided I learn better in a classroom.

Procrastination

I signed up for an iPhone and iPad app development class through NYU. I’d been about three years out of undergrad and missed the classroom learning environment. I convinced myself that this is what I needed to finally learn to code iPhone apps. I needed to get back into a classroom if I was ever going to make an iPhone app.

This, of course, was procrastination. There are so many elements to building an application, and I was harping on the coding when I could have been busy with putting together a list of features, putting together the UX, producing mockups and wireframes, and doing all the graphic work. Instead, I put off all this real work in order to sit in a classroom and review the intricacies of Xcode and Objective C.

That is not to say that my time in the iPhone and iPad App Development class was a waste of time (although I did drop out fairly fast and got a full refund). By going to the class and performing the exercises, I learned enough to make my way through Xcode and I gained knowledge of where to find resources and code to pull into an application. The short time I spent in that class allowed me to go back to my books with a bit more context and with the ability to look at code and get a general idea of certain functions and procedures.

I also learned enough about programming to realize that coding this application was not how I wanted to spend my time. The idea, again, went on the back burner.

Doing the Work

Here is an overview of my basic workflow: my typical idea will start off in my head, where I’ll work out a few details such as basic UX, features, and basic design. Then, I’ll head to Google Docs, where I’ll create a new document and record the idea and start creating bullet points of features that I want. Everything I can think of related to the project, such as resources, inspiration, and links, goes into this document. I’ll spend a few days reviewing this list, talking to friends about the idea, and getting everything out of my head and into something tangible. My workflow then moves onto my iPad.

First, I’ll start with Penultimate, using an iPad stylus  to draw an extremely rough page-by-page mock-up and write notes about each feature and function. These mock-ups aren’t shared with anyone, so they’re usually sloppy and messy and only legible to me. I’ll keep my list of desired features close at hand, so I can work them into each page, and decide how a user will get from one page to the next or perform certain functions.

Next, I’ll send that PDF to my computer, and while that’s on my computer screen, I’ll open iMockups on my iPad and create the nice and pretty version of the mock up. This is where I get a better understanding and vision of the final product, and really get down to the details of every button, field, and feature.

In terms of the Reader Tracker app, it wasn’t until I was attempting to enter a much larger project into iMockups that I came back to my book tracking app idea. I had created the list of features when I first had the idea. So when I needed a brain break from this large project, I decided to get the (then unnamed) Reader Tracker into iMockups.

In about two hours, I had the entire wireframe complete. This is when I got excited, because all I needed was to find and hire a developer. I could finally see a project through to completion.

Finding the Freelancer

I’ve always been a big fan of Envato ever since stumbling upon Theme Forest. It’s absolutely perfect for quickly creating a tangible form of an idea, because I can usually buy a domain through a registrar for less than $10, a theme from Theme Forest for less than $15, spend a few hours setting it up, and have a professional looking website.

I was bumming around CodeCanyon‘s iPhone section when I stumbled across a great-looking project and saw the author was quite active and articulate when responding to comments. I immediately shot him an email to see if he took on freelance work and to get his rates. His hourly rate was reasonable and after a little more vetting, I decided I wanted to work with this freelancer. However, I still didn’t know how long my project would take, and thus didn’t know how much it would cost me.

Being new at hiring a coder, I wanted to make sure I covered all my bases. I asked if he wouldn’t mind singing an Nondisclosure Agreement. Then I hopped onto Google and found an NDA generator [UPDATE: just use Docracy!], created the NDA, and sent it over his way. After receiving a signed copy back, I sent over the app wireframe in the form of a PDF export from iMockup.

He said he could have the project finished by the end of the week. We negotiated payment, settling on $500, and I sent over half up front and agreed to pay the second half upon delivery. I sent the money immediately and production got underway.

Graphic Work

While my freelance coder got to work, I started working on the graphics for the app. Reader Tracker is not an image-based application, but it still needed a default.png as well as all the icons. I went to Google and started searching for royalty-free vector art (since I wanted a vector-style look rather than actual photography). I easily found a few great resources for free vector art, verified that the images I liked were licensed for both personal and professional use, and picked my favorite one. I put that vector on a free background, added some effects, picked a font for the text (from Google Web Fonts) and that was that.

All in all, I spent around four or five hours designing both the default.png and the icon, as well as saving each of these files to the numerous different size specifications as instructed by Apple.

Once I completed all this graphic work, I bundled it together in a zip file and sent that off to my coder.

Landing Page

A landing page for an iPhone app can be completely unnecessary. That being said, there was no way my app wasn’t going to have a slick looking landing page. I have a lot of fun buying and setting up simple websites and I’ll find any excuse to buy a domain name and set something up. Plus, a landing page would come in handy once I started reaching out to people and promoting the app.

My app, however, still didn’t have a name. I spent a little time brainstorming a name using Ajax Whois (an amazing tool to quickly check to see if a domain name is available [UPDATE: no longer available]). After a bit of playing around, I settled on ReaderTracker.com. I registered the domain through GoDaddy, though I’ve since switched everything to Namecheap since the whole SOPA debacle. I’ve got a hosting account that allows multiple domains, so I can just tack any new domains onto my current hosting plan and start building.

I headed to ThemeForest to find an app related landing page. I found a few I liked, bookmarked them, and eventually chose AppShow. It only cost $8. As soon as I had the theme, I uploaded it to my server and started entering my own copy. At this point, I didn’t have a working version of the app, so I couldn’t put any screen shots into the embedded slideshow. So I just took my default.png image, resized appropriately, and popped it in place.

This entire stage probably took between 5-6 hours, including time spent browsing ThemeForest, brainstorming copy, writing copy, editing pictures, creating logos, and uploading everything to the server. It only cost me a total of $8.

Snags

The original version of my app was going to link to Amazon’s API in order to auto-pull book cover art. The coding was supposed to be finished in a week, but after a week and a half of waiting I got the news that integrating Amazon’s API was more difficult than my developer has originally anticipated. I had the choice to either wait a bit longer and he’d continue trying to work it out, or we could renegotiate the price without this feature. I chose the latter.

This was a fairly easy decision despite really wanting some form of automation in the app. In the back of my mind, through this entire process, was Minimum Viable Product. I wanted to get the most bare-bones version of an app in my possession and submitted to the App Store. Once I had this, I would solicit feedback, make a list of features to add, and then slowly add to the app by either teaching myself and/or hiring more freelancers. I could acquire users and them impress them with the free and feature-filled updates. I’d work based on feedback rather than assumption.

There was plenty of time to add additional features. At that point, I just wanted a product to launch.

Becoming an iOS Developer

In order to be an official iOS developer and list your apps in the App Store, you need to pay a $99 yearly fee. I waited until I had the final version of the app in my hands before buying into the Developer Account. That way I could immediately upload my app to the app store…or so I thought.

As I’m sure many of you can attest to, the process for signing up as a seller in the App Store is extremely convoluted and confusing. Not to mention the process of adding and uploading an app into iTunes Connect.

It was late evening, after a long day of work, when I sat down to set up my developer account and get my app submitted. Two hours later, after many a furrowed brow, I thought I had everything set up, but I honestly had no idea if everything was correct or just appeared to be. A few of the questions required me to Google terms so I’d know what option to select, and I still wasn’t sure I had it right. And I consider myself fairly well-versed in these types of things. I’ve filed my own taxed for a few years now and I’ve definitively read more than a few articles on accounting. But setting up an Apple developer account was a whole different beast.

I still hadn’t uploaded the app, at this point I just had the app metadata entered into iTunes Connect and waiting for upload. I decided that my brain hurt enough for one night, so I shut everything down and went to bed. I would finish everything up in the morning.

Uploading my App

This proved to the most difficult part of the entire process. I’m not sure if Apple makes this purposely convoluted, but the process to submit an app to the App Store is a STARK contrast to any other Apple experience I’ve had. I tried so many different things, followed so many different “walk-throughs” and Googled so many different terms that I can’t even remember 90% of the process. I do remember contacting my developer at one point, after continually getting a certain error and searching online for a solution for an hour or two. The response? This was a known error and I just needed to restart Xcode. REALLY?

Anyway, I spent a good 6 or 7 hours—at least—trying to correct the bundle identifiers in all the right places, switching between Xcode, iTunes Connect, and the Application Loader, trying to compress the files, trying to get the right IPA file, Googling error messages, searching for walk-throughs or help, and then some.

And you know what? I got NO closer to getting my app in the App Store. Frustrated, I gave up trying to do it myself.

Phone a Friend

Timing is everything, and it just so happened that a coworker of mine (my day job was in a completely different field) had a client who was an iOS developer. We started talking about Apps, and decided to trade some work, UX and graphic design for coding. Due to busy schedules, it was another three weeks or so before we could sit down and work together, but as soon as we met up, he grabbed my laptop and had my app uploaded within 45 minutes.

I watched him over his shoulder during that whole process, I’m completely convinced that I never would have figured it out myself. There were a ton of nuances, from installing certificates to selecting said certificate twice because of a Xcode quirk, to selecting seemingly random options from pull-down menus before exporting an IPA file…I gave up trying to follow.

However, the moral of the story is that I now had an app uploaded and pending review. That was all that mattered.

Pricing

After a bit of internal deliberation, I decided to charge for my App rather than making it available for free. I know that it is an extremely simple app, one which many would expect to be freely available, but I put in time, effort, research, and hard-earned cash. I wanted to try my hands at offering a paid application.

Maybe in the future I’d start giving away the app for free, or try integrating iAds. But for now, I’d stick to a $0.99 price tag. This means that for every app that sells, I’d get $0.70. I’d need to sell quite a few to recoup my costs (for both the app as well as the developer account fee) but I figured it was worth a shot.

I have fairly strong doubts that I’ll be able to reach (and/or maintain) break-even figures. Especially if my costs go up due to the need to hire freelancers to update/add features to the app. However, my goal in making this app was to go through the process, build something that at least I find useful, and get something in the App Store. In that, I succeeded. The long-shot goal would be to break even.

Approval Process

I submitted the app on Thursday, January 12th, at around 8pm. I was extremely excited. When I logged into my iTunes Connect account, the app status had officially changed from “waiting for upload” to “pending review.” I spent the next few days searching around, trying to find information about App Store approval wait time. My conclusion from all that searching was an unsatisfying “Who knows? It’s different for everyone.”

It was a full week, Thursday, January 19th, before I got the email saying that the app status had changed from “pending review,” to “in review.” Excited, I waited as patiently as I could for approval. Not ten minutes had passed before I got a rejection email. Confused, I logged into iTunes Connect to see what happened. Apparently there was a issue with my metadata, specifically one of the screenshots I had uploaded. This screenshot showed the detailed view of a book, complete with book name, author, and notes.

Assuming they didn’t like the fact that I filled in the “notes” section with “information unrelated to the app,” I emptied this section, uploaded the new image, and resubmitted the app. Since this was a metadata rejection and not a full rejection, the app immediately went from “pending review” back to “in review.”

Not ten minutes later it was rejected again, for the same reason. This time, it was rejected outright. Frustrated, I deleted the third screenshot completely and reuploaded the app. One again, the app status changed to “in review” fairly quickly.

And then stayed “in review” for a full week, getting final approval and entrance into the app store two weeks from when I originally uploaded the file.

Spreading the Word

I started thinking about how I’d spread the word about my new app (I suppose the proper term is marketing) soon after I first had the idea. But while Reader Tracker was pending review, I really hammered out the details and my plan of attack.

There were three groups I wanted to specifically reach: bloggers, Reddit, and Hacker News. Choosing these three groups was easy: I’m personally active in all three communities (spending way too much time on Reddit and even more on Hacker News). I wanted to reach out to these user bases as well as give something back to the communities.

After learning that I’d be getting 50 promo codes, I needed to figure out how I’d want to split these up. I decided not to save any of these codes for my friends (if they want the app but don’t want to buy it, I’ll just hand them a dollar). First, I reserved five codes for bloggers. I’d reach out and offer my app for free with no strings attached, not in exchange for reviews or even a link back to my landing page. I just think it’s good form to freely give bloggers my app, since the bloggers I chose are great writers, they might find the app useful, and there’s a possibility of word-of-mouth exposure. I’ve gotten a little bit of free swag from blogging and it always made me extremely happy.

With the remaining 45 codes, I plan on to turning to Reddit, /r/books specifically. I decided to approach /r/books with a proposition rather than simply giving my app away. The plan is to give the app away to anyone who asks, but make it clear that I’m hoping for a bit of feedback. I’ll write about my plans for the app, future features, and see what people think.

My goal is that engaging with the community and communicating my thoughts and plans would solicit not only great feedback, but also give people a personal connection with the app. When these users see their suggestions pushed as free updates, they’ll feel involved. I know that the $0.99 price tag may discourage a large number of non-promo code users from downloading the app and potentially providing great feedback, but I’m hoping people understand the pricing. I’ll also link to this article, so people can see what went into the process (as well as how freely I share information) and hopefully want to get involved.

The other group I wanted to reach was Hacker News. I’ve read so many great articles and seen so many great projects that I wanted to join in by providing my own article. One of my favorite types of posts are of people’s project work flows and reading about someone’s thoughts and actions step by step through a process. One of my favorite (and most helpful) articles is The Process of Visually Actualizing an iPhone App (But Losing the Race). In this article, Petter Silfver walks the reader through his process of designing an iPhone app, from start to finish. My goal was to create something similar, post it to Hacker News, and possibly help or inspire someone else. A plus would be traffic to ReaderTracker.com, but I assume a large amount of the Hacker News crowd could whip something like this up in a very short period of time, so sales isn’t my main goal here. Sharing my work process and getting feedback is the real goal of reaching out to Hacker News.

Conclusion

Overall, creating and releasing an iPhone app has been a blast. Being able to touch and play with an app that started out as an idea in my head was extremely rewarding and I’ve learned a lot of things in the process.

I don’t expect to make back the full amount of my investment, especially on an iPhone app as simple as Reader Tracker. Don’t get me wrong, that’s one of my goal, but it’s a lofty one. However, my main goals getting into this project were to learn a bit of iOS coding and get an app in the App Store. Plus, I wanted an extremely simple app to track the books I’ve read, which I now have. I could have taken that money and signed up for some class where there would have been even less of a return. I’m happy with my investment.

One unexpected takeaway from this process was a distaste for working with Apple. I may have been a bit hard on Apple’s developer experience and maybe a number of my issues came from the fact that I’m not a fluent iOS developer. However, if a reasonably intelligent person, such as I consider myself, can’t figure out how to submit an app to the App Store after spending ~7 hours trying, then something needs to be fixed. For a company that is all about user experience, working on developer side of Apple has been completely surprising and disappointing.

That being said, everything worked out in the end and Reader Tracker is officially available in the App Store!






 I want to teach you exactly how you can create your own app. That’s why I’m turing my NYC workshop into an online class.

Sign up below if you want me to let you know when it launches!

Share what you think