Skip to content

AirChat is a privacy-focused, local-first chat app built with Flutter. It enables users to discover, connect, and chat with nearby devices directly—no internet required.

License

Notifications You must be signed in to change notification settings

nishant9083/airchat

Repository files navigation

AirChat

AirChat is a privacy-focused, local-first chat app built with Flutter. It enables users to discover, connect, and chat with nearby devices directly—no internet required. All communication is encrypted end-to-end.

Screenshot

Device 1 Device 2


🚀 Features

  • Nearby Discovery: Find and connect with users around you using Android's Nearby Connections API.
  • Secure Messaging: All messages are encrypted using AES-256 and ECDH key exchange. (To be implemented)
  • File Sharing: Send files and media securely to connected peers.
  • Offline-First: Works without internet; all data is stored locally and securely.
  • Modern UI: Clean, intuitive interface with theming support.
  • Cross-Platform: Runs on Android, iOS, Windows, macOS, and Linux (with platform-specific features).

🛠️ Tech Stack

Component Technology
UI Flutter
Comm Protocol Android Nearby API (via Platform Channels)
Encryption AES-256, ECDH (Libsodium or custom)
State Mgmt Provider/Bloc
Storage Hive/SQLite (Encrypted)

🔹 Architecture (High-Level)

  • Flutter Frontend
    • Initiates connection via platform channels
    • Displays chat UI and handles local logic
  • Android Native (Kotlin)
    • Handles Nearby Advertising & Discovery
    • Sends/receives messages
  • Encryption Layer
    • Keys are exchanged securely
    • Each message is encrypted before sending

🏛 Project Folder Structure

airchat/
  ├── android/           # Android native code (Kotlin, manifests)
  ├── ios/               # iOS native code (Swift, assets)
  ├── lib/               # Flutter/Dart source code
  │   ├── main.dart      # App entry point
  │   ├── models/        # Data models (ChatUser, ChatMessage, etc.)
  │   ├── services/      # Platform channels, connection logic
  │   ├── providers/     # State management (Provider)
  │   ├── ui/            # Screens and UI widgets
  │   ├── utility/       # Helpers, utilities
  │   └── widgets/       # Reusable widgets
  ├── assets/            # App icons, splash, images
  ├── test/              # Unit/widget tests
  ├── pubspec.yaml       # Flutter dependencies
  └── README.md          # Project documentation

⚡ Getting Started

Prerequisites

  • Flutter SDK (3.x recommended)
  • Android Studio/Xcode for mobile builds
  • A device or emulator (Nearby API requires real device for full functionality)

Setup

  1. Clone the repository:
    git clone https://github.com/nishant9083/airchat.git
    cd airchat
  2. Install dependencies:
    flutter pub get
  3. (Optional) Generate icons and splash:
    flutter pub run flutter_launcher_icons:main
    flutter pub run flutter_native_splash:create

Running the App

  • Android:
    flutter run -d android
  • iOS:
    flutter run -d ios
  • Desktop (Windows/macOS/Linux):
    flutter run -d windows  # or macos/linux
  • Web:
    flutter run -d chrome

📱 Usage

  • Launch the app on two or more devices.
  • Set your display name when prompted.
  • Tap the discover button to find nearby devices.
  • Tap a user to connect and start chatting.
  • Send text, images, videos, or files securely.
  • Use the search bar to quickly find chats or users.

🤝 Contributing

Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature/your-feature)
  3. Make your changes and commit (git commit -am 'Add new feature')
  4. Push to your fork (git push origin feature/your-feature)
  5. Open a Pull Request

Please follow the existing code style and add tests where appropriate.


🛡️ License

This project is licensed under the MIT License. See LICENSE for details.


🙏 Credits

About

AirChat is a privacy-focused, local-first chat app built with Flutter. It enables users to discover, connect, and chat with nearby devices directly—no internet required.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published