/
TODO.taskpaper
executable file
·194 lines (167 loc) · 6.26 KB
/
TODO.taskpaper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
Acani:
Views:
- WelcomeView: logo & slogan, intro info, connect with Facebook
- PrivacyPolicyView (modalView): textView of the Privacy Policy
- LauncherView: add/search new people/interests to your launcher; rearrange; log out
- ProfileView: edit profile fields, filters, & interests; edit interest-specific settings
- UsersView: photo grid w/ flags; header & iAd footer
- InterestsView: modal view that displays interests
- PhotoView: profile photo & info; favorite, block, & chat buttons
- MessagesView: display conversations, like iPhone Messages
- ChatView: chat; more button to send location, photo, clear chat. Push notifications
- Interface w/ Network Server. FBConnect & Twitter. Test & final touches
Servers:
- Profiles: Sinatra & MongoDB - http://acani.heroku.com/
- Chat: Node.js & Redis - http://acani.no.de/
v. 1.0.0:
AppDelegate:
Life Cycle:
- On launch, set myUser if FBConnection exists
- Else, redirect to WelcomeView
Location:
- Make a global function to get location asynchronously & while in background
- Look at Multitasking hammer slides and tutorials
- Check location every 3 minutes; send to server if greater than 3 miles from last sent location
FBConnect:
- Get email, sync picture, info, and interests
WelcomeView:
Display on first log in
- Design logo (at-sign); put at top
- Add default & active FBConnect button image backgrounds
- Add notes below FBConnect button in small font:
- [Your privacy](link/to/privacy-policy) is 100% protected.
- Only stories you approve will be published.
- You may completely remove Acani & your info at any time.
- We verify that all users are real.
- Add "Connect Anonymously" button below FBConnect button.
PrivacyPolicyView:
Modal view linked to from the WelcomeView
- Simple textView with userInteraction disabled.
- Model after Lovers privacy policy.
InterestsView:
- My Interests / All Interests
- Nested lists of interests
Server:
- Sinatra & MongoDB serve collection as JSON
ProfileView:
- Make it display (It currently crashes) @issue
- Compare with https://github.com/samsoffes/sspersonviewcontroller
UsersView:
- LoadMore (disable button on click)
- Flair: green dot if online, unread msgs badge
- Display me in upper-left if I'm a member
- Show spinning dashes to signify that thumbnail is in the process of being loaded
- Randomly load different shades & versions of default (blank) photo
- Settings button in upper right
- Filtering
PhotoView:
- Serve 2X photos for high-res devices
- Cache large photos in filesystem
- Make about a scrollable textView
Chat:
- Deliver new messages on connect
- Send messages via Push Notifications to users not online
Server:
- Rewrite chat server like node_chat
MessagesView:
- Display conversations, like iPhone Messages
ChatView:
- See earlier messages (pagination)
- Add receivers
- Fix rotation resizing bug
Localization of UI Strings (Translation):
- Use same language as Apple & copy their plist files
Design:
ChatView:
- bubbles & send button
Future Versions:
WelcomeView:
- Split testing with NSURLConnection to maximize % of users that connect via Facebook
- Design & add background image like SCVNGR's
Point System:
- FConnect: 10 pts
- Post photo: 10 pts
- Fill out a profile-info field: 5 pts
- Send message: 2 pts
- Reply to message: 1 pt
LauncherView:
Like the Facebook iPhone app
- Account button in upper left
- Logout
- Settings
- Icons
- Interests
- Messages
- Profile
InteresteView:
- List all interests
- My Interests / All Interests
- Add pictures
UsersView:
- Search by keyword or username
- Add flair: favorite star
MessagesView:
Refactor:
- Write function addMessage:message for send & receive
- How should we be fetching messages?
- Mark messages as read all at once instead of inside tableCell function
Server:
Sinatra & MongoDB
- Handle Block & Favorite buttons
- Make Team Page
- Create user if doesn't yet exist: find({ :device_id: id }); update location.
- Update profile info & photo
Chat Server:
Node.js & Redis
- Store messages in MongoDB (or Redis?)
- Send location
- Send photo
Put User info on Photo View:
- Include Favorite & Block buttons
Load Thumbnail View:
- For each User object, load thumbnail photo:
- Add flair: username, red number, star, green dot, blue & yellow border/background
ChatView:
- ChatContentHeader Buttons: Call, Contact Info/Add to Contacts, [Load Earlier Messages]
- Send photos, video, location.
- Edit: delete, forward, clear all
- Put each timestamp in its own cell
- Touch ChatContentView to close keyboard
- Like Facebook & twitterfon, show a small thumbnail of profile photo next to each message
- Tap and hold (or double-tap) on table-cell highlights msgText for copying
- sets backgroundViewSelected
- may require redesign of cell
- Message sending progress bar at top of navbar
- Message animation on send from msgInput to chatContent
Fix chatInputView bugs:
- Hit return x-times and then backspace x+1-times. Sometimes cursor jumps.
- Type a word, hit return, hit backspace. Sometimes weird word suggestion is made.
Recurring:
- Push to Git after adding each new feature. Always make sure it builds first.
- Keep TODO, README (getting started, etc.), RECIPES, HISTORY, etc. up to date
Refactoring:
PhotoView:
- Make a captionLabel class.
ManagedObject:
- Profile & Interests: Abstract findById methods into one (with Category?).
RefreshableViewController:
- Make function displayRefreshButton(target, title, selector).
- InterestsViewController & UsersViewController
Style:
- Make every line max 100 columns, like Three20.
NSURLConnection:
- Make generic Request class (like FBRequest) for saveProfile & join/leaveInterest.
Bugs:
- set breakpoint on malloc_error_break and click Acani, then back.
Finance:
- Apply for EIN online
- Open Acani bank account during lunch in NYC
- Link this bank account to iTunesConnect
Production:
- Convert all CoreData fields to optional
- Convert all release to release safely macro
- Deploy to acani.no.de
- Get affordable hosting (AWS)
Get Matt Situated:
- get him a wireless card so he can use wireless on train
- Get to sleep by 9:30pm every night.