What is the architecture of AB Download Manager? #318
|
I am building a cross platform download manager for all platforms including windows, Linux and macOS using flutter 1️⃣ Should there be a client-server model? 2️⃣ What database would you suggest? 3️⃣ How to implement browser integration? |
Replies: 3 comments 2 replies
|
Hi there. You can find all of your question in the source code. but If you I want to answer you shortly
No. only client is required.
I personally use filesystem as my data source. but you can use database as well.
It requires you to be familiar with |
|
I would answer it differently. The server/client model is a lot more efficient. For storing data SQLite is the best, for local storage. You can also then easily port it for a remote DB later, if you change how the data is stored. As for the browser extension, you want to look at the chrome.webRequest and chrome.downloads events, to capture a file request/download before they are complete. Also remember to send the cookies and headers to the server, so it can use the same data as the browser, which will reduce the chance of the requests failing by a lot. |
|
Hi! I recently built an independent open-source project that may be relevant to this discussion: https://github.com/dixtdf/abdm-server It is a self-hosted / headless Web download manager inspired by AB Download Manager, mainly intended for LAN, NAS and home-server use. Some of the current features include:
The project is independent from AB Download Manager and does not fork the upstream repository. AB Download Manager is tracked as a Git submodule, with an optional adapter layer for its download engine. Sharing it here in case it is useful to anyone looking for a headless/server/Web-oriented ABDM workflow. |
Hi there.
You can find all of your question in the source code.
but If you I want to answer you shortly
No. only client is required.
I personally use filesystem as my data source. but you can use database as well.
this can be easily changed in your data source implementation details
It requires you to be familiar with
javascript/typescriptand write plugins for browsers.browsers give you an api (which is javascript) and you can use that api to capture downloads etc.