Skip to content

Impulse is a file-sharing application, built with flutter, that allows devices within the same network to effortlessly transfer and share files across the network using a single connection.

License

Notifications You must be signed in to change notification settings

kannel-outis/impulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

impulse




Introduction πŸ‘‹

Impulse is a file-sharing application, built with flutter, that allows devices within the same network to effortlessly transfer and share files across the network using a single connection.

Features πŸ’‘

Impulse presents a rich set of features that contribute to the effortless sharing of files among devices, which include...

  • πŸ“± Simple and adaptive UI : Impulse offers a very simple, user-friendly and easy to navigate User Interface. Impulse seamlessly accommodates and adjusts to larger screen sizes, presenting a clean and user-friendly interface tailored to desktop dimensions.
  • πŸ”ƒ Share and receive file on a single connection : With impulse, both devices can send and receive file at thesame time. i.e both devices act as a server and client at once.
  • πŸ“‘ Quick scan to discover available networks : Impulse offers a quick and efficient method for scanning and discovering available devices on the network.
  • πŸ”Ž QR Scan for faster network discovery :Not finding Quick Scan quick ;) enough?, fear not. Impulse offers another quick option to connect directly with a ready host.
  • πŸ“‚ In-built file manager : Impulse comes with its very own built-in file manager. you don't have to leave your confort zone to select files, select directly from impulse!.
  • πŸ‘©πŸ»β€πŸ’» Create profile : Create a profile to identify yourself on the network. don't just be another ip address, go by your name!.
  • πŸ“‚ Network file manager : Impulse enhances the file-sharing experience by enabling connected users to seamlessly browse each other's file managers. Tired of waiting for files to be sent, simply navigate to the Network file manager and take matters into your own hands.
  • ⬇️ Resumable transfers : Interruptions to connections occur on the network at all times; Impulse makes sure that transfers that are interrupted are resumed in the next connection or session. Impulse ensures that your files are not corrupted and are ready to be used.
  • πŸ–±οΈDrag 'N Drop : Impulse elevates the file sharing experience with its simple drag 'n drop. Drag and share files with less clicks!


Screenshots πŸ–ΌοΈ

merge.impulse.-.Made.with.Clipchamp.mp4


How to use impulse πŸ“‹

Ready to dive into Impulse's fantastic features? Just follow these steps!.

Sender

  • Host or Connect to a wifi network ( Preferably the same network the receiver is going to be on).
  • Open the impulse app and click on the red button (on Mobile) or the + button (on Desktop).
  • On desktop, a dialog will pop up and on Mobile, a speed dial is opened. click on the send icon.
  • if successful, a modal is shown to display your qr code while you wait for a connection to be established.
  • Dismissed the modal, Do not fret. you can show the modal again by clicking the button from step 2, only this time you dont have to select if to send or to receive.

Receiver

  • Connect to the same network the sender has created or connected to.

  • Open the impulse app and click on the red button (on Mobile) or the + button (on Desktop).

    Quick Scan

    • On desktop, a dialog will pop up and on Mobile, a speed dial is opened. click on the Receive icon.
    • A modal will open to scan for available users. when users are found, Find and click on the user you want to connect to. A connection request is sent to this user.
    • Wait for the user to accept your request, and Voila! You have successfully connected to the sender!.

    Qr Code Scan

    • Click on the scan icon on mobile.
    • Hold your device's camera so that the QR code is within the scan frame.
    • After a successful scan, request for connection and await response.
    • Wait for the user to accept your request, and Voila! You have successfully connected to the sender!.
  • Share, receive and enjoy !!.



Install Project On Your Machine πŸ› οΈ

Assuming you already have flutter and git installed on your machine, To install this project you simply run:

# Clone this repository
$ git clone https://github.com/kannel-outis/impulse.git

# Go into the repository
$ cd impulse

# Install packages
$ flutter pub get

# Run the app
$ flutter run

If you do not already have flutter installed on your machine, visit https://flutter.dev/ to get started.

Packages Used πŸ“¦

  • app_settings: Impulse uses app settings to open Wifi and Hotspot app settings.
  • barcode_widget: impulse uses barcode_widget to generate and display the QR code.
  • dartz: Impulse uses dartz for functional programming.
  • desktop_drop: Impulse uses desktop_drop for easy drag and drop.
  • file_picker: Impulse uses the file_picker package for selecting file paths.
  • flutter_riverpod: Impulse uses flutter_riverpod for statemanagement and dependency injection across the app.
  • flutter_sharing_intent: Impulse uses this package for receiving files from another app for sharing.
  • flutter_svg: Impulse uses the flutter_svg package to render and display Svg vectors.
  • go_router: Impulse uses go_router for navigation across screens in impulse app
  • hive: Impulse uses the hive package for local caching and storing.
  • hive_flutter: Impulse uses hive_flutter together with hive for local caching and storage support.
  • http: Impulse uses http package to make HTTP requests.
  • impulse_utils: impulse_utils offers some utility apis for Impulse. apis like file managerment apis, image compressions among others.
  • mime: impulse uses the mime package to get the mime type of files shared by impulse.
  • open_file: Impulse uses open_file to open native default apps for viewing files.
  • path_drawing: Impulse uses the path_drawing package for path manipulation and creation.
  • path_provider: Impulse uses the path_provider plugin for finding path locations on the filesystem.
  • permission_handler: Impulse uses the permission_handler plugin for handling required permssions.
  • qr_code_scanner: Impulse uses the qr_code_scanner package to scan generated qr code.
  • riverpod: Impulse uses the riverpod package together with flutter_riverpod to handle state management and dependency injection.
  • shared_preferences: Impulse uses the shared_preferences plugin to handle local caching and storage support.
  • url_launcher: Impulse uses url_launcher to launch urls.
  • uuid: Impulse uses the uuid package to generate random uniques IDs.


Contributions πŸ«±πŸΌβ€πŸ«²πŸΎ

We welcome and appreciate contributions from anyone interested in improving Impulse Contributions can be by either

  • Creating an issue about a bug or a feature that can/should be added.

  • Creating a pull request for improvements or bugs you have fixed.

    Note: Before creating a pull request please make sure you have pulled and merged the latest changes from the DEV branch.



License πŸ€

MIT License

Copyright (c) 2023 Enikuomehin Adejuwon

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Impulse is a file-sharing application, built with flutter, that allows devices within the same network to effortlessly transfer and share files across the network using a single connection.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published