PicIT24 is a representative of the new-generation photo-sharing social networks. PicIT24 has been developed in two variants - as a mobile application for iOS v.4.3 - 6.0, and as a website providing clients with the similar functionality. Registered users can post only one type of content per day - it can be a photo, an image or a quote that reflects the brightest emotion over the 24 hours. Such was the idea - something like poetry. Fewer words and more meaning within.
Our purpose was creating a way to underline each user's individuality. To start implementing this concept we had to define the instrumental core. For iOS development our team used the standard software development tools, such as iOS SDK and Xcode, which contain all necessary frameworks.
What were the primary technologies that we used in further development? AFNetworking library was employed for interaction with the Internet and for creating requests on different servers. GPUImage library, based on OpenGL, was used for adding filters. Graphics processor was applied instead of central, and as a result the program's workspeed increased. The app also utilizes easy-to-use curve filters in Photoshop. For the data storage management we chose automatic reference counting.
Through these technologies we gained the following functions of the iOS application. Users can upload images, add filters, view and comment other pictures, create groups, follow people, search by criteria, send invitations etc. We implemented the ''Show Names'' function to save some space in the news feed. Now users' names can be displayed or hidden under the images to free more area. In the view mode a user can filter files by location or type (check photos or quotes only). Users have 260 symbols available to post their favorite quote and 90 symbols to comment images. Inviting friends became easier with sending requests via e-mail, SMS or social networks - Facebook and Twitter. ''Weather'' function enables to attach the forecast to the published pictures. ''Flag Photo'' allows to make complaints against pictures. The user can delete or edit the content (able to make changes within 15 minutes after posting).
Push notifications have also become a feature of PicIT24. The user gets remote and local notifications, which are implemented through the standard APNS. 6 hours before the end of the day the user gets a local reminder about a chance to post until midnight. ''Privacy'' function allows the user to get ''Follow'' requests and monitors people who follow. These notifications allow the user to follow the updates and be aware of the received comments and likes. It also allows to send notifications via e-mail, SMS and Facebook.
After implementing all the important features and creating a laconic design, publishing images became an easy and short procedure. The user has to click the icon with a camera, make a photo or download it from the device, add a filter and press ''Pic It''.
Adding a number of complicated features, we faced several problems during the development. User interface reflects the impression of the user in communication with the app. That is why it must be perfectly balanced between simplicity and functionality. The standard iOS GUI components did not support image filters which needed a high amount of memory (sometimes 30-40 Mb for a picture). As a result, iOS crashed the app every time we tried to use several filters for one photo. That happened because each filter needs an individual framebuffer. It is rather a disadvantage of GPUImage. We decided to apply only one filter for each picture to solve this problem. To optimize the app, our developers had to create custom components â€“ on/off switcher, custom segmented control, drop down list views, loader view etc. We followed the decision to create both stylish and minimalistic interface and not to distract users from the most important thing â€“ the content. That is why UI design became grey-coloured and looks quite conservative.
Not only did we want to make PicIT24 available for iOS users - there was a way to widen the circle and involve more people into it. That was creating a PicIT24 website. That was the other task we had to deal with. The website was developed upon Yii framework and its Backvendor extension. Using Backvendor we managed to setup the backend during one day. Without using any frameworks it would have taken us at least 10-15 days to complete this task. PicIT24 is based on Backvendor architecture and consists of the core and several apps, that significantly facilitated the developing process.
The supporting website deploys the script Phing, handy in extending and adding custom tasks. Here it has been specified for the automation of PicIT24 downloading. It follows the latest version of the application and creates a backup for the previous one.
Functionality of PicIT24 is based upon search component. For example, the user may search for images by setting dates, users, groups or a piece of text (to search for quotes). This component is divided by several parts according to the functions: one component deals with photos and quotes uploading/comments; another one is used in creating user's custom groups (colleagues, friends, family etc.). There is also the observer component, which tracks events and allows to greet a new user. PicIT24 utilizes both Test Driven Development (emulation with the help of PHPUnit) and Behavior Driven Development as testing methodologies.
User-friendly and minimalistic design, along with lots of helpful features became the basis of PicIT24. The app transformed into something more than a usual social network - it is a visual diary for saving your most important inspirations. Still there are lots of ideas for the next version. We will share interesting features in the new release coming soon.