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.
π₯ 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
Ready-to-use installers for popular operating systems:
π» Windows Installer (.exe) - One-click installation
π macOS App Bundle (.dmg) - Drag and drop installation
Need support for other platforms? Contact us at: shoyebff45@gmail.com
Clean and intuitive start page
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
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
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
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
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
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
Modular design for maximum maintainability and scalability:
π 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
| 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 |
- β 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)
- π» VS Code IDE - Modern development environment
- π Git & GitHub - Version control and collaboration
- π§ Maven - Dependency management and build automation
Ensure you have Java 17 or higher installed:
java --version-
Clone the Repository
git clone https://github.com/Shoyeb45/lan-messanger.git cd lan-messenger -
Development Setup (VS Code)
- Install Extension Pack for Java by Microsoft
- Navigate to
src/main/java/com/lanmessanger/Main.java - Click the Run button above the main method
-
Alternative Build Methods
# 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
We welcome contributions! Here's how to get started:
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Implement Your Feature
- Write clean, documented code
- Test thoroughly on multiple platforms
- Follow existing code style conventions
-
Submit Your Changes
git add . git commit -m "Add: your feature description" git push origin feature/your-feature-name
-
Create a Pull Request
- Include detailed description of changes
- Add screenshots for UI changes
- Reference any related issues
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
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
Requirements:
- Two or more devices on the same Wi-Fi network
- LAN Messenger installed on each device
Step-by-Step Testing:
-
Launch Application
- Open LAN Messenger on both devices
- Ensure both devices are connected to the same network
-
Establish Connection
- On Device A: Navigate to "Add Friend" page
- Enter the IP address of Device B
- Click "Add Friend"
-
Accept Friend Request
- Device B will receive a friend request notification
- Accept the request to establish connection
-
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 | 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 |
- Java Runtime: Version 17 or higher
- RAM: Minimum 512MB available
- Network: Active LAN/Wi-Fi connection
- Storage: 50MB free space
- Professor Zabi - Academic guidance and mentorship
- Baeldung - Comprehensive Java Socket programming tutorials
- Bro Code - Excellent Java Swing video tutorials
- AI Assistants - Code review, debugging assistance, and optimization suggestions
- Linus Torvalds - For creating Git, enabling collaborative development
- Google Gson - JSON serialization library
- Ikonli - Icon pack integration
- Java Development Kit - Core runtime and development tools
This project is licensed under the MIT License - see the LICENSE file for complete details.
Key Points:
- β Commercial use allowed
- β Modification and distribution permitted
- β Private use encouraged
- β No warranty provided
Found this project helpful? β Star the repository to show your support!
Questions or Issues? π§ shoyebff45@gmail.com
Want to Contribute? π Check out our Contributing Guidelines
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












