HotTea Documentation
Learn the concepts, architecture, and developer workflows powering the HotTea open-source browser and research workspace.
Getting Started
HotTea brings web browsing, multi-engine search, offline note taking, and local data persistence into one application built with Flutter and Dart.
Unlike traditional browsers that push user data to proprietary cloud services, HotTea operates locally on your machine. Bookmarks, history records, and research notes are saved directly into a SQLite database without external analytics or tracking beacons.
Architecture & System Design
HotTea enforces strict layer boundaries to decouple the user interface from platform-specific web rendering engines and storage mechanisms:
- UI Layer (
lib/main.dart): Premium Glassmorphic Flutter interface with responsive desktop, tablet, and mobile layouts. - Theme & Brand Tokens (
lib/core/theme/):GlassTheme,GlassDock,GlassSurface,AmbientCanvasBackground, and the official vectorHotTeaLogo. - Browser Domain (
lib/features/browser/domain/): Core abstractions includingBrowserEngine,BrowserTab,SearchEngine, andAddressBarParser. - Browser Data (
lib/features/browser/data/): Concrete platform engine implementations (InAppBrowserEnginewith WebKit/WebView, andWebFallbackEngine). - Persistence Layer (
lib/core/persistence/):LocalPersistenceRepositorybacked by SQLite (sqflite_common_ffion desktop,sqfliteon iOS/Android, andsqflite_common_ffi_webon Web).
Glassmorphic UI System
HotTea delivers a state-of-the-art glassmorphism design across macOS, iOS, Android, Linux, and Windows, featuring ambient backdrop blurs, luminous amber highlights, and unified control docks:
- GlassDock Bottom Bar: A floating, frosted glass dock on mobile platforms housing quick-access navigation buttons (Back, Forward, New Tab, Tab Switcher, Settings, and More Actions).
- Integrated Settings Control: Direct access to browser preferences from both the primary mobile dock, the desktop top toolbar & sidebar, and the frosted Action Sheet.
- Ambient Canvas Background: Multi-layered radial gradients emitting warm amber (
#D48B47) and icy blue atmospheric glows behind all window content. - Official HotTea Vector Identity: Precision SVG-rendered tea-cup icon (with steam trails and saucer) integrated natively into headers, modals, and brand badges.
- Frosted Action Sheets: High-blur (20px) modal overlays providing quick toggles for Private Mode, Desktop Site, Bookmarks, and in-place zoom controls.
Android Release (APK)
HotTea is officially packaged and available as a standalone Android application package (APK):
| Property | Value |
|---|---|
| Package Name | com.hottea.browser |
| Artifact | app-release.apk |
| File Size | ~56 MB (Optimized with R8 tree-shaking) |
| Min Android SDK | Android 8.0 Oreo (API Level 26) |
| Target Android SDK | Android 14 (API Level 34) |
| Architectures | arm64-v8a, armeabi-v7a, x86_64 |
To install HotTea on your Android device:
- Download
app-release.apkfrom the HotTea Downloads page or latest GitHub Release. - Enable "Install unknown apps" in your Android Settings for your browser or file manager.
- Open the downloaded APK to install, or deploy via Android Debug Bridge:
adb install -r app-release.apk
Search Engine System
HotTea provides a provider-independent search engine abstraction in lib/features/browser/domain/search_engine.dart supporting four search providers:
| Provider | ID | Search URL Format | Default |
|---|---|---|---|
google |
https://www.google.com/search?q={query} |
Yes | |
| DuckDuckGo | duckduckgo |
https://duckduckgo.com/?q={query} |
No |
| Bing | bing |
https://www.bing.com/search?q={query} |
No |
| Brave Search | brave |
https://search.brave.com/search?q={query} |
No |
Search URLs are constructed safely using Dart's Uri.https() APIs with strict query-parameter encoding to prevent unescaped string injection.
Tab Management
HotTea tabs operate with completely independent state. Each BrowserTab maintains its own URL history stack, title, favicon, loading indicator, and zoom level:
- Creating a Tab: Click the
+button in the tab strip or pressCmd+T(macOS) /Ctrl+T(Windows/Linux). - Closing a Tab: Click the
×icon on the tab card or pressCmd+W. If the last tab is closed, a clean default tab is opened automatically. - Mobile Tab Switcher: On iPhone and mobile screen sizes, the tab switcher button in the bottom bar opens an ergonomic card grid displaying active hosts and private status badges.
Private / Incognito Browsing
Private browsing tabs isolate your session from persistent storage:
- WebKit Incognito Mode: Initialized with
incognito: true, disabling disk caches and persistent DOM cookies. - Zero History Logging: The navigation listener checks
tab.isPrivatebefore recording history entries; visits made in private tabs are never written to the database. - Visual Indicators: Private tabs feature purple shield iconography and purple borders in the tab overview.
Downloads System
Downloads are handled through lib/features/browser/data/download_manager.dart with real-time status reporting:
- Files are written to the sandboxed user Downloads directory (
$HOME/Documents/Downloadson iOS, standard user Downloads on macOS/desktop). - Real-time download progress tracking with byte counters, cancellation, and restart capabilities.
Local SQLite Persistence
HotTea uses native SQLite bindings without cloud backends. Database tables:
bookmarks:id,title,url,category,created_atbrowsing_history:id,title,url,visited_at,visit_countresearch_notes:id,title,content,source_url,source_title,created_at,updated_at
Research Notes & Web Clipping
The research workspace enables side-by-side note taking with web evidence:
- Clip Selection: Highlight any passage on a webpage and click "Clip to Notes" to create a Markdown note pre-filled with the source URL and document title.
- Filtering & Search: Instantly search across note content, tags, and source hosts offline.
Development Setup
Follow these steps to set up your local development workspace:
Troubleshooting
For common build questions regarding CocoaPods, macOS sandboxing, and iOS Xcode 27 multi-architecture configurations, refer to our dedicated Troubleshooting Guide.
Contributing Guidelines
HotTea welcomes contributions from everyone. Please review our Contributing Guide for code standards, testing policies, and responsible security disclosure instructions.