The Buttercup platform is made up of many (mostly open-source) projects that serve very specific purposes. The bulk of them are written in JavaScript, with a couple here and there written in TypeScript. There are also the odd instances of other languages, but these items are usually present to provide some native OS-level functionality.
The majority belong to the Buttercup organisation, though some individual projects referenced here are standalone.
The core/shared structure (not exhaustive) of most Buttercup apps:
- Buttercup Apps (desktop/mobile/web/terminal)
- Buttercup core - Core functionality for the entire platform (Groups and Entries, Archives and Archive Managers etc.)
- iocane - Encryption toolkit for NodeJS and the web
- WebDAV client - WebDAV connection client
- Google Drive client - Client for managing Google Drive files
- Dropbox client - Client for managing Dropbox files
Datasources - Vault host adapters for connecting Buttercup to services like Dropbox, Google Drive etc.Signing - Encrypted string signing and validationApp-Env - Application environment bootstrap utility for preparing complex features like encryption for each specific platform (node/web, not React-Native)Credentials - Login/token construct for transferring account credentails between core and the datasources- Channel Queue - Procedure queuing for asynchronous tasks
Facades - Object-only (serialisation) vault & entry handling- Google OAuth2 client - Authentication client for mapping user logins to OAuth2 tokens (offline access)
- Buttercup core - Core functionality for the entire platform (Groups and Entries, Archives and Archive Managers etc.)
NB: Struck-out items have most likely been recently included in the v4 release of Buttercup core.
Browser extension:
- Extension
- Locust - Login form detection and connection to Buttercup
Desktop app: