Permalink
Browse files

Add MIT-LICENSE, README, chatview-screenshot TODO.

  • Loading branch information...
1 parent dfa8528 commit 3e19749e7003f67b0876e675de850e187301ec79 Matt Di Pasquale committed Apr 23, 2011
Showing with 169 additions and 0 deletions.
  1. +8 −0 AcaniChat.xcodeproj/project.pbxproj
  2. +20 −0 MIT-LICENSE
  3. +87 −0 README.md
  4. BIN Resources/chatview-screenshot.png
  5. +54 −0 TODO.taskpaper
@@ -49,6 +49,10 @@
C92D07B613634A0400954810 /* NSString+Additions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Additions.m"; sourceTree = "<group>"; };
C92D07B913634B2800954810 /* Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Message.h; sourceTree = "<group>"; };
C92D07BA13634B2800954810 /* Message.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Message.m; sourceTree = "<group>"; };
+ C92D07C413634FA800954810 /* chatview-screenshot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "chatview-screenshot.png"; sourceTree = "<group>"; };
+ C92D07C613634FC900954810 /* MIT-LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = "MIT-LICENSE"; sourceTree = "<group>"; };
+ C92D07C713634FC900954810 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; };
+ C92D07C813634FC900954810 /* TODO.taskpaper */ = {isa = PBXFileReference; lastKnownFileType = text; path = TODO.taskpaper; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -75,6 +79,9 @@
C92BF84E13631710003B20F6 /* Frameworks */,
C92D07A1136344BE00954810 /* Resources */,
C92BF84C13631710003B20F6 /* Products */,
+ C92D07C613634FC900954810 /* MIT-LICENSE */,
+ C92D07C713634FC900954810 /* README.md */,
+ C92D07C813634FC900954810 /* TODO.taskpaper */,
);
sourceTree = "<group>";
};
@@ -142,6 +149,7 @@
C92D07A1136344BE00954810 /* Resources */ = {
isa = PBXGroup;
children = (
+ C92D07C413634FA800954810 /* chatview-screenshot.png */,
C92D07A2136344BE00954810 /* basicsound.wav */,
C92D07A3136344BE00954810 /* ChatBar.png */,
C92D07A4136344BE00954810 /* ChatBubbleGray.png */,
View
@@ -0,0 +1,20 @@
+Copyright (c) 2011 acani
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
View
@@ -0,0 +1,87 @@
+# AcaniChat - HTML5 WebSockets & Node.js chat on the iPhone
+
+An open-source version of iPhone's native Messages app
+
+![AcaniChat screenshot][1]
+
+## Features
+
+Currently, AcaniChat features message persistence with Core Data and a chat view
+that allows you to send chat bubbles to yourself. Next, we'll implement sending
+messages over the network through the Acani chat server.
+
+* ConversationsViewController: List of conversations (`UITableViewController`)
+ * Coming soon...
+
+* ChatViewController: One-on-one Chat (`UIViewController`)
+ * chatContent (`UITableView`)
+ * Identical UI (colors, layout, and font size) to iPhone's Messages app
+ * Conditional timestamps (only shown every so often)
+ * Delete edit-mode: Delete one message at a time or clear all at once
+ * Trims whitespace on ends of messages; prevents sending blank messages
+ * chatInput (`UITextView`)
+ * `sendButton.enabled = [chatInput isEmpty] ? NO : YES`
+ * Collapses & expands (between one & four lines) with content
+ * becomes scrollable after content exceeds four lines
+
+## iOS Technologies
+
+* UIKit
+ * `UINavigationController`
+ * Custom `UITableViewCell`s
+ * Core Data
+
+* Coming Soon
+ * ZTWebSocket & AsyncSocket
+
+## Design Practices
+
+AcaniChat is simple yet modular, implementation-agnostic, and extensible.
+
+* Create views programmatically
+
+### Authentication: Facebook Connect & NSURLConnection
+
+AcaniChat will implement authentication through various third-party accounts,
+such as Facebook, Twitter, GitHub, etc.
+
+### Connection: HTML5 WebSockets - ZTWebSocket & AsyncSocket
+
+AcaniChat will soon be able to connect to web servers that support HTML5
+WebSockets. It will use ZTWebSocket, built on top of AsyncSocket, to support a
+WebSockets connection.
+
+### Server: HTML5 WebSockets - Node.js & Redis
+
+Using [Node.js][] & [node-websocket-server][], we built a chat server called
+[acani-chat-server][] (coming soon) that supports HTML5 WebSockets connections.
+
+### Chat: Redis PUB/SUB
+
+The Acani chat server uses [Redis][] & the [Redis PUB/SUB functions][] to
+implement chat. Each user subscribes to the channel named after her username.
+
+## Contributors
+
+* [Matt Di Pasquale][7]
+* Peng Wan
+* Abhinav Sharma
+* Nick LeMay
+* Eugene Bae
+
+## Related Projects & Links
+
+* [SSMessagesViewController][6]
+* [Twitterfon][2]
+* [Video Tutorial on SMS style bubbles][3]
+* [StackOverflow: Implement view like standard iPhone SMS-chat bubbles view][4]
+* [StackOverflow: Creating a “chat bubble” on the iPhone, like Tweetie.][5]
+
+
+ [1]: https://github.com/acani/AcaniChat/raw/master/Resources/chatview-screenshot.png
+ [2]: https://github.com/jpick/twitterfon
+ [3]: http://vimeo.com/8718829
+ [4]: http://stackoverflow.com/questions/663435/implement-view-like-standard-iphone-sms-chat-bubbles-view
+ [5]: http://stackoverflow.com/questions/351602/creating-a-chat-bubble-on-the-iphone-like-tweetie
+ [6]: https://github.com/samsoffes/ssmessagesviewcontroller
+ [7]: http://www.mattdipasquale.com/
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
@@ -0,0 +1,54 @@
+AcaniChat:
+ ConversationsView:
+ UITableView of all the conversations, AKA threads or channels
+ - Add ConversationsViewController : UITableViewController
+ - Add search bar to search all conversations
+ http://www.iphonesdkarticles.com/2009/01/uitableview-searching-table-view.html
+
+ ChatView:
+ One-on-one chat
+ - Handle errors better
+ - Improve scrolling performance of chatContent @issue
+ (subclass UITableViewCell & implement drawRect)
+ - After clear all, fix horizontal positioning of outbound messages @issue
+ - chatInput resign first responder on app suspend @issue
+ - When chatInput grows taller, chatContent should shrink @issue
+ - On compose newline, scroll chatContent to bottom if not already
+ - On edit chatContent, slide down chatInput (off screen)
+ - Remove animation of first message @issue
+ - View more recent messages button
+ - Show sending... progress indicator
+ - Add arrow accessory icon for phone numbers, email, and websites
+ - Animate message send (going from chatInput to chatContent)
+ - Use checkbox editing style and add Delete & Forward buttons @filebug
+ - File bug with Apple about whitespace around messages before sending @filebug
+ - Get high-res images for chat bubbles & send button (and decrease width of send button)
+
+ Landscape Rotation:
+ - Portrait => landscape: vertical position should stay at bottom @issue
+ - Fix horizontal positioning of messages @issue
+ - Landscape => portrait while composing: fill entire window (don't show black background) @issue
+ - Try changing chatContent.contentInset (like Sam does) instead of height for slideFrameUp
+
+ Core Data:
+ - Add Conversation model (Conversation is like a channel in Redis Pub/Sub)
+ - Conversation has many Messages; Message has one Conversation (one-to-many)
+ - Persist drafts in textView of each chat
+ - Conversation has one Draft (one-to-one)
+ - Make Draft a concrete parent of Message.
+ - It should have text & media but not timestamp & unread, etc.
+ - Send photo & video messages
+ - Add media relationship to Message model
+
+ Chat Server:
+ Send messages to other devices
+ - Check: You must disable airplane mode to send or receive messages. Cancel [Disable]
+ - Add red ( ! ) bubble button if message doesn't send.
+ - Touching it shows UIActionView: Your mesage was not sent. Tap "Try Again" to send this message. [Try Again] Cancel
+ - Play a sound or vibrate when receiving a message
+ - Receive messages while offline
+ - Store messages on the server
+ - Apple Push Notification Service
+
+ iPad Version:
+ - Study Messages app on the iPad

0 comments on commit 3e19749

Please sign in to comment.