Falion
An open source, programmed in rust, privacy focused tool and crate for interacting with programming resources (like stackoverflow) fast, efficiently and asynchronously/parallel using the CLI or GUI.
Install / Use
/learn @Obscurely/FalionREADME
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![Crates.io][crates-shield]][crates-url]
<!-- PROJECT LOGO --> <br /> <div align="center"> <img src="assets/images/logo.png" alt="Logo" width="150" height="150"> <h1 align="center"></h1> <p align="center"> An open source, programmed in rust, privacy focused tool and crate for interacting with programming resources (like stackoverflow) fast, efficiently and asynchronously/parallel using the CLI or GUI. <p> <a href="https://github.com/Obscurely/falion/wiki"><strong>Explore the docs »</strong></a> <br /> <br /> <a href="https://github.com/Obscurely/falion#-video-showcase">View Demo</a> · <a href="https://github.com/Obscurely/falion/issues">Report Bug</a> · <a href="https://github.com/Obscurely/falion/issues">Request Feature</a> </p> </p> </div> <!-- TABLE OF CONTENTS --> <details> <summary>Table of Contents</summary> <ol> <li> <a href="# -about-the-project">About The Project</a> <ul> <li><a href="#key-highlights">Key Highlights</a></li> <li><a href="#supported-resources">Supported Resources</a></li> <li><a href="#-features">💡 Features</a></li> <li><a href="#-video-showcase">🎥 Video showcase</a></li> <li><a href="#-built-with">🍔 Built with</a></li> <ul> <li><a href="#the-stock-libraries-and-these-awesome-third-party-ones">The stock libraries and these awesome third-party party ones</a></li> </ul> </ul> </li> <li> <a href="#-getting-started">🏁 Getting Started</a> <ul> <li><a href="#-running-the-program">🏃 Running the Program</a></li> <ul> <li><a href="#-windows">🪟 Windows</a></li> <ul> <li><a href="#portable-exe">Portable EXE</a></li> <li><a href="#installer">Installer</a></li> </ul> <li><a href="#-linux">🐧 Linux</a></li> <ul> <li><a href="#portable-bin">Portable Bin</a></li> <li><a href="#appimage">AppImage</a></li> <li><a href="#aur">AUR</a></li> <li><a href="#nix-file">Nix File</a></li> <li><a href="#deb-file">Deb File</a></li> <li><a href="#arch-pkg-file">Arch Pkg File</a></li> </ul> <li><a href="#-macos">🍎 MacOS</a></li> <ul> <li><a href="#portable-binary">Portable Bin</a></li> <li><a href="#app-folder">App Folder</a></li> <li><a href="#dmg-installer">DMG Installer</a></li> <li><a href="#homebrew">Homebrew</a></li> </ul> <li><a href="#-all-platforms">🚉 All Platforms</a></li> </ul> <li><a href="#-compilation">🛠 Compilation</a></li> </ul> </li> <li> <a href="#-usage">🪧 Usage</a> <ul> <li><a href="#basics">Basics</a></li> <li><a href="#advanced">Advanced</a></li> </ul> </li> <li><a href="#-road-map">🗾 Road Map</a></li> <li><a href="#-contributing">💁 Contributing</a></li> <li><a href="#faq">❓ FAQ</a></li> <li><a href="#-semver">📟 Semver</a></li> <li><a href="#-security">🔰 Security</a></li> <li><a href="#-license">🪪 License</a></li> <li><a href="#-contact">📧 Contact</a></li> <li><a href="#-template">📄 Template</a></li> <li><a href="#-acknowledgments">🦾 Acknowledgments</a></li> </ol> </details>🪽 About The Project
Falion is creative open-source tool created in Rust with the aim of improving programming resource interaction. It prioritizes privacy, speed, and efficiency, targeting sources like StackOverflow, GitHub Gists, and more.
The project aims to solve the challenges of accessing information quickly and privately in the programming world, using DuckDuckGo for secure, private search results. HTTPS-only connections & no JavaScript, plain HTML.
Falion is lightning-fast and efficient, with asynchronous result retrieval and parallel scraping. It takes only about 1-1.5 seconds to obtain five results from each resource. Meaning, by the time you see the results everything is already loaded and ready to be accessed.
It offers user-centric interfaces, including a Command Line Interface (CLI) with VIM-like key bindings (where applicable) and a Graphical User Interface (GUI).
Cross-platform support ensures that it runs on Linux, MacOS, and Windows.
It can be used as a standalone tool or integrated into Rust projects as a crate, enhancing development capabilities.
Key Highlights
Privacy First: It utilizes DuckDuckGo for results, stick to HTTPS-only connections, and keep it tracker-free.
Blazing Speed: Thanks to asynchronous result retrieval and parallel scraping, you get your answers in a snap.
User-Centric Interfaces: Choose between a VIM-like (where applicable) CLI or a lightweight GUI for your preferred experience.
Cross-Platform: Works seamlessly on Linux, MacOS, and Windows.
No Rate Limitations: Browsing without interruptions under normal use.
Versatile: Use it as a stand-alone tool or integrate it as a crate into your Rust projects.
Supported Resources
These are generic resources that work for most popular languages. In the future there will be more added + custom resources support. Also request resources here.
- StackOverflow is a programming Q&A website.
- StackExchange is a network of community-driven Q&A websites.
- GitHub Gists are a platform for sharing and collaborating on code snippets.
- GeeksForGeeks is an online learning platform for computer science and programming.
- DuckDuckGo Results are just your normal results rendered as text, not as nice as the above, as a last resort.
If you've got any questions please give the FAQ a check.
<p align="right">(<a href="#readme-top">back to top</a>)</p>💡 Features
- [x] Interact with programming resources
- [x] StackOverflow - No need to say anything
- [x] StackExchange- index of different forums
- [x] Github Gists - for code snippets and guides
- [x] GeeksForGeeks - has various good programming resources
- [x] DuckDuckGo - just so you don't need to leave the program you also have html versions of the basic results
- [x] Privacy focused
- [x] DuckDuckGo used for results
- [x] HTTPs only requests
- [x] Only fetches HTML, no unnecessary tracking
- [x] Incredibly fast and efficient
- [x] Results are retrieved asynchronously
- [x] Resources are scraped in parallel
- [x] Instantly view a page, by the time results appear the content is already loaded
- [x] Takes about 1 second to 1 and a half to get the results (& content). 5 results each resource
- [x] Leverages rust's performance
- [x] Many optimizations done
- [x] Ligthweight on resources (GUI and CLI)
- [x] CLI interface
- [x] Fast and render optimized interface
- [x] VIM like key binds (where applicable)
- [x] Simple and intuitive
- [x] GUI interface
- [x] Ligthweight interface
- [x] Simple
- [x] Responsive
- [x] Cross-platform
- [x] Linux
- [x] MacOS
- [x] Windows
- [x] Doesn't get you rate limited, under normal use
- [x] Project can also be used as a crate
- [ ] Results are cached for up to 7 days
- [ ] Web UI
- [ ] Custom resources support
- [ ] Configurable
- [ ] Config file editable from the program
🎥 Video showcase
<!-- Showcase video uploaded to github --> <p align="right">(<a href="#readme-top">back to top</a>)</p>🍔 Built with
<p align="right">(<a href="#readme-top">back to top</a>)</p>The stock libraries and these awesome third-party ones
- chrono for the names of the log file
- clap for cli arguments
- crossterm is at at the heart of the cli
- dashmap is a concurent hashmap
- dirs for getting where to store log files
- futures for parallel execution
- hashbrown is the std hashmap, but with a much faster hash
- html2text for making html readable as text
- rand for generating a random user agent
- rayon for parallel iterators
- reqwest for making web requests
- slint for the GUI
- slint-build for building the gui files
- thiserror for making error handling better
- tokio is an asynchronous runtime
- tracing for getting logs
- tracing-subscriber for parsing and storing the logs
- url for parsing urls to test if they are valid
- urlencoding for encoding search queries
- user32-sys, [winapi](htt
