Monorepo containing the source and build tooling for the Gigantum Client
The Gigantum Client is a web application to manage the creation and sharing of data science projects. It is run locally and is delivered via a Docker container. The Client is the core component of a larger ecosystem of tools and services, including:
- Gigantum Cloud - A public repository for storage and sharing of Projects
- Gigantum Desktop - A desktop app to install and launch the Client
- Gigantum CLI - A simple command line tool to install and launch the Client
Developing the Gigantum Client requires that you have Docker installed locally. Visit the Gigantum user docs for instructions if needed.
Note, Docker must be running to build/run/test the Client.
git clone [email protected]:gigantum/gigantum-client.git
cd gigantum-client
git submodule update --init --recursive
To get started, clone the gigantum-client
repository locally. If you plan to contribute, be sure to create a fork
first so you can easily create a PR.
The integration
branch is the current "working" branch with the latest functional changes that have yet to be
released as stable.
The master
branch is the last version released as stable (i.e. what you get when you install the Gigantum Desktop
app)
python -m venv gtm-env
source gtm-env/bin/activate
cd gtm && pip install -e . && cd ..
gtm
is a command line tool to help build and configure the Client. This is a Python 3 application, so you must have
Python 3 installed. For detailed instruction see gtm/README.md.
The command gtm
is now available. Run gtm -h
to see available commands.
gtm dev setup
gtm
must be configured before use. This will ask a few questions and write configuration data to disk for future use.
"Backend" development mode is a configuration primarily used when working on the API. It configures the development container so that when started, the UI is served but the API does not start automatically.
"Frontend" development mode is a configuration primarily used when working on the Javascript UI. It configures the development container so that the API starts automatically, but the UI bundle is not served. This lets you run the Node server locally (on your host) so hot-loading and other dev features work well.
gtm dev -v build
Once complete, you'll have a container available for use either via your terminal or from PyCharm.
gtm dev start
In a new console session, enter the container and kick off the application:
gtm dev attach
/opt/setup.sh
python3 service.py
Open your web browser to http://localhost:10000 to access the application.
When finished, run:
gtm dev stop
See Pycharm dev notes for more details on how to set up Pycharm to use the development container
If you are simply interested in using the Gigantum Client, please follow the download instructions at gigantum.com. For most users, installing then Desktop app is the recommended way of getting the Client.
If you want to try out Gigantum before installing, you can use the online demo at https://try.gigantum.com.
This demo will stop any Project container that runs longer than 1 hr and remove your work after ~1 day.
For more information visit gigantum.com and check out the user docs at docs.gigantum.com.
gigantum-client
is organized as a monorepo, which means it contains multiple packages. While this has a few drawbacks
(e.g. larger repo, code possibly looks more intimidating, can't pip/npm install from Github), it has lots of benefits.
By bundling all of the components and tooling into a single repository, it makes it easier to develop, build, and release
the Gigantum Client. It also provides a single place to report issues, makes it easier to coordinate complex changes
across components, and makes testing easier. Finally, by maintaining parts of the code base as independent,
but related packages, it makes it easier re-use code in different parts of the platform.
This may seem odd, but lots of open source tools do it. Check out React, Meteor, Ember, Babel, and nteract for example.
Due to the added complexity of managing multiple packages in a single repository, gigantum-client
includes a developer
tool called gtm
. This tool manages building, testing, and deploying the Gigantum Client in several different
configurations. Refer to gtm README for more details.
The repo is organized as follows:
docs/
: Additional documentation and instructions for developers (in progress and possibly out of date)gtm/
: A python package containing the developer toolgtm
packages/confhttpproxy
: A python package for interfacing with the configurable proxy currently used by the Clientpackages/gtmapi
: A python package containing the Client's GraphQL API.packages/gtmcore
: A python package with many subpackages that make up the "core" library used by the Client. This package will be broken up in the future into more granular, related packages.resources/client
: Files and configuration data required for building the "production" configured containerresources/developer
: Files and configuration data required for building the "developer" configured containerresources/docker
: Dockerfiles for building the Client containerui
: The javascript frontend and associated build scripts and configuration
You can view contributors by visiting the contributors page on GitHub.
If you want to contribute to the Gigantum Client, the best place to start is the contributing guide.
This project follows the Contributor Code of Conduct. By participating, you are expected to follow this code. Please report unacceptable behavior to [email protected].
The Gigantum Client is released under an MIT license