Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dahernandezsilve/p1redesclientexmpp
π± This project implements an instant messaging client that supports the XMPP protocol. π»
https://github.com/dahernandezsilve/p1redesclientexmpp
css fastapi js python react requests socket stanza websocket xml xmpp
Last synced: 3 months ago
JSON representation
π± This project implements an instant messaging client that supports the XMPP protocol. π»
- Host: GitHub
- URL: https://github.com/dahernandezsilve/p1redesclientexmpp
- Owner: Dahernandezsilve
- Created: 2024-07-31T20:42:24.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-27T19:31:05.000Z (5 months ago)
- Last Synced: 2024-09-22T19:02:13.215Z (4 months ago)
- Topics: css, fastapi, js, python, react, requests, socket, stanza, websocket, xml, xmpp
- Language: Python
- Homepage:
- Size: 2.89 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π± XMPP Client Project
![Client](ClientsCapture.png)## π Project Overview
This project implements an instant messaging client that supports the XMPP protocol. The main objectives are:
- Implement a protocol based on the standards.
- Understand the purpose of the XMPP protocol.
- Comprehend how XMPP services work.
- Apply knowledge in Web and Mobile programming, alongside good development practices.## π Features
The XMPP client supports the following functionalities:**Account Management**
- Register a new account on the server.
- Log in with an existing account.
- Log out of an account.
- Delete an account from the server.**Communication**
- Display all users/contacts and their status.
- Add a user to the contact list.
- Show contact details of a user.
- One-to-one communication with any user/contact.
- Participate in group conversations.
- Set presence messages.
- Send/receive notifications.
- Send/receive files.**XEPs**
Here are some XEPs that are implemented either directly or indirectly in the client
- XEP-0199: XMPP Ping
- XEP-0045: Multi-User Chat
- XEP-0077: In-Band Registration
- XEP-0136: Message Archiving
- XEP-0138: Stream Compression
- XEP-0363: HTTP File Upload
- XEP-0079: Advanced Message Processing
- XEP-0030: Service Discovery## π Requirements
Before you begin, ensure you have the following installed:
- ![Node.js](https://img.shields.io/badge/Node.js-20.12.1%2B-green?logo=nodedotjs&logoColor=white) Node.js (v20.12.1)
- ![npm](https://img.shields.io/badge/npm-8.0.0%2B-red?logo=npm&logoColor=white) npm (Node Package Manager)
- ![Yarn](https://img.shields.io/badge/yarn-1.22.19%2B-blue?logo=yarn&logoColor=white) Yarn (v1.22.19)
- ![Python](https://img.shields.io/badge/Python-3.11.8-blue?logo=python&logoColor=white) Python 3.11.8## βοΈ Installation
Clone the repository to your local machine:```bash
git clone https://github.com/Dahernandezsilve/P1RedesClienteXMPP.git
cd P1RedesClientXMPP
```### Install backend dependencies:
Navigate to the backend directory and create a virtual environment:```bash
python -m venv venv
source venv\Scripts\activate
pip install -r requirements.txt
```### Install frontend dependencies:
Navigate to the frontend directory and install npm dependencies:```bash
cd Frontend/ClienteXMPP
yarn install
```## π Usage
It is important to have two terminals running simultaneously: one for the frontend and another for the backend. π¨### Backend
Start the XMPP client backend:
Navigate to the backend directory and run:```bash
python server.py
```### Frontend
Run the frontend:
In the frontend directory, start the development server:```bash
yarn dev
```Automatically is going to open a website with the client, so you are ready to use it!.
### Account Management
- **Register a New Account:** Use the registration form to create a new XMPP account on the server.
- **Log in:** Enter your credentials to log in to your account.
- **Log out:** Simply click the logout button to disconnect.
- **Delete Account:** Permanently delete your account from the server through the settings menu.### Communication
- **View Contacts:** All your contacts will be listed along with their status.
- **Add Contacts:** Use the search bar to add new users to your contact list.
- **View Contact Details:** Click on any contact to view more details.
- **1-to-1 Chat:** Start a conversation by selecting a contact.
- **Group Chat:** Join or create a group chat.
- **Set Presence:** Update your status with a custom message.
- **Notifications:** Receive real-time updates and alerts on contact's requests or new messages.
- **File Transfer:** Send and receive files directly through the chat interface.## π‘ Features and Limitations
### ποΈ Features
- Cross-platform compatibility.
- Real-time messaging and notifications.
- Secure file transfer using XMPP protocol.### π¨ Limitations
- May require further testing on different XMPP servers because is configured specifically to alumchat.lol.
- The UI is optimized for modern browsers; older browsers may experience issues.It was tested on OperaGX.## π¨βπ» Development
### Structure
- **Frontend:** Developed using React, styled with CSS, and communicates with the backend via WebSocket.
- **Backend:** Built with Python, handling XMPP stanzas and providing APIs for the frontend with FastAPI.### Tools and Libraries
- **React:** For building the user interface.
- **WebSocket:** For real-time communication between the frontend and backend.
- **SleekXMPP:** Python library for handling XMPP protocol in the backend.## π― Goals Achieved
- Implemented core XMPP functionalities with a modern web interface.
- Ensured real-time communication and presence updates.
- Achieved cross-platform compatibility and easy deployment.## π Learning Outcomes
- Gained a deep understanding of the XMPP protocol and its applications.
- Developed skills in real-time web application development using modern technologies.
- Enhanced knowledge in handling concurrent programming challenges.## π§ Troubleshooting
- Ensure that the XMPP server is up and running.
- Check your firewall settings if you're unable to connect to the XMPP server.
- Verify that your Node.js and Python versions meet the project requirements.## π» Author
- Diego Alexander HernΓ‘ndez Silvestre | Carne 21270 π»You are welcome to clone and contribute this repository ππͺπͺ