Alexandria is a protocol in development, designed to create a means for permissionless publishing, distribution and sales of digital content.
Alexandria's application stack is composed of:
####A network layer:
Florincoin blockchain: Index of published media, including digital rights attribution and file transport information local-wallet | hosted-wallet | explorer
Bitcoin blockchain: The default payments network, but the protocol is payment token agnostic. software | hosted-wallet & explorer
IPFS Peer to Peer Network: The file distribution network. software
####API Layer/protocol daemon:
Libraryd (currently a private repo), a Go application to be run locally in the background on a user's machine, communicates via RPC with Florincoind and Bitcoind. hosted-endpoint
Libraryd-JS, a JS application run on web server front ends to allow interaction with a web-server hosted Florincoin blockchain.
####Application Layer:
Alexandria Browser: Two applications in one; first a web server hosted application to be used inside a web browser, alexandria.io/browser/, and second, a NodeJS standalone application to be used by end users, either with web-hosted API endpoints, or locally hosted API endpoints by users running Librarian.
Alexandria Librarian: A NodeJS application with the purpose of installing, keeping up-to-date, and turning on and off the various daemons of the Alexandria application stack, to let users run a "full node" of Alexandria, which includes at least Libraryd, Florincoind, and IPFS Daemon. See also
###Librarian Details
Runs a local web server API endpoint, allowing interaction with the user's settings and preferences, and GUI-less operation. Note: The primary use of Librarian is not to be looked at - users should open up a settings panel from time to time to make adjustments to things, but largely it should run exclusively in the background, managing daemons according to the user's preferences.
Runs as a Node-JS standalone application or in a browser window via the API endpoint (for example, http://localhost:12345)
npm install
To run the app in development:
npm start
Running npm start
will download and install Electron.
npm run release
ΛLΞXΛNDRIΛ Librarian is an application built using electron. While it's work in progress, the goal is to make ΛLΞXΛNDRIΛ Librarian a high-performance, portable Javascript ES6 application built with React and Flux (using alt. It adopts a single data flow pattern:
╔═════════╗ ╔════════╗ ╔═════════════════╗
║ Actions ║──────>║ Stores ║──────>║ View Components ║
╚═════════╝ ╚════════╝ ╚═════════════════╝
^ │
└──────────────────────────────────────┘
There are three primary types of objects:
- Actions: Interact with the system
- Views: Views make up the UI, and trigger available actions.
- Stores: Stores store the state of the application.
and since ΛLΞXΛNDRIΛ Librarian has a large amount of interaction with outside systems, we've added utils:
- Utils: Utils interact with APIs, outside systems, CLI tools and generate. They are called by user-generated actions and in return, also create actions based on API return values, CLI output etc.
- Avoid asynchronous code in Stores or Views. Instead, put code involving callbacks, promises or generators in utils or actions.
Code released under the GPLv3.