aboutsummaryrefslogtreecommitdiff
path: root/docs/DESIGN.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/DESIGN.md')
-rw-r--r--docs/DESIGN.md79
1 files changed, 79 insertions, 0 deletions
diff --git a/docs/DESIGN.md b/docs/DESIGN.md
new file mode 100644
index 0000000..8e88200
--- /dev/null
+++ b/docs/DESIGN.md
@@ -0,0 +1,79 @@
+# smolbote Design Document
+
+### Version 1.0
+* Profiles
+ - Application-level profile manager
+ - System-level and user-level profile config, with per-profile overrides [todo]
+* Configuration
+ - Default system-level config and user-level overrides [todo]
+* Cookies
+ - Filter list similar to the URL filter list [todo]
+* Tabs
+ - Moving tabs between windows [todo]
+ - Tab context menu [todo]
+* Page actions
+ - Search [todo]
+ - Zoom [todo]
+ - Print [todo]
+* Navigation toolbar
+ - Back and Forward history [todo]
+
+## Overall design of smolbote
+
+The aim of smolbote is to be a lightweight and fast, to the point web browser.
+
+### How smolbote works [TODO]
+
+0. Launch
+1. Check for other instance, unless otherwise specified
+ - If other instance is found, pass the parameters to it and quit
+ - Else, create a new instance
+2. Create application object
+ - Read configuration
+ _ Create profiles
+3. Pass parameters to application object
+ - Create main window if there isn't one
+ - open URLs
+
+### main() and smolmain() [TODO]
+
+The main() function should contain all code to start up, check for another
+running instance, and if necessary pass the parameters to the other instance.
+
+The smolmain() function should contain code to create a new instance based on
+the parameters passed.
+
+IPC should be done with QLocalSocket.
+
+### Dockable windows
+
+### Folder structure
+
+- data/ - Any resource files (defaults, icons, etc)
+- docs/ - Where all the documentation lives
+- src/ - Source code
+- test/ - Testing grounds
+- tools/ - Hooks, qbs helpers, updater
+
+### Libraries used
+All 3rd-party libraries should be placed in src/3rd-party/library-name, together
+with their corresponding license file. The license file should start with the
+library name and repository location.
+
+- tinytoml
+
+## Components
+
+### Bookmarks [TODO]
+
+- [TODO] Bookmark location should be read from profile, with a default in the config
+- [TODO] Split off xbel implementation into a library
+- [TODO] BookmarksLibrary API
+
+### History
+
+History is managed by QtWebEngine.
+
+### Cookies
+
+Cookies are managed by QtWebEngine.