Coder Social home page Coder Social logo

coderchat's Introduction

Homework 2 - Name of App

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

Submitted by: An Vo

Time spent: 15 hours

URL: https://rocky-earth-87978.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.
  • 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.
  • Implement Infinite Scroll. Hint: you can use the kaminari gem and jquery-infinite-pages gem.
  • 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.

The following additional features are implemented:

  • (List anything else that you can get done to improve the app functionality!)

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.

coderchat's People

Watchers

 avatar  avatar

coderchat's Issues

Thanks!

Hi @VnMa, nice work with the homework ๐Ÿ‘

The goals of this homework are:

  • To know how to implement authentication from scratch in Rails with the help of the has_secure_password class method and the bcrypt gem (while understanding what they do under the hood)
  • To design a more complex schema for a web app and be more familiar with ActiveRecord API such as custom foreign keys for belongs_to/has_many, using has_many :through and building more advanced queries by chaining where, order, and merge
  • To build more complex forms in views that involve multiple models.

Quick review:

  • Good work with custom logout route and the combination between resources and only.
  • Good logic with not allow add friend/sent messages to yourself.
  • Good work with models' relationship definition.
  • Good use with helper_method.

Issues:

  • Can't sign up on Heroku.

Suggestions

  • Should validate email validity on your sign up form.
  • Should validate new message form.
  • We can define multiple helper methods in the same line, g.e. helper_method :current_user, :get_path.
  • Should check whether user signed in or not before allowing them add friends or send message.

Good submission. Keep your good work ๐Ÿ’ฏ Let us know if you have any feedback.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.