GithubHelp home page GithubHelp logo

anibalsolon / gigantum-client Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 8.0 49.2 MB

Source and build tools for the Gigantum Client

License: MIT License

Shell 0.12% Python 59.72% Dockerfile 0.12% JavaScript 32.74% HTML 0.05% CSS 7.25%

gigantum-client's Introduction

Gigantum Client

CircleCI codecov FOSSA Status

Monorepo containing the source and build tooling for the Gigantum Client

Overview

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

Quickstart Guide (Setup and Build)

1) Install Docker

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.

2) Clone gigantum-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)

3) Create virtual environment

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.

4) Configure your development environment

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.

5) Build application client container and start working

gtm dev -v build

Once complete, you'll have a container available for use either via your terminal or from PyCharm.

6) Starting and stopping the gigantum client from terminal

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

7) Starting and stopping the gigantum client from PyCharm

See Pycharm dev notes for more details on how to set up Pycharm to use the development container

Users

Installing the Client

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.

Try It Out

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.

More Information

For more information visit gigantum.com and check out the user docs at docs.gigantum.com.

Development

Overview of Monorepo Structure

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 tool gtm
  • packages/confhttpproxy: A python package for interfacing with the configurable proxy currently used by the Client
  • packages/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 container
  • resources/developer: Files and configuration data required for building the "developer" configured container
  • resources/docker: Dockerfiles for building the Client container
  • ui: The javascript frontend and associated build scripts and configuration

Contributing

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].

License

The Gigantum Client is released under an MIT license

FOSSA Status

gigantum-client's People

Contributors

billvb avatar calumbutler avatar davclark avatar dkleissa avatar fmwest avatar mazharrr avatar randalburns avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.