- Install meteor
$ curl https://install.meteor.com/ | sh
- Create meteor project
$ meteor create whatsapp
- Add angular and ionic
$ meteor add angular driftyco:ionic
- Create project structure
- /client
- /scripts
- /lib
- app.js
- /lib
- /styles
- /templates
- index.html
- /scripts
- /server
- /public
- /client
- Add tabs and routes
- Add
tabs.ng.html
- Add
routes.ng.js
- Add
- Mock chats view
- Add ChatsCtrl
- Add
chats.ng.html
- Add calendar filters
- Add moment
$ meteor add momentjs:moment
- Add moment
- Setup sass
- Add sass
$ meteor add fourseven:scss
- Add
chats.scss
- Add sass
- Add Messages and Chats collections
- Add /lib/collections.js
- Add /server/boostrap.js
- Use angular meteor collection and remove() function
- Add chat detail view
- Add
chat-details.ng.html
- Add
chat-details.scss
- Add pictures:
chat-background.png
,message-other.png
,message-mine.png
- images paths are absolute from the
public
folder
- images paths are absolute from the
- Add angular moment
$ meteor add jasonaibrahim:angular-moment
- Add
'angularMoment'
to the app dependencies
- Add
input
directive for better mobile experience -directives/input.directive.ng.js
- Add
- Add
'newMessage
method- Add
lib/methods.js
$ meteor add check
- Add
- Add login with phone number
$ meteor add okland:accounts-phone
- Add
server/sms.js
andsettings.json
- Add login flow:
- Add
'login'
,'confirmation'
,'profile'
states - Server: Add
'updateName'
method - Add 'login', 'profile' style files
- Add
- Ensure that user is logged in:
- Ensure user before 'tab', 'profile' states - resolve
$meteor.requireUser()
- Redirect to login route -
auth.js
- Server: Ensure that user logged in before preform methods
- Ensure user before 'tab', 'profile' states - resolve
- Server: Add
userId
to message - Add
'settings'
tab with logout button- Add controller and template
- Add new chat modal view - add controller and template
- Add
'newChat'
method and stub - Add
chatName
andchatPicture
filters to get data by user _id $ meteor remove insecure
- Add
'removeChat'
method and change inChatsCtrl
$ meteor remove autopublish
- Add
'chats'
publish$ meteor add reywood:publish-composite
$ touch publications.js
- Subscribe at the 'tab' state - resolve
$meteor.subscribe('chats');
- Add
'users'
publish- Subscribe at new chat controller
$ meteor add okland:camera-ui
- Add
'updatePicture'
method - Add link to profile in settings
- Refactor
'sendMessage'
function to picture message - Add
message.type
- Run
db.messages.update({ type: { $exists: false } }, { $set: { type: 'text' } }, { multi: true })
- Run
- Adjust
chats
andchat-detail
templates and style