Skip to content

Latest commit

 

History

History
116 lines (94 loc) · 3.43 KB

README.md

File metadata and controls

116 lines (94 loc) · 3.43 KB

Chat

A simple chat application for android with a python flask server as the backend.

Setup

Chat server: Ubuntu (quick and easy)

Run this command to clone the repository, install dependencies, and get the Chat server up and running in daemon mode.

curl https://raw.githubusercontent.com/auroranil/Chat/master/setup_server.sh | sh

Chat server: All operating systems (more challenging)

  • Clone the repository
git clone https://github.com/auroranil/Chat
  • Install these following dependencies:
    • python
    • bcrypt (flask-bcrypt needs this)
    • eventlet (flask-socketio prefers this the most; "gevent" is an alternative)
    • sqlite (for portable database; easier to setup than mysql)
    • pip packages
      • flask
      • flask-bcrypt
      • flask-socketio
      • sqlalchemy
      • flask-sqlalchemy
  • Run python /path/to/Chat/server_app -d to start the server in daemon mode.

Chat client: Web

(Currently work in progress)

Once Chat server is running, Chat client is accessible via a web browser by heading to http://localhost:<port>

Chat client: Android

  • Open android_app gradle project in either Android Studio or Eclipse with the gradle plugin.
  • Install android application on your phone and run the app.

Chat server

Run

  • Run python /path/to/Chat/server_app -d to start the server in daemon mode, or
  • Run python /path/to/Chat/server_app -t to start the server within a terminal.

Help

  • Run python /path/to/Chat/server_app -h to view help details.

Stop daemon

  • Run sh /path/to/Chat/server_app/stop_daemon_server.sh to stop the daemon for Chat server.

Features

  • Able to remember user when logging in/signing up
  • Rooms
    • Public rooms (displays a list of rooms to join, and a edittext and button to host a room)
    • Display rooms in a list
    • Shows list even if you cannot connect to the server (if you choose to be remembered)
  • User
    • User profile (username, joined date, last active date, is online)
  • Friends
    • Ability to add (via requests) and remove friends
    • Display friends (and friend requests) in a list
    • Private message chat to a friend
  • Server can run in daemon mode.

TODO:

At all stages of development

  • Refactor code
  • Remove bugs
  • Refine UI constantly

Friends

  • In friends listview, make ignore request button work
  • In friends listview, add menu features
  • When a friend is removed, manage their conversations (currently its left alone in the database but inaccessible in the client app)
  • Block list
  • Ordering
  • Able to search a friend

Delete access

  • Ability to delete room
  • Ability to delete account

Caching

  • Messages
  • Friends

Communication

  • Replace HTTP POST API requests with RESTful HTTP API requests
  • Isolate controller code from activities within android application
  • Ensure message delivery

Rooms

  • Private rooms (request to join, join with password)
  • Able to search a room
  • Vote rooms
  • Ordering (most recent, most voted)

Chat

  • Show where people have read up to (like in google+ hangouts)
  • Notifications
  • End to end encryption (via HTTPS + Let's Encrypt; will sign public keys if requested)
  • Able to search chat messages

Web

  • Replicate android features onto the web application

User

  • Able to edit and save user bio
  • Able to recover by using email address (optional)
  • Show user activity in user profile

Welcome screen

  • Dynamically form-validate welcomeActivity as credentials are being entered.

Testing

  • Write test cases