{"id":20743020,"url":"https://github.com/pandh4cker/corochat","last_synced_at":"2026-05-08T02:18:33.718Z","repository":{"id":101886497,"uuid":"257040227","full_name":"PandH4cker/CoroChat","owner":"PandH4cker","description":"Whatsapp-Like Application, Chat room","archived":false,"fork":false,"pushed_at":"2022-05-20T21:38:47.000Z","size":63230,"stargazers_count":1,"open_issues_count":2,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-28T21:47:38.273Z","etag":null,"topics":["chat","chat-application","chat-room","chatroom","design-patterns","java11","java11-maven","javafx","javafx-11","javafx-application","javafx-desktop-apps","jbcrypt","junit-5","maven","maven-pom","mavenw","mvc-architecture","ojdbc","oracle-db","singleton-pattern"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PandH4cker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-19T15:54:43.000Z","updated_at":"2022-11-22T03:41:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a260dcf-8823-480c-a5d9-fe1be2748dd3","html_url":"https://github.com/PandH4cker/CoroChat","commit_stats":null,"previous_names":["pandh4cker/corochat","mrrraph/corochat"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/PandH4cker/CoroChat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FCoroChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FCoroChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FCoroChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FCoroChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PandH4cker","download_url":"https://codeload.github.com/PandH4cker/CoroChat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PandH4cker%2FCoroChat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27994391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","chat-application","chat-room","chatroom","design-patterns","java11","java11-maven","javafx","javafx-11","javafx-application","javafx-desktop-apps","jbcrypt","junit-5","maven","maven-pom","mavenw","mvc-architecture","ojdbc","oracle-db","singleton-pattern"],"created_at":"2024-11-17T07:08:47.967Z","updated_at":"2025-12-24T03:30:26.592Z","avatar_url":"https://github.com/PandH4cker.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CoroChat\n---\n## Authors: \u003cbr /\u003e \u003cbr /\u003e [Raphael Dray](www.linkedin.com/in/raphaeldray), [Thierry Khamphousone](www.linkedin.com/in/tkhamphousone) \u003cbr /\u003e \n##### Diane Martin, Alexandre De Sevin, Eythan Dahan, Boris Houessou\n---\n\u003e This program is a desktop application. \u003cbr /\u003e\n\u003e It integrates the client and the server which are communicating each other through HTTP Routes. \u003cbr /\u003e\n\u003e The client fetches and posts data from/to the server which returns JSON-Encoded responses.\n\u003e The client is a Whatsapp-Like application.\n\u003e The project was carried out using the scrum method.\n\n\u003e It's written in __Java programming language including some libraries like so:__\n+ [JDBC Oracle DB](https://www.oracle.com/fr/database/technologies/appdev/jdbc.html)\n+ [Java FX 11](https://openjfx.io/)\n+ [JUnit 5](https://junit.org/junit5/)\n+ [Animate FX](https://typhon0.github.io/AnimateFX/)\n+ [JBcrypt](https://www.mindrot.org/projects/jBCrypt/)\n+ [Gson](https://github.com/google/gson)\n\n---\n\n## Note: \n\u003e To be able to launch the LoginView, you must configure javaFX \u003cbr /\u003e\n\u003e Go to:  Run \u003e Edit configuration \u003e LoginView \u003e VM option\n\u003e\n\u003e Inside the VM option text zone in IntellJ, add the location of the javaFX library as the example below:\n\n    --module-path \n    /Path/To/javafx-sdk-11.0.2/lib \n    --add-modules \n    javafx.controls,javafx.fxml\n\n---\n\n## Presentation: \n\nHow does CoroChat desktop app works ? \nWe chose to show an use case where three users will connect and chat together.\n\u003e Thierry Khamphousone : Yulypso\n\u003e Raphaël Dray : MrrRaph\n\u003e Felicia Ionascu : FeliciaIonascu\n\n---\n\n### Main menu\nHere is the main menu where users can sign in or go to sign up panel. \n\u003cimg align=\"center\" width=\"900\" height=\"560\" src=\"./files/pictures/1MainMenu/LoginView.png\"/\u003e\n\n---\n\n### Sign up \nThierry would like to access the CoroChat room. Firstly, he has to sign up. \n\u003cimg align=\"center\" width=\"900\" height=\"560\" src=\"./files/pictures/2SignUp/1SignUp.png\"/\u003e\n\n\u003e Check:\n\u003e first name: cannot contains number\n\u003e last name: cannot contains number\n\u003e email: email format without capital letters\n\u003e pseudo: Cannot start with a number\n\u003e password: must contains at least 1 lowercase letter, 1 uppercase letter, 1 number and 1 special character\n\nPress \"Get started to sign up\".\n\nIf an user tries to create an account with an existing email or pseudo, a pop up appears to alert the user.\n\n\u003cimg align=\"center\" width=\"900\" height=\"560\" src=\"./files/pictures/2SignUp/3PopUpError1.png\"/\u003e\n\n\u003e Email already exists.\n\n\u003cimg align=\"center\" width=\"900\" height=\"560\" src=\"./files/pictures/2SignUp/4PopUpError2.png\"/\u003e\n\n\u003e Pseudo already exists.\n\n\nData are stored in the Oracle Database.\n\n\u003cimg align=\"center\" width=\"900\" height=\"170\" src=\"./files/pictures/2SignUp/5DatabaseAddedUsers.png\"/\u003e\n\n\u003e 3 lines has been added for our three users\n\u003e Password are secure thanks to the blowfish encryption\n\n---\n\n### Connect from the login view\nFor an existing account, the user can connect on the CoroChat room from the Login View thanks to his email and password.\n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/3ConnectLoginView/1SignIn.png\"/\u003e\n\n\u003e If an user with the same email is already connected a pop up appears to alert the user.\n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/3ConnectLoginView/2PopUpSignIn.png\"/\u003e\n\n---\n \n### CoroChat Room\nOur three users are now connected on the CoroChat room. They will now try to communicate through the interface.\n \n\u003cimg align=\"center\" width=\"600\" height=\"700\" src=\"./files/pictures/4ChatView/1.png\"/\u003e\n\n\u003e FeliciaIonascu starts by sending a message. \n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/4ChatView/2.png\"/\u003e\n\n\u003e Then Yulypso and MrrRaph reply. \n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/4ChatView/3.png\"/\u003e\n\n\u003e You can use emoticon to communicate your feeling like MrrRaph!\n\u003e\n\u003e FeliciaIonascu wrote something wrong by mistake: \"OrientEEEE\" and now she is trying to delete the message.\n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/4ChatView/4.png\"/\u003e\n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/4ChatView/6.png\"/\u003e\n\nHere we can find out that the message has been correctly deleted from the database.\n\n\u003cimg align=\"center\" width=\"1000\" height=\"200\" src=\"./files/pictures/4ChatView/5.png\"/\u003e\n\n\u003cimg align=\"center\" width=\"1000\" height=\"200\" src=\"./files/pictures/4ChatView/7.png\"/\u003e\n\n---\n\n### Disconnect\nNow the users would like to disconnect from the CoroChat room. \n\n\u003cimg align=\"center\" width=\"1200\" height=\"700\" src=\"./files/pictures/4ChatView/8.png\"/\u003e\n\n\u003e to disconnect, each user has to click on the top right button.\n\u003e to leave the app, each user has to click on the top left red button.\n\u003e to reduce the screen, each user has to click on the top yellow button.\n\nAfter this, disconnected users are back to the Login panel.\n\n\u003cimg align=\"center\" width=\"900\" height=\"600\" src=\"./files/pictures/5DisconnectLoginView/1.png\"/\u003e\n\n---\n\n### Logger\nWithin our project source code, we added a logger to log every information, warning or errors. \nHere are some examples. \n\n\u003cimg align=\"center\" width=\"550\" height=\"30\" src=\"./files/pictures/6Log/Log1.png\"/\u003e\n\n\u003e logger in the server INFO\n\u003e INFO: information about what happened\n\n\u003cimg align=\"center\" width=\"733\" height=\"50\" src=\"./files/pictures/6Log/Log2.png\"/\u003e\n\n\u003e logger in the client INFO and WARNING\n\u003e INFO: information about what happened\n\u003e WARGNIN: Client error\n\n\u003cimg align=\"center\" width=\"1310\" height=\"275\" src=\"./files/pictures/6Log/Log3.png\"/\u003e\n\n\u003e logger in the client INFO, WARNING and ERROR\n\u003e INFO: information about what happened\n\u003e WARNING: Client error\n\u003e ERROR: Databse error\n\n---\n### Technical debt\n\n+ We could not implement the .jar executable from the mvnw script, so we provided it with the IntellJ build.\n\n---\n### UML Class Diagram\n\n\u003cimg src=\"./files/pictures/classes.png\"\n     alt=\"Project UML\"\n     style=\"float: left; margin-right: 10px\"/\u003e\n     \n---\n## Last Release Version: 1.0.0\n### Changelog:\n\u003e #### Version 1.0.0\n\u003e Added JavaDoc in files directory \u003cbr /\u003e\n\u003e Added JavaFx into lib directory \u003cbr /\u003e\n\u003e Added client and server artifacts \u003cbr /\u003e\n\u003e Added UML Diagram in the README.md \u003cbr /\u003e\n\u003e Added bash script to run client and server \u003cbr /\u003e\n---\n\u003e #### Version 0.0.8\n\u003e Refactored modules between client and server.\n---\n\u003e #### Version 0.0.7\n\u003e Added Unit Tests. \u003cbr /\u003e\n---\n\u003e #### Version 0.0.6\n\u003e Added Logger interface with its implementation for logging information as well as in console and in a file stored on the server/client.\n---\n\u003e #### Version 0.0.5\n\u003e Added JavaDoc inside all the classes\n---\n\u003e #### Version 0.0.4\n\u003e Added client commands for deleting messages. \u003cbr /\u003e\n\u003e Added popup for informing the user when error on the login view. \u003cbr /\u003e\n\u003e Added the Message model for storing messages in the database. \u003cbr /\u003e\n\u003e Added MessageRepository to the AbstractCorochatDatabase. \u003cbr /\u003e\n\u003e Added Dao and its helpers for communicating with the message table.\n\u003e Added the button over our own message for deleting them. \u003cbr /\u003e\n\u003e Added methods inside the chat controller for interacting with the other users in case of connecting, deleting, sending actions.\n---\n\u003e #### Version 0.0.3\n\u003e Refactored design colors from linear gradient violet to darkblue. \u003cbr /\u003e\n\u003e Added support for OS validations. \u003cbr /\u003e\n\u003e Added second view ChatView and its ChatController for performing action on the Chat view. \u003cbr\u003e\n\u003e Refactored LoginController and added connection between the server and the view. \u003cbr /\u003e\n\u003e Refactored MultiThreadedServer class. \u003cbr /\u003e\n\u003e Refactored classes in the data package. \u003cbr /\u003e\n\u003e Added new Index for handling pseudo duplication in the database. \u003cbr /\u003e\n---\n\u003e #### Version 0.0.2\n\u003e Added UserDao interface containing abstract sql methods to interact with the DB. \u003cbr /\u003e\n\u003e Added DataUserName class containing the names of the user columns and the table name. \u003cbr /\u003e\n\u003e Added AbstractCorochatDatabase defining abstract dao method and connecting the server to the Oracle DB by the Singleton design pattern. \u003cbr /\u003e\n\u003e Added UserRepository in order to interact asynchronously with the Oracle DB for the user table. \u003cbr /\u003e\n\u003e Implemented UserDao and AbstractCorochatDatabase:\n\u003e * UserDaoImpl implements UserDao sql methods to interact with the Oracle DB user table.\n\u003e * CorochatDatabase extends AbstractCorochatDatabase with a Singleton design pattern and use himself as an implementation for instantiating a database.\n---\n\u003e #### Version 0.0.1\n\u003e Added LoginView fxml created with SceneBuilder 2.0, the design of the Login view. \u003cbr /\u003e\n\u003e Added Utils to handle email validation and password complexity and helpers for JavaFX. \u003cbr /\u003e\n\u003e Added UserModel to instantiate it in further.\n\u003e Added LoginView JavaFX java class screen.\n\u003e Added LoginController to handle actions on the LoginView.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandh4cker%2Fcorochat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpandh4cker%2Fcorochat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpandh4cker%2Fcorochat/lists"}