Freelexity
Freelexity is an open-source answer engine built with Flutter. It leverages the power of Brave Search API and Groq API to provide users with comprehensive answers to their queries.
Don't forget to :star: the repo
Download
Download the app |
Badges |
Google Play |
|
Preview |
|
Beta |
|
Stable |
|
GitHub |
|
F-Droid |
|
Features
- Dark-themed UI for comfortable viewing
- Voice search capability
- Web scraping for comprehensive answers
- AI-powered summarization of search results
- Related questions suggestion
- Search history with local storage
- Image search results
Prerequisites
Before you begin, ensure you have met the following requirements:
- Flutter SDK (version 3.5.3 or later)
- Dart SDK (version 3.5.3 or later)
- Android Studio / VS Code with Flutter extensions
- An active internet connection
Installation
-
Clone the repository:
git clone https://github.com/TheGuyDangerous/Freelexity.git
-
Navigate to the project directory:
cd Freelexity
-
Install dependencies:
flutter pub get
-
Run the app:
flutter run
API Keys
To use Freelexity, you need to obtain API keys for both Brave Search and Groq. Here's how:
Brave Search API Key
- Visit https://api.search.brave.com/app/keys
- Sign up or log in to your Brave account
- Create a new API key for the Brave Search API
- Copy the API key
Groq API Key
- Go to https://console.groq.com/keys
- Sign up or log in to your Groq account
- Generate a new API key
- Copy the API key
Once you have both API keys, enter them in the app's Settings screen.
How It Works
Freelexity combines web search, content scraping, and AI-powered summarization to provide comprehensive answers to user queries. Here's a brief overview of the process:
- User inputs a query through text or voice
- The app sends the query to the Brave Search API
- Top search results are retrieved
- The app scrapes content from the top results
- Scraped content is sent to the Groq API for summarization
- The summary and search results are displayed to the user
- Related questions are generated based on the query and summary
- The search query and results are saved in the user's local history
File Structure
Click to expand/collapse file structure
```
lib/
├── main.dart
├── custom_page_route.dart
├── theme_provider.dart
├── screens/
│ ├── home/
│ │ ├── home_screen.dart
│ ├── search/
│ │ ├── search_screen.dart
│ │ └── search_screen_state.dart
│ ├── thread/
│ │ ├── thread_screen.dart
│ │ ├── thread_screen_state.dart
│ │ └── thread_loading_screen.dart
│ ├── library/
│ │ ├── library_screen.dart
│ │ └── library_screen_state.dart
│ ├── settings/
│ │ ├── settings_screen.dart
│ │ └── settings_screen_state.dart
│ ├── license/
│ │ └── license_screen.dart
│ └── splash_screen.dart
├── widgets/
│ ├── search/
│ │ ├── search_app_bar.dart
│ │ ├── search_initial_view.dart
│ │ └── search_bar.dart
│ ├── thread/
│ │ ├── sources_section.dart
│ │ ├── summary_card.dart
│ │ ├── image_section.dart
│ │ ├── related_questions.dart
│ │ ├── follow_up_input.dart
│ │ ├── full_screen_image.dart
│ │ └── loading_shimmer.dart
│ ├── library/
│ │ ├── history_list.dart
│ │ ├── empty_state.dart
│ │ └── incognito_message.dart
│ └── settings/
│ ├── api_key_input.dart
│ └── settings_switch.dart
├── services/
│ ├── search_service.dart
│ ├── web_scraper_service.dart
│ ├── groq_api_service.dart
│ └── whisper_service.dart
├── utils/
│ ├── audio_helpers.dart
│ ├── clipboard_helper.dart
│ └── constants.dart
└── theme/
└── app_theme.dart
```
Workflow
- Search Screen: The main interface where users input their queries.
- Thread Loading Screen: Displays a loading animation while processing the search.
- Thread Screen: Shows the search results, summary, and related questions.
- Library Screen: Displays the user's search history.
- Settings Screen: Allows users to input API keys and view app information.
- The main entry point (
main.dart
)
- Custom route transition (
custom_page_route.dart
)
- Theme provider for managing app-wide theme state (
theme_provider.dart
)
- Screens for different parts of the app (home, search, thread, library, settings, license, and splash)
- Reusable widgets organized by their respective screens
- Services for handling API calls, web scraping, and other functionalities
- Utility functions and constants
- Theme-related configurations
License
This project is licensed under a custom license. See the LICENSE file for details.
Contributing
Contributions to Freelexity are welcome! Please read our Contributing Guidelines for details on how to submit pull requests, report issues, and suggest improvements.
Contact
For commercial licensing options or any queries, please contact:
sannidhyadubey@gmail.com
Created with ❣️ by Sannidhya Dubey