https://github.com/shoyeb45/lan-messenger-java-p2p-chat
๐ฅ Real-time P2P chat application for LAN networks built with Java Socket Programming. Cross-platform messaging with auto-discovery, persistent storage, and modern Swing GUI. Perfect for local network communication without internet dependency.
https://github.com/shoyeb45/lan-messenger-java-p2p-chat
chat-application cross-platform gui-application java java-networking java-swing lan-chat lan-messenger local-network multithreading netwo p2p peer-to-peer socket-programming swing-gui tcp udp
Last synced: 6 months ago
JSON representation
๐ฅ Real-time P2P chat application for LAN networks built with Java Socket Programming. Cross-platform messaging with auto-discovery, persistent storage, and modern Swing GUI. Perfect for local network communication without internet dependency.
- Host: GitHub
- URL: https://github.com/shoyeb45/lan-messenger-java-p2p-chat
- Owner: Shoyeb45
- License: mit
- Created: 2025-05-09T03:53:31.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-06-07T06:30:55.000Z (7 months ago)
- Last Synced: 2025-06-25T07:43:08.759Z (6 months ago)
- Topics: chat-application, cross-platform, gui-application, java, java-networking, java-swing, lan-chat, lan-messenger, local-network, multithreading, netwo, p2p, peer-to-peer, socket-programming, swing-gui, tcp, udp
- Language: Java
- Homepage:
- Size: 1.99 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# **LAN Messenger: Real-Time Peer-to-Peer Chat Application**
       
