GithubHelp home page GithubHelp logo

mahmoudfawzykhalil / chatty Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 2.0 2.53 MB

A desktop chatting application built using JavaFX and RMI as our first project at the Information Technology Institute. It takes full advantage of JavaFX's reactive programming model, using property binding to synchronize Models with Views.

Java 90.61% CSS 9.39%
java javafx jdbc rmi

chatty's Introduction

Chatty

A desktop chatting application built using JavaFX and RMI as our first project at the Information Technology Institute. It takes full advantage of JavaFX's reactive programming model, using property binding to synchronize Models with Views.

πŸ› Architecture

This software project was built using a layered architecture. The following diagram demonstrates an example use case that goes through all the layers.

image

βš™ Features

  • Registration and login
  • One to one and group chats
  • File transfer
  • Server statistics and management
  • Updating user profiles
  • AIML chatbot
  • Auto-detect any available server using a UDP discovery protocol
  • Voice chat
  • Save messages to database

Animation Animation2

βš™ Technologies used

  • Maven
  • JDBC
  • Sockets
  • RMI
  • JavaFX
  • IO / NIO
  • Bean Validation (Hibernate Validator)
  • MapStruct
  • Logback
  • HikariCP
  • MySQL
  • Spring Security Crypto

πŸ›  How to run

Maven

  • Download version 0.0.4.3 of the chatbot dependency from here.
  • Install it using the following maven command:
mvn install:install-file -Df`ile=Ab.jar -DgroupId=com.google -DartifactId=Ab -Dversion=0.0.4.3 -Dpackaging=jar
  • Run the mvn install phase from the chatty-parent directory to create the shaded executable jars in the target/ directory
  • Run the jars using the java -jar command

MySQL

  • Use the chatty.sql script to create the database using MySQL 8.0.28
  • Create a database user using MySQL Commandline 8.0 using the following commands:
CREATE USER 'chattyuser'@'localhost' IDENTIFIED BY 'P@$$word';
GRANT ALL PRIVILEGES ON chatty . * TO 'chattyuser'@'localhost';
FLUSH PRIVILEGES;

πŸ‘·β€β™€οΈ Contributors

chatty's People

Contributors

mahmoudfawzykhalil avatar ahmedosama0099 avatar salmafayez avatar hafsamohamed avatar christinenedaa avatar

Stargazers

0xFish avatar

Watchers

 avatar

chatty's Issues

Status notifications

  • 1. User logs in, calls connectionDao.notifyOnline(List contactPhoneNumbers)

  • 2. User signs out, calls connectionDao.unregister -> this notifies people he's offline now

  • 4. Handle exceptions in places that call Client to remove it from the client list and notify all users (so the removeClient method should automatically call notfifyOffline

  • 5. When a user logs in and his contacts get loaded, he should query the server to find out which of them are currently online and set their status color properly!

logback for logging

e.g. attempt to login
register attempt + failed
registry creation
don't log sensitive data
don't print the entire stack trace in logging
just the message (to prevent hacking) (Only in debugging + remove on commit)
don't e.printStackTrace(), instaed, log)

Refactor views to use ListView

  • Osama's ListView (Add Group)
  • Hafsa's ListView (Invitation)
  • ChatView's ListView
  • Invitation CellFactory
  • ChatView CellFactory

Adding Contact Usecase

  • Accept invite should fetch ContactDto of accepted contact and server gives it to Client by addNewContacts method + delete from UI
  • Refuse invite should just delete from db + delete from UI
  • Add contact should auto accept if user already sent me an invitaiton: remove invitation from db + add contact to db + update contact lists of both contacts
  • Add contact should send the invite to the online receiver immediately

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.