Codeaqua: Difference between revisions
| Line 64: | Line 64: | ||
Web application's main purpose is to show you what is going on rather than creating content for the application, it shows what is going on with the life of your their friends, which party they have been, to create a photo pool for specific events you have been. |
Web application's main purpose is to show you what is going on rather than creating content for the application, it shows what is going on with the life of your their friends, which party they have been, to create a photo pool for specific events you have been. |
||
* It uses only programming language as JavaScript with a beautiful library named backbone.js and its dependencies such as jQuery and underscore.js. |
* It uses only programming language as JavaScript with a beautiful library named backbone.js and its dependencies such as jQuery and underscore.js. Also it uses jquery.cookie.js to handle session management |
||
* The main purpose of backbone is to provide asynchronous connection to a specific url and showing them without the requirement of refreshing the page. In this case the url of the connection made is the url of our web service. |
* The main purpose of backbone is to provide asynchronous connection to a specific url and showing them without the requirement of refreshing the page. In this case the url of the connection made is the url of our web service. |
||
* For decreasing the workload of designing we are using the Bootstrap framework provided by Twitter, and because we decided to make a clean user interface we are using the variation of the Twitter Bootstrap named Flatstrap. |
* For decreasing the workload of designing we are using the Bootstrap framework provided by Twitter, and because we decided to make a clean user interface we are using the variation of the Twitter Bootstrap named Flatstrap. |
||
* We are using |
* We are using MapBox to show the necessary maps. |
||
* We are using an open source project called autobahn.js to ease the necessary work to create web socket connections for realtime connection through web sockets. |
* We are using an open source project called autobahn.js to ease the necessary work to create web socket connections for realtime connection through web sockets. |
||
Revision as of 02:31, 4 May 2013
Introduction
codeaqua can be identified as a software product that helps people to convert their weak, web based social networks to real, face-to-face, strong social networks. To do so, it uses iOS application and web site.
Purpose of the project
Purpose of the project is to create a new social network which helps you to where to go when you want to enjoy, entertain yourself. It works as a database of possible events you might want to go depending on your friends and location.
The problems that are being planned to be solved
- When a person wants to go out for a party, if they don't know where to go, codeaqua comes to his/her help to supply several possible solutions to be gone.
- If a person wants to go out for a party, and doesn't know where their friends are, codeaqua can show the most crowded places that his/her friends are there.
- There is no place like this makes this event finding problem social, because you want to spend your time with your friends and enjoy with them.
- In this market, the other apps show you all the events regardless if you want to go or not. Our solution is only showing you the specific types of events you might want to go, and putting the places where your friends are most crowded.
- Providing an activity feed that shows you the friends' activities such as an event creation, and maybe a friendship that might concern you.
- Finding all of the people you might want to get information about them, so that you can friend them and subscribe to their activity feeds, because your friends is kind of reflection of your lifestyle, and you most probably want to go to events that they are going.
- One of the main problems we are facing in the parties, connecting with people, taking their phone numbers, or memorizing their names, with 90% chance that you will forget. We are providing an easy way to connect with new people in codeaqua. Simply you have an identity as a QR code, and all of the users have. What you need to do is just scan their QR code and a friend request will be sent.
The main purpose of codeaqua solve all of the problems and provide a clean, neat user interface to interact with it.
Technical Details
There are 3 different phase of codeaqua:
- Web Service (API)
- iOS Application
- Desktop Web Application
Web Service (API)
Web Service is written in PHP using Laravel Framework. It is the main logic part of the project. And also it is the only part works with database.
- For the main backend database, MySQL has been used. We chose it because it is almost the best possible solution for PHP applications. We are using the powerful Amazon RDS service from Amazon Web Services to host our database, which decreases the workload of ours for such as creating a write or read replicas of the master database.
- What web service is doing is that, it gets requests via HTTPS and the specific urls to pointing which resource is being requested and provide the necessary info with making necessary calls to the database. Every request must be done via an authorized API-KEY which will be sent as basic-authentication username and a secret as a password. And it will process the request and returns a JSON response to be executed on the frontend with needed HTTP Response Status Codes.
- Just because we will need some realtime information to be sent to the users of the application on the frontend, we setup a websocket server and providing necessary realtime info via this server through web sockets for both Web Application and iOS Application. The websocket server's name is ratchet and it's using React websockets for providing asynchronous messages to frontend, and also it is using a messaging queue named ZeroMQ to not to use information needed and making sure that it is sent to the user for both iOS app and web app.
- And also, because we are using an iOS specific mobile application, we needed to find a way to send Apple Push Notifications to the user, and a php package named Notificato comes to our help.
We are hosting this web service on top of an Amazon EC2 instance provided by Amazon Web Services.
iOS Application
Just because codeaqua is a service that will be used heavily as mobile, iOS app is the heart of codeaqua. This is where you can create your own parties, find the best suitable parties depending on your location, which can be retrieved from the GPS of your device, write posts about the parties and upload photos you have taken at the parties you have been.
- codeaqua for iPhone application will require at least iOS 6 to work, and just because it will be used for mainly on the smallest mobile devices, because you cannot bring your iPad easily to a party, we decided to release this app mainly on iPhone, and the support for iPods for at least the generation of 4th.
- For QR code encoding and decoding we are using objective-c port of a existing open-source library called ZXing.
- It is always connected to our socket library through the implementation of the web sockets.
- It also always listens the Apple Push Notification server, so that we can send necessary information even if our app isn't working on the phone.
- It locates the user's coordinates and connects to our Web Service, sends the information about the user's info including the user's location, and retrieves the necessary info to show them with a clean, neat user interface.
- To create best user experience, we tried to create a simple user interface, we embraced the flat-style design principles, and tried our best to implement those principles.
- Just because codeaqua is an entertainment focused app, we needed to create ways to differentiate ourselves from existing solutions, so that we are using photo filters, but unlike the others, we are providing those filters live while the user's taking picture. But we are not a computer graphics masters, so that we used an open-source library called GPUImage to create those image processing algorithms, and mix them the way we needed them.
- codeaqua for iPhone uses another open-source library named AFNetworking for asynchronous connections on background threads of the device.
Desktop Web Application
Web application's main purpose is to show you what is going on rather than creating content for the application, it shows what is going on with the life of your their friends, which party they have been, to create a photo pool for specific events you have been.
- It uses only programming language as JavaScript with a beautiful library named backbone.js and its dependencies such as jQuery and underscore.js. Also it uses jquery.cookie.js to handle session management
- The main purpose of backbone is to provide asynchronous connection to a specific url and showing them without the requirement of refreshing the page. In this case the url of the connection made is the url of our web service.
- For decreasing the workload of designing we are using the Bootstrap framework provided by Twitter, and because we decided to make a clean user interface we are using the variation of the Twitter Bootstrap named Flatstrap.
- We are using MapBox to show the necessary maps.
- We are using an open source project called autobahn.js to ease the necessary work to create web socket connections for realtime connection through web sockets.
For speed improvements and the ease of the work, we are not using any serverside code for web application, it is just about making requests with JavaScript and processing the JSON responses in necessary way to provide a clean, fast and simple user experience.