{"id":26267846,"url":"https://github.com/oslabs-beta/jugglr","last_synced_at":"2025-04-30T19:21:33.509Z","repository":{"id":39911518,"uuid":"484579796","full_name":"oslabs-beta/Jugglr","owner":"oslabs-beta","description":"Jugglr is a test data management tool that enables reliable testing with a Docker containerized database","archived":false,"fork":false,"pushed_at":"2022-05-22T00:41:28.000Z","size":18651,"stargazers_count":74,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-08T10:53:17.888Z","etag":null,"topics":["docker","electron","nodejs","postgresql","testing","testing-tools"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oslabs-beta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-22T21:45:05.000Z","updated_at":"2024-10-29T22:05:48.000Z","dependencies_parsed_at":"2022-09-21T04:53:19.846Z","dependency_job_id":null,"html_url":"https://github.com/oslabs-beta/Jugglr","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FJugglr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FJugglr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FJugglr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2FJugglr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oslabs-beta","download_url":"https://codeload.github.com/oslabs-beta/Jugglr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251767211,"owners_count":21640471,"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","electron","nodejs","postgresql","testing","testing-tools"],"created_at":"2025-03-14T04:18:30.218Z","updated_at":"2025-04-30T19:21:33.488Z","avatar_url":"https://github.com/oslabs-beta.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Jugglr\n\nJugglr is a tool for managing test data and running tests with a lightweight, dedicated database. Jugglr enables developers, testers, and CI/CD processes to run tests against containerized databases with data loaded at runtime.\n\n- [Authors](#authors)\n- [Installation](#installation)\n  * [Clone the project](#clone-the-project)\n  * [Go to the project directory](#go-to-the-project-directory)\n  * [Install dependencies](#install-dependencies)\n  * [Start the servers](#start-the-servers)\n  * [Run tests](#run-tests)\n- [Documentation](#documentation)\n- [Running in CI/CD](#running-in-cicd)\n## Authors\n\n- [@Anthony Stanislaus](https://github.com/STANISLAUSA)\n- [@Alvin Ma](http://github.com/ALVMA1945)\n- [@Miriam Feder](https://www.github.com/mirfeder)\n- [@S M Iftekhar Uddin](http://github.com/iuddin)\n\n\n## Installation\n\nA. Download the Jugglr executable app from the project [website](https://jugglr-test.com/) to start using it right away. \n\nB. Alternatively, follow these steps:\n\n### Clone the project\n\n```bash\n  git clone https://github.com/oslabs-beta/Jugglr\n```\n### Go to the project directory\n\n```bash\n  cd Jugglr\n```\n\n### Install dependencies\n\n```bash\n  npm install\n```\n\n### Start the servers\n\n```bash\n  npm run build\n  npm start\n```\n\n### Run tests\n```bash\n  npm test\n```\n\n**Note: you must be running Docker to use Jugglr. Download Docker Desktop from [here](https://www.docker.com/get-started/).**\n\nThe first time you build an image, it may take some time as Docker needs to download the Postgres image from DockerHub. After that, the Postgres image will be stored locally and image creation should take no more than a second or two.\n## Documentation\n\nDetailed documentation on how to use Jugglr can be found [here](/docs/Jugglr%20Documentation.md).\n\n\n## Running in CI/CD\n\nTo run tests in a CI/CD process, the Docker image must be built and run in a container on the CI/CD server. \nYou may choose to create a second Dockerfile (e.g.) Dockerfile.cli as follows:\nUsing the baseline Dockerfile created by Jugglr (in the `\u003cproject root\u003e`/jugglr/ directory), you\ncan either load a sql file with all data included (i.e., a PostgreSQL dump file) \nor you can load data as a separate step, as described below\n\n#### First, in the Dockerfile, add a step at the end to copy the csv file(s) into the container:\n```bash\nCOPY \u003cyourcsvfilename.csv with full path\u003e  \u003cspecify any path in the container, like /usr/data/yourcsvfilename.csv\u003e\n```\n#### Build the image \n\n- note: the dot after the image name is important, it means build the image from the current directory. If you want to build image from elsewhere, specify that location relative to where command is being run from\n- if you name your Dockerfile a different name or put it in a different path, specify that after the -f flag.\n```bash\ndocker build -t \u003cimage name\u003e . -f jugglr/Dockerfile   //or other name you have given the Dockerfile\n```\n#### Run the image in a container: \n```bash\n  docker run -d \\\n  --name \u003ccontainer name\u003e  \\\n  -p \u003cport to run on\u003e:5432 \\                                  //port number can be anything on the left of the colon. Leave the 5432 after the colon\n  -e POSTGRES_PASSWORD=\u003cpostgres password\u003e  \u003cimage name\u003e\n```\n#### Finally, load data from a file (keep the single and double quotes in the copy command below):\n\n```bash\ndocker exec -it \u003ccontainer name\u003e  psql -U \u003cdatabase username\u003e -d \u003cdatabasename\u003e -c \"\\copy \u003ctablename\u003e FROM '\u003cpath to csv file in the Docker Container\u003e' DELIMITER ',' CSV HEADER;\"\n```\n## How to Contribute:\n\nJugglr is an open source product and we encourage other developers to make improvements to the application. If you would like to contribute to Jugglr, head over to the dev branch, fork it, pull down the code, and create your own feature branch in the format name/feature. Run\n```'npm install', 'npm run build', and 'npm start' ```\nto see the app at it's current state. Once you've made your changes, push it back up to your feature branch and create a pull request into the original dev branch and the team will review your changes.\n\n ## Enhancements:\n\n Ideas for enhancements:\n - Add support for MongoDB and other popular databases\n - Maintain more than one Dockerfile so users can load data to different databases for different projects without having to switch out the Dockerfile each time (Maybe consider using a .yml file)\n - Render Docker commands directly in the app to pass on to the CI/CD team \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fjugglr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foslabs-beta%2Fjugglr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fjugglr/lists"}