{"id":20632758,"url":"https://github.com/acm-uiuc/groot","last_synced_at":"2025-04-15T19:04:11.257Z","repository":{"id":142800081,"uuid":"72315167","full_name":"acm-uiuc/groot","owner":"acm-uiuc","description":"Infrastructure of ACM@UIUC ","archived":false,"fork":false,"pushed_at":"2018-11-13T06:18:45.000Z","size":230,"stargazers_count":12,"open_issues_count":24,"forks_count":0,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-04-15T19:03:27.305Z","etag":null,"topics":["docker","groot","groot-deployment"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acm-uiuc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-10-29T23:42:51.000Z","updated_at":"2021-07-19T01:10:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"6b8f6826-9b97-4710-b476-fe99a9bc4872","html_url":"https://github.com/acm-uiuc/groot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acm-uiuc","download_url":"https://codeload.github.com/acm-uiuc/groot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249135815,"owners_count":21218365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","groot","groot-deployment"],"created_at":"2024-11-16T14:17:18.446Z","updated_at":"2025-04-15T19:04:11.248Z","avatar_url":"https://github.com/acm-uiuc.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Groot\nGroot is the next generation web application serving the UIUC Chapter of ACM. It is the replacement for liquid which goes defunct 1/1/2016. \n\n\n[![Join the chat at https://acm-uiuc.slack.com/messages/C6XGZD212/](https://img.shields.io/badge/slack-groot-724D71.svg)](https://acm-uiuc.slack.com/messages/C6XGZD212/)\n\n## Groot Projects\n\n- [groot](https://github.com/acm-uiuc/groot) - Infrastructure of ACM@UIUC\n\n### Javascript\n\n- [groot-desktop-frontend](https://github.com/acm-uiuc/groot-desktop-frontend) - Desktop Frontend for Groot\n- [groot-events-service](https://github.com/acm-uiuc/groot-events-service) - Manages ACM events\n- [groot-groups-service](https://github.com/acm-uiuc/groot-groups-service) - Manages ACM groups\n\n### Python\n\n- [groot-credits-service](https://github.com/acm-uiuc/groot-credits-service) - Unified payment system for ACM@UIUC\n- [groot-gigs-service](https://github.com/acm-uiuc/groot-gigs-service) - Supporting the Groot economy\n- [groot-meme-service](https://github.com/acm-uiuc/groot-meme-service) - Internal ACM@UIUC Meme Board\n- [groot-voz](https://github.com/acm-uiuc/groot-voz) - Alexa integrations for Groot\n\n### Ruby\n\n- [groot-auth-stub-service](https://github.com/acm-uiuc/groot-auth-stub-service) - A development authentication service that mocks crowd and returns a fake user\n- [groot-merch-service](https://github.com/acm-uiuc/groot-merch-service) - Groot service for injecting caffeine into your blood stream\n- [groot-quotes-service](https://github.com/acm-uiuc/groot-quotes-service) - Manages quotes heard around the ACM office\n- [groot-recruiters-service](https://github.com/acm-uiuc/groot-recruiters-service) - Recruiter Services for Groot\n- [groot-recruiters-templates-example](https://github.com/acm-uiuc/groot-recruiters-templates-example) - Holds template used by the Recruiter service to send emails\n- [groot-users-service](https://github.com/acm-uiuc/groot-users-service) - Users Services for Groot\n\n### Go\n\n- [groot-api-gateway](https://github.com/acm-uiuc/groot-api-gateway) - API Gateway for the Groot project written in Arbor\n\n## Setting Up Groot\n\n1. Follow [these](https://docs.docker.com/compose/install/#uninstallation) instructions to install Docker and docker-compose.\n2. Install repo - https://android.googlesource.com/tools/repo/\n\n    Mac OS\n    ```sh\n    brew install repo \n    ```\n\n    Ubuntu 14.04+\n    ```sh    \n    sudo apt install repo\n\n    ```\n3. Make a directory to house your groot work\n    ```sh\n    mkdir groot-deploy\n    ```\n    \n4. Within this directory run the following command to start managing the projects\n\n    ```sh    \n    repo init -u git@github.com:acm-uiuc/groot-manifest\n    ```\n    \n5. Run the following command to grab the latest releases of all services, including the frontend\n\n    ```sh    \n    repo sync\n    ```\n\n6. Run the settings init script:\n    ```sh\n    ./scripts/docker_settings_init.sh\n    ```\n7. Start up Docker. (This may involve `docker-machine` if you're on a Mac)\n8. Start the Docker containers:\n    ```sh\n    docker-compose up\n    ```\n9. Wait for the image to build and startup. If it works, you'll be able to visit `https://0.0.0.0:5000` in a browser and see the deployed site. The Groot API will be available on port 8000.\n\n    a. If you see errors it is most likely because you need to create configuration files for each of the services. \n       For each service with an error, copy and rename the `template` file to the name of the file minus template. \n       For example `groot-api-gateway/config/config.go.template` should be copied and renamed to `groot-api-gateway/config/config.go`\n\nUseful Notes:\n\n* If you want to just rebuild one service (i.e. for dev work), you can keep the `docker-compose` command running, and run this command in a separate terminal window to rebuild the service you're working on:\n    ```\n    docker-compose up -d --build SERVICE\n    ```\n* For dev work you'll probably want to run in unauthenticated mode. To do this, change the `CMD` line in `groot-api-gateway/Dockerfile` to:\n    ```\n    CMD [\"./build/groot-api-gateway\", \"-u\"]\n    ```\n* To view logs, run:\n    ```\n    sudo docker-compose logs -f\n    ```\n\n## Legacy Instructions\n*Note: It is necessary for you to have an ssh key (without a password if you want it to be even easier) attached to your github*\n\n1. Install repo - https://android.googlesource.com/tools/repo/\n\n    Mac OS\n    ```sh\n    brew install repo \n    ```\n\n    Ubuntu 14.04+\n    ```sh    \n    sudo apt install repo\n\n    ```\n2. Make a directory to house your groot work\n    ```sh\n    mkdir groot\n    ```\n    \n3. Within this directory run the following command to start managing the projects\n\n    ```sh    \n    repo init -u git@github.com:acm-uiuc/groot-manifest\n    ```\n    \n4. Run the following command to grab the latest releases of the services and frontend\n\n    ```sh    \n    repo sync\n    ```\n\n    - If you want to grab the latest ever just run the same command \n5. Run the ```dev_spinup.sh``` script to start up a dev instance of groot (will grab the latest version of each service on github)\n6. Run the ```prod_spinup.sh``` script to start a production version of groot (will grab the latest version of each and place them in their respective containers, so you will need docker)\n\n### First Time Setup\n- Golang \n    + Install Software \n    ```sh\n    mkdir [SOME DIRECTORY]\n    mkdir [SOME DIRECTORY]/bin \u0026\u0026 mkdir [SOME DIRECTORY]/lib \\\n    \u0026\u0026 mkdir [SOME DIRECTORY]/src\n    mkdir -p [SOME DIRECTORY]/src/github.com/acm-uiuc\n    ```\n    --- Add to .profile (.zshrc/.bashrc) ---\n    ```sh\n    export GOPATH=[SOME DIRECTORY]\n\n    #macOS \n    export GOROOT=/usr/local/opt/go/libexec\n    #Ubuntu 14.04+\n    export GOROOT=/usr/local/go\n\n    export PATH=$PATH:$GOPATH/bin\n    export PATH=$PATH:$GOROOT/bin\n    ```\n    ```sh\n    #macOS\n    brew install go\n    #Ubuntu 14.04+\n    sudo curl -O https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz\n    sudo tar -xvf go1.7.linux-amd64.tar.gz\n    sudo mv go /usr/local\n    ```\n    + Add ```groot``` to ```GOPATH```\n    ```sh \n    ln -s [PATH to groot-deploy]/groot-api-gateway [SOME DIRECTORY]/src/github.com/acm-uiuc/groot-api-gateway\n    ``` \n    + Install groot dependecies\n    ```sh\n    go get github.com/gorilla/mux\n\n    go get github.com/boltdb/bolt\n\n    go get github.com/kennygrant/sanitize\n\n    go get github.com/acm-uiuc/arbor/server\n\n    go get github.com/acm-uiuc/arbor/services\n\n    go get github.com/acm-uiuc/arbor/security\n\n    go get github.com/acm-uiuc/arbor/proxy\n\n    go install github.com/gorilla/mux\n\n    go install github.com/boltdb/bolt\n\n    go install github.com/kennygrant/sanitize\n\n    go install github.com/acm-uiuc/arbor/server\n\n    go install github.com/acm-uiuc/arbor/services\n\n    go install github.com/acm-uiuc/arbor/security\n\n    go install github.com/acm-uiuc/arbor/proxy\n    ```\n\n    + Install packages\n\n    ```sh\n    go install github.com/acm-uiuc/groot-api-gateway/config\n\n    go install github.com/acm-uiuc/groot-api-gateway/services\n    ```\n- Node\n    + Install Software\n    ```sh\n    #macOS\n    brew install node\n    #Ubuntu 14.04+  \n    sudo apt-get install nodejs\n    sudo apt-get install npm\n    sudo apt-get install build-essential\n    sudo apt-get update\n    sudo apt-get install build-essential libssl-dev\n    curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh -o install_nvm.sh\n    bash install_nvm.sh\n    source ~/.profile\n    nvm install 7.2.0\n    nvm use 7.2.0\n    sudo npm install -g forever\n    ```\n- Ruby\n    + Install Software\n    ```sh\n    #macOS\n    brew install rbenv\n    #Ubuntu 14.04+\n    sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev\n    git clone https://github.com/rbenv/rbenv.git ~/.rbenv\n    echo 'export PATH=\"$HOME/.rbenv/bin:$PATH\"' \u003e\u003e ~/.bashrc (~/.profile / ~/.zshrc)\n    echo 'eval \"$(rbenv init -)\"' \u003e\u003e ~/.bashrc (~/.profile / ~/.zshrc)\n    source ~/.bashrc (~/.profile / ~/.zshrc)\n    git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build\n\n    rbenv install 2.3.1\n    rbenv global 2.3.1\n    # You may have to restart your terminal session\n    gem install bundler\n    ```\n- Python \n    + Install Software\n    ```\n    #macOS \n    brew install python \n    #Ubuntu\n    sudo apt install python-pip\n    ```\n    \n- MySQL\n    + Install Software\n    ```sh\n    #macOS\n    brew install mysql\n    mysqladmin -u root password 'yourpassword' \n    mysql.server restart\n    #Ubuntu 14.04+\n    sudo apt-get install mysql-server\n    sudo apt-get install libmysqlclient-dev\n    sudo mysqld --intialize\n    \n    mysql -u root\n    mysql\u003e CREATE DATABASE groot_recruiter_service;\n    mysql\u003e CREATE DATABASE acm_users;\n    mysql\u003e CREATE DATABASE groot_meme_service;\n    mysql\u003e CREATE DATABASE groot_quotes_service;\n    ```\n\n## License\n\nThis project is licensed under the University of Illinois/NCSA Open Source License. For a full copy of this license take a look at the LICENSE file. \n\nWhen contributing new files to this project, preappend the following header to the file as a comment: \n\n```\nCopyright © 2017, ACM@UIUC\n\nThis file is part of the Groot Project.  \n \nThe Groot Project is open source software, released under the University of Illinois/NCSA Open Source License. \nYou should have received a copy of this license in a file with the distribution.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm-uiuc%2Fgroot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facm-uiuc%2Fgroot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm-uiuc%2Fgroot/lists"}