diff --git a/files/clubs.csv b/files/clubs.csv new file mode 100644 index 0000000..b287a46 --- /dev/null +++ b/files/clubs.csv @@ -0,0 +1,8 @@ +_key,name +0,St Andrews Lodge +1,Loyal Nine +2,North Caucus +3,Long Room Club +4,Tea Party +5,Boston Committee +6,London Enemies diff --git a/files/members.csv b/files/members.csv new file mode 100644 index 0000000..40e4a35 --- /dev/null +++ b/files/members.csv @@ -0,0 +1,255 @@ +_key,name +7,John Adams +8,Samuel Adams +9,Dr Allen +10,Nathaniel Appleton +11,Gilbert Ash +12,Benjamin Austin +13,Samuel Austin +14,John Avery +15,Cyrus Baldwin +16,John Ballard +17,Nathaniel Barber +18,Samuel Barnard +19,Samuel Barrett +20,Henry Bass +21,William Bell +22,Increase Blake +23,John Boit +24,Thomas Bolter +25,Peter Boyer +26,Richard Boynton +27,Jos Brackett +28,John Bradford +29,David Bradlee +30,Josiah Bradlee +31,Nathaniel Bradlee +32,Thomas Bradlee +33,George Bray +34,William Breck +35,James Bewer +36,Herman Brimmer +37,Martin Brimmer +38,Henry Broomfield +39,Hugh Brown +40,Enoch Brown +41,John Brown +42,Stephen Bruce +43,Edward Burbeck +44,William Burbeck +45,Benjamin Burt +46,Benjamin Burton +47,Edward Cailleteau +48,Elisha Callendar +49,Nicholas Campbell +50,Capt Cazneau +51,Mr Chadwell +52,Caleb Champney +53,Thomas Chase +54,Ezekiel Cheever +55,Seth Chipman +56,Thomas Chrysty +57,Benjamin Church +58,Benjamin Clarke +59,Stephen Cleverly +60,John Cochran +61,Gilbert Colesworthy +62,Gershom Collier +63,Ezra Collins +64,Adam Collson +65,Jamesfoster Condy +66,Samuel Cooper +67,William Cooper +68,Thomas Crafts +69,John Crane +70,Caleb Davis +71,Edward Davis +72,Robert Davis +73,William Davis +74,Thomas Dawes +75,William Dennie +76,Moses Deshon +77,Samuel Dexter +78,Edward Dolbear +79,Peter Doyle +80,Joseph Eaton +81,Joseph Eayres +82,Unknown Eckley +83,Benjamin Edes +84,Samuel Emmes +85,William Etheridge +86,Samuel Fenno +87,Ambrose Ferrell +88,Joseph Field +89,Josiah Flagg +90,Thomas Fleet +91,Bos Foster +92,Samuel Foster +93,Nathaniel Frothingham +94,John Gammell +95,Moses Gill +96,Samuel Gore +97,William Gould +98,James Graham +99,Moses Grant +100,Wait Gray +101,Nathaniel Greene +102,Joseph Greenleaf +103,William Greenleaf +104,Newn Greenough +105,William Ham +106,Samuel Hammond +107,Eben Hancock +108,John Hancock +109,William Hendley +110,George Hewes +111,William Hickling +112,John Hicks +113,Alexander Hill +114,Nathaniel Hitchborn +115,Thomas Hitchborn +116,Samuel Hobbs +117,John Hoffins +118,Nathaniel Holmes +119,John Hooton +120,Caleb Hopkins +121,William Hoskins +122,Samuel Howard +123,Edward Howe +124,Jonathan Hunnewell +125,Richard Hunnewell +126,Thomas Hunstable +127,Abraham Hunt +128,Daniel Ingersoll +129,Alexander Inglish +130,Pierce Isaac +131,James Ivers +132,Edward Jarvis +133,Charles Jarvis +134,Unknown Jefferds +135,John Jenkins +136,Eben Johnston +137,Gabriel Johonnott +138,Benjamin Kent +139,Walter Kerr +140,Thomas Kimball +141,David Kinnison +142,John Lambert +143,Joseph Lee +144,Phillip Lewis +145,Amos Lincoln +146,Matthew Loring +147,John Lowell +148,Thomas Machin +149,William Mackay +150,Capt Mackintosh +151,Archibald Macneil +152,Phillip Marett +153,John Marlton +154,Thomas Marshall +155,John Marson +156,Jonathan Mason +157,John Matchett +158,John May +159,William Mcalpine +160,Thomas Melville +161,John Merrit +162,Thomas Milliken +163,William Molineux +164,Samuel Moody +165,Thomas Moore +166,Anthony Morse +167,Perez Morton +168,Joseph Mountford +169,Eliphelet Newell +170,Unknown Nicholls +171,Nat Noyces +172,Israel Obear +173,James Otis +174,William Palfrey +175,Joseph Palmer +176,Richard Palms +177,Jonathan Parker +178,Elias Parkman +179,Sam Partridge +180,Joseph Payson +181,Isaacjun Pearce +182,Isaac Pearce +183,Samuel Peck +184,Thomas Peck +185,John Peters +186,John Phillips +187,Samuel Phillips +188,William Phillips +189,William Pierce +190,Robert Pierpont +191,John Pitts +192,Lendall Pitts +193,Samuel Pitts +194,Thomas Porter +195,Edward Potter +196,William Powell +197,Henry Prentiss +198,John Prince +199,Job Prince +200,Edward Proctor +201,John Pulling +202,Richard Pulling +203,Henry Purkitt +204,Josiah Quincy +205,John Randall +206,Paul Revere +207,Joseph Roby +208,Thomas Roylson +209,Abiel Ruddock +210,John Russell +211,William Russell +212,Robert Sessions +213,James Seward +214,Gibbens Sharp +215,Joseph Shed +216,John Sigourney +217,Benjamin Simpson +218,Peter Slater +219,Ambrose Sloper +220,John Smith +221,Thomas Spear +222,Samuel Sprague +223,John Spurr +224,Henry Stanbridge +225,James Starr +226,Phineas Stearns +227,Ebenezer Stevens +228,Asa Stoddard +229,Jonathan Stoddard +230,Elisha Story +231,James Swan +232,John Sweetser +233,Eben Symmes +234,John Symmes +235,Philip Tabor +236,Thomas Tileston +237,George Trott +238,Royall Tyler +239,Thomas Urann +240,Fortesque Vernon +241,Benjamin Waldo +242,Joseph Warren +243,Joseph Webb +244,Thomas Webster +245,Henry Welles +246,Oliver Wendell +247,Josiah Wheeler +248,Samuel White +249,John Whitten +250,Samuel Whitwell +251,William Whitwell +252,Jeremiah Williams +253,Jonathan Williams +254,Thomas Williams +255,Nathaniel Willis +256,William Wingfield +257,John Winslow +258,John Winthrop +259,Joshua Wyeth +260,Thomas Young diff --git a/files/membership.csv b/files/membership.csv new file mode 100644 index 0000000..54272b8 --- /dev/null +++ b/files/membership.csv @@ -0,0 +1,320 @@ +_from,_to +members/7,clubs/2 +members/7,clubs/3 +members/8,clubs/2 +members/8,clubs/3 +members/8,clubs/5 +members/8,clubs/6 +members/9,clubs/2 +members/10,clubs/2 +members/10,clubs/5 +members/11,clubs/0 +members/12,clubs/6 +members/13,clubs/6 +members/14,clubs/1 +members/14,clubs/6 +members/15,clubs/6 +members/16,clubs/2 +members/17,clubs/2 +members/17,clubs/4 +members/17,clubs/5 +members/17,clubs/6 +members/18,clubs/4 +members/19,clubs/0 +members/19,clubs/6 +members/20,clubs/1 +members/20,clubs/2 +members/20,clubs/4 +members/20,clubs/6 +members/21,clubs/0 +members/22,clubs/0 +members/23,clubs/2 +members/24,clubs/4 +members/25,clubs/6 +members/26,clubs/5 +members/26,clubs/6 +members/27,clubs/6 +members/28,clubs/5 +members/28,clubs/6 +members/29,clubs/4 +members/30,clubs/4 +members/31,clubs/4 +members/32,clubs/4 +members/33,clubs/0 +members/34,clubs/2 +members/35,clubs/4 +members/36,clubs/6 +members/37,clubs/6 +members/38,clubs/6 +members/39,clubs/0 +members/40,clubs/6 +members/41,clubs/6 +members/42,clubs/4 +members/43,clubs/0 +members/44,clubs/0 +members/45,clubs/2 +members/46,clubs/4 +members/47,clubs/0 +members/48,clubs/0 +members/49,clubs/4 +members/50,clubs/2 +members/51,clubs/2 +members/52,clubs/2 +members/53,clubs/1 +members/53,clubs/2 +members/53,clubs/4 +members/53,clubs/6 +members/54,clubs/2 +members/54,clubs/6 +members/55,clubs/0 +members/56,clubs/2 +members/57,clubs/2 +members/57,clubs/3 +members/57,clubs/5 +members/57,clubs/6 +members/58,clubs/4 +members/59,clubs/1 +members/60,clubs/4 +members/61,clubs/4 +members/62,clubs/4 +members/63,clubs/0 +members/64,clubs/2 +members/64,clubs/4 +members/65,clubs/2 +members/65,clubs/4 +members/65,clubs/6 +members/66,clubs/3 +members/66,clubs/4 +members/67,clubs/3 +members/68,clubs/0 +members/68,clubs/1 +members/69,clubs/4 +members/70,clubs/5 +members/70,clubs/6 +members/71,clubs/6 +members/72,clubs/4 +members/73,clubs/6 +members/74,clubs/3 +members/75,clubs/2 +members/75,clubs/5 +members/76,clubs/0 +members/77,clubs/3 +members/78,clubs/4 +members/79,clubs/0 +members/80,clubs/4 +members/81,clubs/4 +members/81,clubs/6 +members/82,clubs/4 +members/83,clubs/1 +members/83,clubs/2 +members/84,clubs/2 +members/85,clubs/4 +members/86,clubs/4 +members/87,clubs/0 +members/88,clubs/1 +members/89,clubs/0 +members/90,clubs/3 +members/91,clubs/6 +members/92,clubs/4 +members/93,clubs/4 +members/94,clubs/4 +members/95,clubs/6 +members/96,clubs/4 +members/97,clubs/0 +members/98,clubs/0 +members/99,clubs/2 +members/99,clubs/4 +members/99,clubs/6 +members/100,clubs/0 +members/101,clubs/4 +members/102,clubs/2 +members/102,clubs/5 +members/102,clubs/6 +members/103,clubs/5 +members/103,clubs/6 +members/104,clubs/6 +members/105,clubs/0 +members/106,clubs/4 +members/107,clubs/6 +members/108,clubs/3 +members/108,clubs/6 +members/109,clubs/4 +members/110,clubs/4 +members/111,clubs/2 +members/112,clubs/4 +members/113,clubs/5 +members/114,clubs/0 +members/115,clubs/2 +members/116,clubs/4 +members/117,clubs/0 +members/118,clubs/2 +members/119,clubs/4 +members/120,clubs/6 +members/121,clubs/2 +members/122,clubs/4 +members/123,clubs/4 +members/124,clubs/4 +members/125,clubs/4 +members/126,clubs/4 +members/127,clubs/4 +members/128,clubs/4 +members/129,clubs/0 +members/130,clubs/6 +members/131,clubs/6 +members/132,clubs/0 +members/133,clubs/6 +members/134,clubs/0 +members/135,clubs/0 +members/136,clubs/6 +members/137,clubs/2 +members/138,clubs/2 +members/139,clubs/0 +members/140,clubs/2 +members/141,clubs/4 +members/142,clubs/3 +members/143,clubs/4 +members/144,clubs/0 +members/145,clubs/4 +members/146,clubs/4 +members/147,clubs/2 +members/148,clubs/4 +members/149,clubs/5 +members/150,clubs/4 +members/151,clubs/4 +members/152,clubs/0 +members/153,clubs/0 +members/154,clubs/6 +members/155,clubs/6 +members/156,clubs/6 +members/157,clubs/2 +members/158,clubs/4 +members/159,clubs/0 +members/160,clubs/4 +members/161,clubs/2 +members/162,clubs/0 +members/163,clubs/2 +members/163,clubs/4 +members/163,clubs/5 +members/164,clubs/0 +members/165,clubs/4 +members/166,clubs/4 +members/167,clubs/2 +members/168,clubs/4 +members/169,clubs/4 +members/170,clubs/0 +members/171,clubs/6 +members/172,clubs/0 +members/173,clubs/3 +members/173,clubs/5 +members/174,clubs/0 +members/175,clubs/4 +members/176,clubs/2 +members/177,clubs/4 +members/178,clubs/2 +members/178,clubs/6 +members/179,clubs/6 +members/180,clubs/4 +members/181,clubs/2 +members/182,clubs/2 +members/183,clubs/0 +members/183,clubs/4 +members/184,clubs/2 +members/185,clubs/4 +members/186,clubs/0 +members/187,clubs/3 +members/188,clubs/6 +members/189,clubs/4 +members/190,clubs/5 +members/191,clubs/6 +members/192,clubs/4 +members/193,clubs/6 +members/194,clubs/4 +members/195,clubs/0 +members/196,clubs/5 +members/196,clubs/6 +members/197,clubs/4 +members/198,clubs/4 +members/199,clubs/6 +members/200,clubs/2 +members/200,clubs/4 +members/200,clubs/6 +members/201,clubs/2 +members/201,clubs/6 +members/202,clubs/0 +members/203,clubs/4 +members/204,clubs/3 +members/204,clubs/5 +members/205,clubs/4 +members/206,clubs/0 +members/206,clubs/2 +members/206,clubs/3 +members/206,clubs/4 +members/206,clubs/6 +members/207,clubs/4 +members/208,clubs/6 +members/209,clubs/2 +members/209,clubs/6 +members/210,clubs/4 +members/211,clubs/4 +members/212,clubs/4 +members/213,clubs/0 +members/214,clubs/2 +members/215,clubs/4 +members/216,clubs/2 +members/217,clubs/4 +members/218,clubs/4 +members/219,clubs/0 +members/220,clubs/1 +members/221,clubs/4 +members/222,clubs/4 +members/223,clubs/4 +members/224,clubs/0 +members/225,clubs/4 +members/226,clubs/4 +members/227,clubs/4 +members/228,clubs/2 +members/229,clubs/2 +members/230,clubs/2 +members/230,clubs/4 +members/231,clubs/2 +members/231,clubs/4 +members/232,clubs/5 +members/233,clubs/2 +members/234,clubs/2 +members/235,clubs/0 +members/236,clubs/2 +members/237,clubs/1 +members/238,clubs/3 +members/239,clubs/0 +members/239,clubs/2 +members/239,clubs/4 +members/240,clubs/6 +members/241,clubs/6 +members/242,clubs/0 +members/242,clubs/2 +members/242,clubs/3 +members/242,clubs/5 +members/242,clubs/6 +members/243,clubs/0 +members/244,clubs/0 +members/245,clubs/0 +members/245,clubs/1 +members/246,clubs/5 +members/246,clubs/6 +members/247,clubs/4 +members/248,clubs/2 +members/249,clubs/0 +members/250,clubs/6 +members/251,clubs/6 +members/252,clubs/4 +members/253,clubs/6 +members/254,clubs/4 +members/255,clubs/4 +members/256,clubs/0 +members/257,clubs/3 +members/258,clubs/2 +members/258,clubs/6 +members/259,clubs/4 +members/260,clubs/2 +members/260,clubs/4 +members/260,clubs/5 diff --git a/index.rst b/index.rst index 62e4733..ec38758 100644 --- a/index.rst +++ b/index.rst @@ -9,6 +9,8 @@ Welcome to Multinet .. toctree:: :maxdepth: 2 + overview + quickstart multinet Indices and tables diff --git a/multinet.rst b/multinet.rst index aa8b4e1..a7ec9ec 100644 --- a/multinet.rst +++ b/multinet.rst @@ -1,12 +1,122 @@ -.. _multinet: +Using Multinet +============== -======== -Multinet -======== -The Multinet API and web application +This chapter is all about how to make use of a running Multinet system. Along +the way, you will also learn how Multinet structures data into tables and +networks, collected in different workspaces, and how Multinet thinks of +multivariate data and multivariate networks. -.. toctree:: - :maxdepth: 2 +Getting Started +--------------- - installation - testing +To begin, you will need access to a running Multinet instance (either the +official instance hosted at https://multinet.app, or a local instance you have +built and run; see :ref:`quickstart` for help). We will follow some steps to +illustrate the basic mode of using the system. + +**1. Create a Workspace** + +Multinet structures all the data it hosts into *workspaces*. A workspace can +hold several tables of data, as well as several networks assembled from those +tables. Think of a workspace as a dedicated area for related data to be stored. + +In this tutorial sequence we will be recreating the `Paul Revere dataset +`_ +as a social network connecting the various Revolutionary War figures to the +social clubs they belonged to. + +To create a workspace to hold the materials for this dataset, use the ``NEW +WORKSPACE`` button appearing near the top of the left sidebar. A dialog box will +appear asking for the name of the new workspace. Fill this in with ``boston`` +and click on the ``CREATE WORKSPACE`` button. This will create the workspace and +activate it. + +In the main panel, you should see two empty columns, headed by ``Networks`` and +``Tables`` respectively. These columns will track all of the data that comes to +live in this workspace. + +**2. Upload Node Tables** + +Multinet largely thinks of attribute data in tabular terms. That is, Multinet +can ingest data formatted as (among other thigns) CSV files, storing it as a +*table* of *rows*, each row containing the same types of attributes in the same +order. Every node table must have a special attribute called ``_key``, which +contains a value unique to that row within the table it is part of. + +We will begin by uploading separate tables to account for the *people* and +*clubs* represented in this dataset. First, download :download:`members.csv +`; this file contains the names of several historical +figures important during the American Revolution, along with some attributes. +Next, click on the plus icon to the right of the ``Tables`` column to upload a +file and create a table. Specify the ``members.csv`` file, note that the system +autofills in the name of the table to create, and then click the ``CREATE`` +button. + +This network contains two *node types*---one to encode the people, and another +for the clubs they belong to. Multinet recognizes nodes encoded in different +tables as being of different node types, so download :download:`clubs.csv +` and upload it to a ``clubs`` table, using the same procedure +as above. + +You should now see both a ``members`` and a ``clubs`` table listed. You can +click on each of these to see the rows of each table. Return to the workspace +view by clicking on boston in the top bar. + +**3. Upload an Edge Table** + +Next we want to specify the topology of this network---that is, the relationship +between clubs and members as specified by membership. We need a special table +that encodes these memberships, using special attributes ``_from`` and ``_to``. +These attributes will always refer to rows from other tables in the workspace, +using a *node ID*, which is formed by joining the name of the table and the key +of the row with a slash. For instance, the John Adams row has a key value of +``7``; its node ID is therefore ``members/7``. + +You can think of the rows of such a table as a directed links connecting two of +the nodes from somewhere in the workspace. To see this in action, download +:download:`membership.csv `, and upload it as a table. +Because this table has properly formatted ``_from`` and ``_to`` attributes, +Multinet recognizes it as an *edge table*. If you click on the newly uploaded +table, you can explore what the rows look like. Note that while edge tables can +also have other attributes, this one does not. + +**4. Create a Network** + +Creating a network in Multinet is a matter of specifying an edge table that +defines that network's topology and implicitly (via the ``_from`` and ``_to`` +values of its edge table rows, the nodes involved as) its nodes as well. To +create the Paul Revere network, click on the plus icon to the right of the +Networks column. When the dialog box appears, click on the ``CREATE`` tab at the +top, then select the ``membership`` table from the dropdown. Note that Multinet +already knows which tables are edge tables, due to the presence of ``_from`` and +``_to`` attributes. Fill in the name of the network with ``boston``, and then +click on the ``CREATE NETWORK`` button. You should see the new network appear in +the Networks column. + +If you click on the new network, you will be taken to the network view, which +aggregates various pieces of information about this network, and provides links +to visualization applications. Note that the main panel displays some +characeristic information such as the number of nodes and edges, and the drawer +at the bottom displays information about the node types comprising this network, +the edge table that provides the connectivity, and a paged view of the nodes +themselves, identified by their node IDs. Clicking on these items will bring you +to dedicated views providing specific information; you can return to the network +view using the browser back button. + +**5. Visualize the Network** + +Now that the Paul Revere network is known to Multinet, its component data is now +available via the Multinet API to be consumed by different analysis and +visualization applications. To demonstrate, we will launch an interactive +node-link diagram to see what this particular network looks like. + +In the network view, note that the right-hand sidebar contains a list of +external applications it can open. Click on ``Nodelink`` to open the node-link +diagram in a new tab. This application works by sending REST requests for the +specified network to the Multinet API server (which is the same server that +provides the file-browser-like view of the data that we have been learning about +in the Multinet client). As data about the nodes and links arrives in this +application, it can construct an interactive visual model of the network as a +collection of physical nodes connected by physically springlike links. Play with +the network in this application and explore the various options available in the +control panel. diff --git a/overview.rst b/overview.rst new file mode 100644 index 0000000..3d205d3 --- /dev/null +++ b/overview.rst @@ -0,0 +1,75 @@ +Overview +======== + +Welcome to Multinet! + +Multinet is a software suite consisting of a web API server, a web client +application, a TypeScript client library, and a collection of analysis and +visualization applications that are all designed to work with each other to host +*multivariate network data* and enable *disovery, analysis, and visualization* +for them. + +Multinet is part of a larger `NSF research project +`_ led by the +`Visualization Design Lab `_ at the University of +Utah, with `Kitware Inc. `_ spearheading software +development efforts. + +What is a Multivariate Network? +------------------------------- + +Networks are an increasingly common and useful way to model many of the +phenomena in the natural, social, biological, and abstract worlds around us. +Common examples include social networks connecting individuals through their +acquaintanceships, neurons in the retina forming sensory-perceptual receiver +circuits, computers connected to each other comprising both local networks and +the Internet at large, and networks modeling the probabilistic transmission of +disease through a community, but there are countless other examples, spread +throughout many academic and industrial fields. + +In general, networks are modeled as a collection of *nodes*, representing +entities such as people or computers, connected together via *links* +representing some type of relationship between a subset of pairs of nodes. +*Multivariate* networks are networks that carry extra data (also known as +*attributes*) on the nodes and edges. For instance, in a social network, the +nodes (representing individual people) might each carry data such as *name*, +*age*, *hometown*, etc. A network representing the retina could have scientific +measurements or assessments, such as cell types for the nodes, or voltage +measurements for the links, etc. + +The Multinet research project's main goal is to develop data processing, +analysis, and visualization methods that take into account both the connectivity +features of networks, and their multivariate data as well. Doing so will unlock +a lot of the value of network datasets being collected by scientists, policy +makers, and laypeople alike. + +For an overview of the state of the art in visualization techniques for +multivariate networks, see `Nobre et al. +`_ + +The Multinet Software Stack +--------------------------- + +The Multinet stack consists of the following components: + +- `multinet-server `_, an + open-source Flask API server that provides the Multinet API, which we are + developing as part of this project + +- `mutlinet-client `_, an + open-source web application, using VueJS and Vuetify to present an easy to use + interface to the Multinet API, including access to stored data, and ways to + launch intensive visualization and analysis applications + +- visualization applications, including `view-nodelink + `_, an interactive node-link diagram that + also displays node attributes in various forms, and `view-adjmatrix + `_, an interactive adjacency + matrix that also supports attribute display + +- `ArangoDB `_, a third-party open-source graph + database system that Multinet uses to store data and perform queries + +You can see how the client works by going to https://multinet.app and giving it +a try. To build your own development environment, either to host your own data +locally, or to work on the codebases, see :ref:`quickstart`. diff --git a/quickstart.rst b/quickstart.rst new file mode 100644 index 0000000..1899cda --- /dev/null +++ b/quickstart.rst @@ -0,0 +1,58 @@ +.. _quickstart: + +Quick Start +=========== + +The easiest way to get started with Multinet is to go to https://multinet.app, +and begin experimenting. + +To build a local development environment, you will need to *install +dependencies*, *launch a database*, *build and run the server*, and *build and +run the client*. Follow these steps: + +Install Dependencies +-------------------- + +These projects are built using the following tools; ensure that you have them +installed: + +- Docker +- Python 3.7 +- Pipenv +- Node +- Yarn + +Build and Run ``multinet-server`` +--------------------------------- + +1. Clone the repository: ``git clone https://github.com/multinet-app/multinet-server``. +2. Move into the repository: ``cd multinet-server``. +3. Copy the ``.env.default`` file: ``cp .env.default .env`` (or symlink it: ``ln + -s .env.default .env``). +4. Install the Python dependencies: ``pipenv install``. +5. Run the server application in dev mode: ``pipenv run serve``. +6. Point your web browser to http://localhost:5000 to ensure that the server is + working. + +Launch ArangoDB +--------------- + +1. Move into the server repository: ``cd multinet-server``. +2. Run the docker container for ArangoDB: ``docker-compose up``. (On Macs, you + may need to use an alternate command: ``ARANGO_DATA=~/.local/multinet/arango + docker-compose up``.) + +Build and Run ``multinet-client`` +--------------------------------- + +1. Clone the repository: ``git clone https://github.com/multinet-app/multinet-client``. +2. Move into the repository: ``cd multinet-client``. +3. Install the project dependencies: ``yarn install``. +4. Serve the application in dev mode: ``yarn serve``. +5. Point your web browser to http://localhost:8080 to see the client running. + +At this point, you should have a working development build of Multinet. See the +rest of this documentation for details on how Multinet works, and how to develop +with Multinet. If you have questions, contact us at multinet@kitware.com, or +file a report on the `issue tracker +`_.