All Projects → zoltan-nz → chat-app-v2

zoltan-nz / chat-app-v2

Licence: other
Shorter Chat App Demo

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to chat-app-v2

ember-changeset-conditional-validations
Conditional validations for ember-changeset-validations
Stars: ✭ 26 (+85.71%)
Mutual labels:  ember, emberjs
ember-headlessui
gavinjoyce.github.io/ember-headlessui/
Stars: ✭ 76 (+442.86%)
Mutual labels:  ember, emberjs
ember-foxy-forms
Ember Addon for Making Foxy Forms
Stars: ✭ 27 (+92.86%)
Mutual labels:  ember, emberjs
ember-credit-card
"make your credit card form dreamy in one line of code"
Stars: ✭ 89 (+535.71%)
Mutual labels:  ember, emberjs
glimmer-apollo
Ember and Glimmer integration for Apollo Client.
Stars: ✭ 32 (+128.57%)
Mutual labels:  ember, emberjs
ember-cli-g-maps
Deprecated Google Maps Addon
Stars: ✭ 58 (+314.29%)
Mutual labels:  ember, emberjs
ember-event-helpers
Complimentary event template helpers to the {{on}} modifier
Stars: ✭ 33 (+135.71%)
Mutual labels:  ember, emberjs
ember-on-modifier
Implements the `{{on eventName this.someAction}}` element modifier from https://github.com/emberjs/rfcs/blob/master/text/0471-on-modifier.md
Stars: ✭ 37 (+164.29%)
Mutual labels:  ember, emberjs
cli-guides
Step-by-step guides and tutorials for using the ember-cli to create apps and addons
Stars: ✭ 22 (+57.14%)
Mutual labels:  ember, emberjs
hyperchannel
Kosmos Chat for the Web
Stars: ✭ 17 (+21.43%)
Mutual labels:  ember, emberjs
ember-typings
Typescript type definitions for ember.js
Stars: ✭ 13 (-7.14%)
Mutual labels:  ember, emberjs
els-component-extraction-addon
Component extraction addon
Stars: ✭ 11 (-21.43%)
Mutual labels:  ember, emberjs
JFrogfy
a simple clone of spotify built in Emberjs octane the music is played with youtube
Stars: ✭ 27 (+92.86%)
Mutual labels:  ember, emberjs
ember-best-language
🏳 A FastBoot-enabled addon to detect the best language for your user.
Stars: ✭ 18 (+28.57%)
Mutual labels:  ember, emberjs
ember-help-wanted
Search help wanted issues in the Ember community
Stars: ✭ 23 (+64.29%)
Mutual labels:  ember, emberjs
ember-link
Link primitive to pass around self-contained route references. It's {{link-to}}, but better!
Stars: ✭ 50 (+257.14%)
Mutual labels:  ember, emberjs
deprecation-app
Deprecation guides for ember.js, ember-data, and ember-cli
Stars: ✭ 18 (+28.57%)
Mutual labels:  ember, emberjs
irene
I AM SHER LOCKED. Dashboard for Appknox Users.
Stars: ✭ 15 (+7.14%)
Mutual labels:  ember, emberjs
ember-shadow-dom
Write templates for your components inside of a Shadow DOM root.
Stars: ✭ 26 (+85.71%)
Mutual labels:  ember, emberjs
ember-boilerplate
👓 The stable base upon which we build our Ember.js projects at Mirego.
Stars: ✭ 33 (+135.71%)
Mutual labels:  ember, emberjs

Chap App v2

1. Install CLI and create the app

$ npm install -g ember-cli

$ ember new chat-app

$ cd chat-app

$ ember server

$ ember g template application

2. Add bootstrap and some css

Searching bootstrap package: http://www.emberaddons.com

$ ember install ember-bootstrap

Some extra style in app/styles/app.css

body {
  padding-bottom: 70px;
}

.message-bar {
  height: 70px;
  padding-top: 13px;
}

.alert-chat {
  padding: 5px;
}

.label-user {
  font-size: 100%;
  font-weight: normal;
}

.nav-links {
  padding: 10px;
}

.nav-links a.active {
  text-decoration: underline;
}

3. Add header to the main template

/app/templates/application.hbs

<div class="container">
  <div class="page-header">
    <h1>WDC Mini Chat
      <small>Let's talk about Ember</small>
    </h1>
    <div class="pull-right nav-links">
      {{#link-to "index"}}Home{{/link-to}} |
    </div>
  </div>

  {{outlet}}
</div>

Create an extra About route:

$ ember g route about

Add the link to the header

{{#link-to "about"}}About{{/link-to}}

4. Create two pages: index and chat

$ ember generate template index

Add content to index

<h1>Index</h1>
$ ember generate route chat

5. Add dynamic segment to chat route

app/router.js

this.route('chat', { path: '/chat/:user_name' } );

6. Input box with condition on index page

app/templates/index.hbs

<div class="jumbotron text-center">
    <div class="container">
        <div class="col-md-4 col-md-offset-4">
          {{input class='form-control input-lg' placeholder="Enter your name." value=name}}
        </div>

        <div class="col-md-4 col-md-offset-4">
          {{#if name}}
              <h2>Please join to the chat {{name}}!</h2>
            {{#link-to 'chat' name class="btn btn-lg btn-success"}}Join{{/link-to}}
          {{else}}
              <p>Please enter your nickname and click the join button.</p>
          {{/if}}
        </div>
    </div>
</div>

7. Setup our backend (Firebase)

Firebase

$ ember install [email protected]

config/environment.js

firebase: 'https://meetup-chat-app.firebaseio.com/',

8. Let's create our model

$ ember generate model message user:string text:string

Test it in Ember Inspector and check on Firebase.

9. Add create message field to the chat screen

app/templates/chat.hbs

<div class="navbar navbar-default navbar-fixed-bottom message-bar">
    <div class="container">
        <form class="form-horizontal">
            <div class="form-group">
                <div class="col-xs-10">
                  {{input class='form-control input-lg input-block' placeholder='Your message' value=textMessageFromInput}}
                </div>
                <div class="col-xs-2">
                  <button type="submit" class="btn btn-primary btn-lg" {{action 'createMessage' textMessageFromInput}}>Send</button>
                </div>
            </div>
        </form>
    </div>
</div>

app/routes/chat.js

Create the action:

  actions: {
    createMessage(message) {
      let newRecord = this.store.createRecord('message', {
        text: message,
        user: 'Joe'
      });

      newRecord.save();

      this.controller.set('textMessageFromInput', '');
    }
  }

10. Download chat messages from the server

app/routes/chat.js

  userFromParams: null,

  model(params) {
    this.set('userFromParams', params.user_name);
    return this.store.findAll('message');
  }

Iterate trough the downloaded model on chat page:

app/templates/chat.hbs

{{#each model as |message|}}
    <div class="alert alert-warning alert-chat">
        <p><span class="label label-warning label-user">{{message.user}}</span> {{message.text}}</p>
    </div>
{{/each}}

Build the production code

$ ember build --prod

Deploy with Firebase

Using firebase tools for deployment

$ npm install -g firebase-tools
$ firebase login
$ firebase init

Update firebase.json

{
  "firebase": "YOUR-APP-NAME-ON-FIREBASE",
  "public": "dist",
  "rewrites": [{
    "source": "**",
    "destination": "/index.html"
  }]
}
$ firebase deploy

Deploy with Surge

$ cd ./dist
$ cp index.html 200.html
$ surge

More details about surge: http://surge.sh

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].