A **powerful peer-to-peer Java chat application** designed for seamless communication between devices on the same Local Area Network (LAN). Built with advanced **Socket programming**, **multithreading**, and an intuitive **Swing GUI** for cross-platform compatibility.
---
## ๐ Key Features
### โจ **What Makes LAN Messenger Special?**
๐ฅ **Zero Internet Required** - Works entirely on your local network
โก **Real-time Communication** - Instant message delivery with TCP protocol
๐ **Auto Friend Discovery** - Automatically find other users on your network
๐พ **Persistent Chat History** - All conversations saved locally and securely
๐จ **Modern Single-Page Interface** - React-inspired design with smooth navigation
๐ฑ **Fully Responsive** - Adapts to any screen size and resolution
๐ **Cross-Platform Compatible** - Works on Windows, macOS, and Linux
---
## ๐ฆ Quick Downloads
**Ready-to-use installers for popular operating systems:**
๐ป **[Windows Installer (.exe)](https://yourhost.com/lanmessanger/installer.exe)** - One-click installation
๐ **[macOS App Bundle (.dmg)](https://yourhost.com/lanmessanger/lanmessenger.dmg)** - Drag and drop installation
**Need support for other platforms?** Contact us at: [shoyebff45@gmail.com](mailto:shoyebff45@gmail.com)
---
## ๐ฏ Core Features Deep Dive
Clean and intuitive start page
### 1. **Modern Single-Page Application (SPA)**
Built with a contemporary approach similar to modern web applications, featuring:
- **State Management**: React-inspired state handling using Java interfaces and classes
- **Smooth Navigation**: Seamless page transitions without window reloads
- **Enhanced UX**: Improved accessibility and user experience
Intuitive navigation bar for easy access to all features
### 2. **Intelligent Friend Discovery**
Advanced network scanning capabilities:
- **UDP Protocol**: Lightning-fast user detection on the same network
- **Real-time Updates**: Automatically refreshes available users
- **Zero Configuration**: Works out-of-the-box without manual setup
### 3. **Secure Local Storage**
Your data remains private and secure:
- **JSON Storage**: Efficient data serialization using GSON library
- **Local-Only**: All data stored exclusively on your device
- **Persistent History**: Conversations and friend lists automatically saved
### 4. **Manual Friend Addition**
Flexible friend management:
- **IP Address Support**: Add friends directly using their IP address
- **Friend Requests**: Secure friend request system
- **Contact Management**: Easy-to-use friend list interface
Simple and secure friend addition process
### 5. **Responsive Design**
Adapts to any screen configuration:
- **Dynamic Layouts**: Automatically adjusts to window resizing
- **Multi-Resolution Support**: Works on various screen sizes
- **Consistent Experience**: Maintains functionality across different dimensions
### 6. **Real-Time Messaging**
Experience instant communication:
- **TCP Protocol**: Reliable message delivery
- **Multi-threading**: Smooth performance without UI freezing
- **Live Status Updates**: See when friends are online and available
---
## ๐๏ธ Project Architecture
**Modular design for maximum maintainability and scalability:**
```plaintext
๐ LAN-Messenger/
โโโ ๐ lib/ # External JAR dependencies
โโโ ๐ public/ # Static assets and images
โ โโโ ๐ images/
โ โโโ ๐ app/ # Application icons and graphics
โ โโโ ๐ readme/ # Documentation images
โโโ ๐ src/
โโโ ๐ main/
โโโ ๐ java/
โโโ ๐ com/
โโโ ๐ lanmessanger/
โโโ ๐ app/ # Application entry point and configuration
โโโ ๐ database/ # Data persistence and management
โโโ ๐ models/ # Data models and entity schemas
โโโ ๐ network/ # Core networking functionality
โ โโโ ๐ client/ # Client-side communication
โ โโโ ๐ clientHandler/ # Connection management
โ โโโ ๐ discovery/ # Network discovery logic
โ โโโ ๐ server/ # Server-side operations
โโโ ๐ ui/ # User interface components
โโโ ๐ components/ # Reusable UI components
โ โโโ ๐ addFriendPage/
โ โโโ ๐ chatPage/
โ โโโ ๐ navBar/
โ โโโ ๐ scannerPage/
โโโ ๐ pages/ # Application pages
โโโ ๐ router/ # SPA-style navigation
โโโ ๐ state/ # Centralized state management
โโโ ๐ utils/ # Helper utilities
```
### ๐ **Architecture Overview**
| Component | Responsibility | Key Features |
|-----------|----------------|--------------|
| **`app/`** | Application lifecycle and global configuration | Launch logic, settings management |
| **`network/`** | Core networking operations | Socket programming, P2P connections, discovery |
| **`ui/`** | User interface and user experience | Swing components, responsive design |
| **`models/`** | Data structures and persistence | Entity definitions, JSON serialization |
| **`database/`** | Local data management | Friend lists, chat history, user preferences |
---
## ๐ ๏ธ Technology Stack
### **Core Technologies**
- **โ Java 17+** - Modern Java features and performance optimizations
- **๐จ Java Swing** - Cross-platform GUI framework (`javax.swing`)
- **๐ Java Networking** - Socket programming with TCP/UDP protocols (`java.net`)
- **โก Collections Framework** - Efficient data structure management
- **๐ Gson Library** - JSON serialization and deserialization (`com.google.gson`)
- **๐ฏ Ikonli FontAwesome** - Modern icon pack (`org.kordamp.ikonli`)
### **Development Tools**
- **๐ป VS Code IDE** - Modern development environment
- **๐ Git & GitHub** - Version control and collaboration
- **๐ง Maven** - Dependency management and build automation
---
## ๐ Quick Start Guide
### **Prerequisites**
Ensure you have Java 17 or higher installed:
```bash
java --version
```
### **Installation & Setup**
1. **Clone the Repository**
```bash
git clone https://github.com/Shoyeb45/lan-messanger.git
cd lan-messenger
```
2. **Development Setup (VS Code)**
- Install [Extension Pack for Java by Microsoft](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)
- Navigate to `src/main/java/com/lanmessanger/Main.java`
- Click the **Run** button above the main method
3. **Alternative Build Methods**
```bash
# Using Maven (if pom.xml is configured)
mvn clean compile exec:java
# Direct compilation (for simple setups)
javac -cp "lib/*:src" src/main/java/com/lanmessanger/Main.java
java -cp "lib/*:src" com.lanmessanger.Main
```
### **Contributing**
We welcome contributions! Here's how to get started:
1. **Create a Feature Branch**
```bash
git checkout -b feature/your-feature-name
```
2. **Implement Your Feature**
- Write clean, documented code
- Test thoroughly on multiple platforms
- Follow existing code style conventions
3. **Submit Your Changes**
```bash
git add .
git commit -m "Add: your feature description"
git push origin feature/your-feature-name
```
4. **Create a Pull Request**
- Include detailed description of changes
- Add screenshots for UI changes
- Reference any related issues
---
## ๐ง How It Works
### **Network Architecture**
LAN Messenger implements a sophisticated **peer-to-peer networking model**:
Decentralized P2P communication between LAN Messenger instances
**Key Networking Features:**
- **TCP Protocol**: Reliable message delivery with connection-oriented communication
- **UDP Discovery**: Fast and lightweight user detection broadcasts
- **Multi-threading**: Concurrent handling of multiple connections
- **Dual Role Architecture**: Each instance acts as both client and server
Each instance simultaneously operates as client and server
### **User Interface Architecture**
Built with a modern, component-based approach:
Hierarchical component structure with centralized state management
**UI Design Principles:**
- **Single Page Application**: Smooth navigation without window refreshes
- **Component Reusability**: Modular design for maintainable code
- **State Management**: Centralized application state similar to modern web frameworks
- **Responsive Layout**: Dynamic adaptation to different screen sizes
---
## ๐งช Testing Guide
### **Local Testing Setup**
**Requirements:**
- Two or more devices on the same Wi-Fi network
- LAN Messenger installed on each device
**Step-by-Step Testing:**
1. **Launch Application**
- Open LAN Messenger on both devices
- Ensure both devices are connected to the same network
2. **Establish Connection**
- On Device A: Navigate to "Add Friend" page
- Enter the IP address of Device B
- Click "Add Friend"
3. **Accept Friend Request**
- Device B will receive a friend request notification
- Accept the request to establish connection
4. **Test Messaging**
- Send messages between devices
- Verify real-time delivery and persistence
- Test various message types and lengths
**Success Indicators:**
- โ
Real-time message delivery
- โ
Message persistence after app restart
- โ
Online/offline status updates
- โ
Stable connection during extended use
---
## ๐ป Platform Support
| Platform | Status | Notes |
|----------|---------|-------|
| **Windows 10/11** | โ
Full Support | Native installer available |
| **macOS** | โ
Full Support | DMG package available |
| **Linux (Ubuntu/Debian)** | โ
Full Support | JAR executable |
| **Linux (Other Distros)** | โ
Compatible | May require Java installation |
### **System Requirements**
- **Java Runtime**: Version 17 or higher
- **RAM**: Minimum 512MB available
- **Network**: Active LAN/Wi-Fi connection
- **Storage**: 50MB free space
---
## ๐ Additional Resources
### **Learning Resources**
- [Java Socket Programming Guide](https://www.baeldung.com/a-guide-to-java-sockets)
- [Java Swing Tutorial by Bro Code](https://www.youtube.com/@BroCodez)
- [Multithreading in Java](https://docs.oracle.com/javase/tutorial/essential/concurrency/)
### **Documentation**
- [Java Networking API](https://docs.oracle.com/javase/8/docs/api/java/net/package-summary.html)
- [Gson Documentation](https://github.com/google/gson/blob/master/UserGuide.md)
- [Maven Build Lifecycle](https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)
---
## ๐ Acknowledgments
### **Special Thanks**
- **[Professor Zabi](https://www.linkedin.com/in/syedzaabii/)** - Academic guidance and mentorship
- **[Baeldung](https://www.baeldung.com/)** - Comprehensive Java Socket programming tutorials
- **[Bro Code](https://www.youtube.com/@BroCodez)** - Excellent Java Swing video tutorials
- **AI Assistants** - Code review, debugging assistance, and optimization suggestions
- **[Linus Torvalds](https://github.com/torvalds)** - For creating Git, enabling collaborative development
### **Open Source Libraries**
- **Google Gson** - JSON serialization library
- **Ikonli** - Icon pack integration
- **Java Development Kit** - Core runtime and development tools
---
## ๐ License
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for complete details.
**Key Points:**
- โ
Commercial use allowed
- โ
Modification and distribution permitted
- โ
Private use encouraged
- โ No warranty provided
---
## ๐ Connect & Support
**Found this project helpful?** โญ **Star the repository** to show your support!
**Questions or Issues?** ๐ง **[shoyebff45@gmail.com](mailto:shoyebff45@gmail.com)**
**Want to Contribute?** ๐ **Check out our [Contributing Guidelines](#contributing)**
---
**Keywords:** LAN Messenger, Java Chat Application, P2P Messaging, Local Network Communication, Socket Programming, Real-time Chat, Cross-platform Messaging, Network Discovery, Peer-to-Peer, Java Swing GUI, TCP/UDP Protocol, Multithreading, Local Area Network, Instant Messaging, Java Networking