PoopTracker is an app I made during my hiatus in Winter 2016. I started out with something very basic and felt like I was almost done. Little did I know, that the deeper you go, the further away from your goal you get. I faced many challenges making this app. I made lots of mistakes. I learned a lot. I had fun.
Why is it not in the appstore yet?
I do not think it is ready. I strive for quality in everything I make. The main reason I made it was to learn, but that does not mean I would not like to push it to the Appstore in the future (I do want to use this app). I got to a point where I felt that I had already learned a lot from building this app, but could learn more making something else, so I paused on this and tried out iOS game development.
I'll let you see the code. Just note that it's not the best it can be as I was still learning while implementing it. So much could be improved.
People always ask, "Why did you make an app about something so smelly?"
- LEARNING: I thought it would be a great first app to learn iOS. I was right about that. I learned a lot making this app.
- STATISTICS: Statistical reasons. I LOVE tracking things. Inspired by my favourite app, aTimeLogger 2 (a time/activity tracker), I wanted to make something like it. I love being able to view statistics and trends about myself. I enjoy using trackers such as aTimeLogger 2, trakt.tv, and Fitbit.
- HEALTH: We need to make sure we're healthy in that aspect, right?
- GATEWAY TO PRODUCTIVITY APPS: I have a big idea for an app, but I wanted to make all the mistakes with my first one so I could learn from them and make an awesome app next. There are a lot of productivity apps out there, but I find that they could all be better.
TL;DR: Main point of the app was to learn iOS, and also have fun with it even if others think it's silly.
I didn't want a simple tracking app. I wanted something simple, yet complex at the same time. You can log anything by making a simple list, but I wanted to make it easier for the user to be able to view what they've tracked in a much more meaningful way.
- Adding entries with date, end date, duration, toilet paper count, type, colour, details, comments.
- Start, Stop, Cancel an entry to record exact start and end times. Stopping will result in the edit view to pop up to finish adding the entry.
- Edit, delete, (share to be implemented) by swiping.
- Stats page
- Pie charts for type, colour, other details.
- Calendar visualizing the poops.
The app is not quite ready yet. It's definitely functional, but I need to make sure that it's both stable and efficient enough to be released to people.
- Line graphs of each attribute. This way you can see correlations between attributes.
- More themes!
- A lot of code refactoring.
- Save State. I did this for some view controllers, then redid those view controllers, and haven't implemented it for everything yet.
- Efficiency improvements. The goal is to prevent iterating over the list of entries every time an entry is added/modified/deleted. Right now, it does do this, but that is because I only wanted something working before making it more efficient. As of now, statistics are not calculated by iterating the entries, rather the statistics itself is being saved and updated as entries are being updated. There is a chance of inconsistency by human error, but it is a trade-off worth making.
- iCloud sync
- Export/import to/from csv, export to email.
- Passcode protect
- Sound effects &am; Animations
- More info with the pie charts
- More options
- Sharing entries (for laughs)
- Better UI for stats page - it seems weird right now.
- Better icons - more official looking ones.
- Make it look great on iPad.
- Other improvements
I used some third-party libraries (mostly found via Cocoa Controls) which made things a lot easier. I tried my best not to use them because I wanted to write my own code, but some things require a lot of code!
- KYCircleMenu - although I didn't directly use this, I did use it to make my own. See, this one had exact positions for the buttons and it had to be a circle, which was very limiting. It was also a bit excessive for what I needed. I did some trigonometry and was able to start the circle at any angle and end at any angle, and the buttons would dynamically fit itself within this circular arc. It was a pretty big accomplishment for me. I actually used trigonometry for something.
- XYPieChart - awesome pie charts
- FSCalendar - calendar
- RFQuiltLayout - for the stats collection view
- MGSwipeTableCell - for swipe to edit/delete/share
- KTCenterFlowLayout - for the pie chart legend to be centered
Things I Learned
- I somehow always felt accomplished after 2 hours of coding. Could be that I always planned exactly 2 hours of implementations or ???
- Plan the UI design of your app because you won't know where to put stuff and what you need to implement.
- Plan, plan, plan! I ended up redoing a lot of things because I implemented things with no concrete plan. I had pictures in my mind, but that was not enough.
- iOS things. Opened my eyes to how apps are built! Most fascinating thing I learned: table cells are reused!
- So much more! It was an eye-opening journey.
It's not on the appstore yet, so here are some images.