/ken-chat

This is a chat assignment in CoderSchool

Primary LanguageRuby

Homework 2 - Ken Chat

Ken Chat is a Ruby on Rails blog application that allows users to send messages to each other that can only be read once.

Submitted by: Tu Hoang

Time spent: 15 hours

URL: https://ken-chat.herokuapp.com

User Stories

The following required functionality is complete:

  • User can sign up by providing their email, password, and name.
  • User can login using an email and password.
  • After logging in, the user is taken to a page that has a list of incoming messages, sorted in descending chronological order (newest messages at top), a "new message" link, an "add friends" link, and a "sent messages" link.
  • Unread messages should be bold or something similar in the list of messages.
  • Clicking the "add friends" link takes the user to a page with all users listed, with a link to "add user to friends list".
  • Clicking on "new message" takes the user to a page where they can write a new mesasge. The recipient field should be a dropdown, where the options are names from the user's friends.
  • Clicking on "sent messages" takes the user to a page listing messages they have sent. Each message should display at what time it was read by the recipient, or "unread". The user cannot read the contents of the messages.
  • User can read a message's content only once. Once the message has been read, the user will see a page indicating the message has already been read.
  • User can only read messages where they are the recipient.

The following optional functionality is complete:

  • User can attach an image.
  • User can have multiple recipients on one message.
  • User can log in with Facebook.
  • Use of the kaminari gem and jquery-infinite-pages gem to implement Infinite Scroll.
  • User gets an email when they receive a message, with a link to view the message.
  • User gets an email when a message they have sent is read with the time at which the message was read.
  • User can send a message to the email address of a non-registered user. The recipient will receive an email with a link to sign up for the service, and after creating an account, will be able to view the sent message.
  • User A can "block" User B. If User A blocks User B, they will not see messages from User B. User B will not know they have been blocked.
  • User can remove friends from their friends list.
  • User can unblock friends from their block list.

The following additional features are implemented:

  • Use nokogiri and overload the field_error_proc to replace the default fiele_with_errors with materializecss error pattern.
  • Use localStorage to store the last message id, which will be remove when read another message.
  • Animations and material design ui.
  • Remember facebook account and its messages.
  • Use Rails AJAX.
  • Use figaro gem to manage environment variables

Video Walkthrough

Here's a walkthrough of implemented user stories:

Video Walkthrough

GIF created with LiceCap.

Notes

Describe any challenges encountered while building the app.

License

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.