{"id":350613,"name":"Prospect Energy","description":"An open source data platform for the energy access sector that allows you to customize data flows coming from ongrid, minigrid and offgrid sources.","url":"https://gitlab.com/prospect-energy/prospect-server","last_synced_at":"2026-05-14T15:30:21.834Z","repository":{"id":161507265,"uuid":"39240472","full_name":"prospect-energy/prospect-server","owner":"prospect-energy","description":"","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":6,"open_issues_count":203,"forks_count":0,"subscribers_count":null,"default_branch":"main","last_synced_at":"2023-06-25T19:46:52.464Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://gitlab.com/uploads/-/system/project/avatar/39240472/prospect-logo.png","metadata":{},"created_at":"2022-09-08T09:55:16.050Z","updated_at":"2023-06-25T17:10:23.047Z","dependencies_parsed_at":null,"dependency_job_id":"f5f09f24-660c-4ef0-b568-91f66b9e88db","html_url":"https://gitlab.com/prospect-energy/prospect-server","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:gitlab/prospect-energy/prospect-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/prospect-energy","download_url":"https://gitlab.com/prospect-energy/prospect-server/-/archive/main/prospect-server-main.zip","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/sbom","scorecard":null,"host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4521539,"owners_count":7348,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2026-01-12T22:45:04.389Z","status":"online","status_checked_at":"2026-05-01T02:00:09.948Z","response_time":3956,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.382Z","robots_txt_url":"https://gitlab.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"owner":{"login":"prospect-energy","name":"Prospect Energy","uuid":"organization-57315666","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":null,"repositories_count":2,"last_synced_at":"2023-05-04T13:41:43.397Z","metadata":{},"html_url":"https://gitlab.com/prospect-energy","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-04T13:41:43.418Z","updated_at":"2023-05-04T13:41:43.418Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/prospect-energy","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/prospect-energy/repositories"},"packages":[],"commits":{"id":11708912,"full_name":"prospect-energy/prospect-server","default_branch":"master","total_commits":14601,"total_committers":41,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":356.1219512195122,"dds":0.8793233340182179,"past_year_total_commits":6260,"past_year_total_committers":31,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":201.93548387096774,"past_year_dds":0.8648562300319489,"last_synced_at":"2026-05-11T14:01:22.448Z","last_synced_commit":"e8e3dc33341076d8da5101da155fd4b884ead809","created_at":"2026-04-04T08:36:48.505Z","updated_at":"2026-05-11T14:00:54.652Z","committers":[{"name":"Karl Welter","email":"karl.welter@a2ei.org","login":null,"count":1762},{"name":"klaytron","email":"clayton.violand@a2ei.org","login":null,"count":1614},{"name":"Germain Wessely","email":"germain.wessely@a2ei.org","login":null,"count":1500},{"name":"Antoine Gallix","email":"antoine.gallix@a2ei.org","login":null,"count":1444},{"name":"Matthieu Rigal","email":"matthieu.rigal@a2ei.org","login":null,"count":1299},{"name":"Andrea","email":"andrea.meyer@a2ei.org","login":null,"count":1261},{"name":"bherzog-a2ei","email":"bastian.herzog@a2ei.org","login":null,"count":635},{"name":"Karl Welter","email":"karl.welter+gitlab@a2ei.org","login":null,"count":626},{"name":"Martin","email":"mail@martin-scheerer.de","login":null,"count":615},{"name":"lottame","email":"lotta.melcher@a2ei.org","login":null,"count":523},{"name":"dammyadeniji12","email":"dami.adeniji12@gmail.com","login":null,"count":513},{"name":"Anne Schanz","email":"anne.schanz@a2ei.org","login":null,"count":429},{"name":"gonnek","email":"gonne@waldrandstudio.de","login":null,"count":414},{"name":"Joram Okwaro","email":"joram@eleorun.com","login":null,"count":344},{"name":"martin.daehn","email":"martin.daehn@a2ei.org","login":null,"count":307},{"name":"viktoriaschaale","email":"viktoria.schaale@a2ei.org","login":null,"count":221},{"name":"Stefan Zelazny","email":"stefan.zelazny@a2ei.org","login":null,"count":179},{"name":"Catherine Tushabe","email":"tushcathy@gmail.com","login":null,"count":166},{"name":"Kaja","email":"k.santro@posteo.de","login":null,"count":145},{"name":"DamilolaAdeniji","email":"dammy_adeniji@yahoo.com","login":null,"count":143},{"name":"Catherine Tushabe","email":"catherine.tushabe@a2ei.org","login":null,"count":97},{"name":"sweeneyiiid","email":"dlswee@gmail.com","login":null,"count":80},{"name":"Andrea","email":"brackkatze@googlemail.com","login":null,"count":55},{"name":"Paul Mugabi","email":"pmugabi@gmail.com","login":null,"count":38},{"name":"Pavel Voronov","email":"pavelvoronov1337@gmail.com","login":null,"count":35},{"name":"Lokalise Bot","email":"ci-bot@prospect.local","login":null,"count":29},{"name":"Tarik Tokic","email":"tokic@berlitec.de","login":null,"count":25},{"name":"Ofentse Phuti","email":"ofentse.phuti@a2ei.org","login":null,"count":25},{"name":"Martin","email":"96084-mscheerer@users.noreply.gitlab.com","login":null,"count":21},{"name":"Renovate Bot","email":"renovatebot@a2ei.org","login":null,"count":13},{"name":"dammyadeniji12","email":"dammy.oluwadamilola@a2ei.org","login":null,"count":9},{"name":"Tom Wier","email":"thomas@medic.org","login":null,"count":8},{"name":"Elliot Avila","email":"elliot.avila@a2ei.org","login":null,"count":7},{"name":"timothypesi","email":"timothy.pesi@a2ei.org","login":null,"count":5},{"name":"Joram Okwaro","email":"joram.okwaro@engie.com","login":null,"count":3},{"name":"Timothy Pesi","email":"timothypesi5@gmail.com","login":null,"count":3},{"name":"Brianna Schuyler","email":"brianna.schuyler@a2ei.org","login":null,"count":2},{"name":"Matthieu Rigal","email":"matt.rigal@gmail.com","login":null,"count":2},{"name":"Viktoria Schaale","email":"viktoriaschaale@mac-2.local","login":null,"count":2},{"name":"Malkia John","email":"malkia.john@a2ei.org","login":null,"count":1},{"name":"Martin Dähn","email":"martin.daehn@plugintheworld.com","login":null,"count":1}],"past_year_committers":[{"name":"Andrea","email":"andrea.meyer@a2ei.org","login":null,"count":846},{"name":"Karl Welter","email":"karl.welter@a2ei.org","login":null,"count":819},{"name":"klaytron","email":"clayton.violand@a2ei.org","login":null,"count":691},{"name":"Matthieu Rigal","email":"matthieu.rigal@a2ei.org","login":null,"count":682},{"name":"Germain Wessely","email":"germain.wessely@a2ei.org","login":null,"count":538},{"name":"dammyadeniji12","email":"dami.adeniji12@gmail.com","login":null,"count":513},{"name":"lottame","email":"lotta.melcher@a2ei.org","login":null,"count":465},{"name":"Anne Schanz","email":"anne.schanz@a2ei.org","login":null,"count":365},{"name":"gonnek","email":"gonne@waldrandstudio.de","login":null,"count":315},{"name":"Joram Okwaro","email":"joram@eleorun.com","login":null,"count":272},{"name":"Martin","email":"mail@martin-scheerer.de","login":null,"count":156},{"name":"bherzog-a2ei","email":"bastian.herzog@a2ei.org","login":null,"count":117},{"name":"Catherine Tushabe","email":"catherine.tushabe@a2ei.org","login":null,"count":97},{"name":"Catherine Tushabe","email":"tushcathy@gmail.com","login":null,"count":63},{"name":"martin.daehn","email":"martin.daehn@a2ei.org","login":null,"count":62},{"name":"Karl Welter","email":"karl.welter+gitlab@a2ei.org","login":null,"count":38},{"name":"Paul Mugabi","email":"pmugabi@gmail.com","login":null,"count":37},{"name":"Pavel Voronov","email":"pavelvoronov1337@gmail.com","login":null,"count":35},{"name":"DamilolaAdeniji","email":"dammy_adeniji@yahoo.com","login":null,"count":29},{"name":"Lokalise Bot","email":"ci-bot@prospect.local","login":null,"count":29},{"name":"Ofentse Phuti","email":"ofentse.phuti@a2ei.org","login":null,"count":25},{"name":"sweeneyiiid","email":"dlswee@gmail.com","login":null,"count":14},{"name":"Renovate Bot","email":"renovatebot@a2ei.org","login":null,"count":13},{"name":"dammyadeniji12","email":"dammy.oluwadamilola@a2ei.org","login":null,"count":9},{"name":"Tom Wier","email":"thomas@medic.org","login":null,"count":8},{"name":"Martin","email":"96084-mscheerer@users.noreply.gitlab.com","login":null,"count":7},{"name":"Elliot Avila","email":"elliot.avila@a2ei.org","login":null,"count":5},{"name":"timothypesi","email":"timothy.pesi@a2ei.org","login":null,"count":5},{"name":"Timothy Pesi","email":"timothypesi5@gmail.com","login":null,"count":3},{"name":"Malkia John","email":"malkia.john@a2ei.org","login":null,"count":1},{"name":"Stefan Zelazny","email":"stefan.zelazny@a2ei.org","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/commits","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","last_synced_at":"2026-05-13T00:00:10.650Z","repositories_count":24037,"commits_count":4200762,"contributors_count":115535,"owners_count":12380,"icon_url":"https://github.com/gitlab.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/gitlab.com/repositories"}},"issues_stats":{"full_name":"prospect-energy/prospect-server","html_url":"https://gitlab.com/prospect-energy/prospect-server","last_synced_at":"2026-05-13T15:01:01.041Z","status":"error","issues_count":null,"pull_requests_count":null,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":null,"pull_requests_closed_count":null,"pull_request_authors_count":null,"issue_authors_count":null,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":null,"bot_issues_count":null,"bot_pull_requests_count":null,"past_year_issues_count":null,"past_year_pull_requests_count":null,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":null,"past_year_pull_requests_closed_count":null,"past_year_pull_request_authors_count":null,"past_year_issue_authors_count":null,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":null,"past_year_bot_pull_requests_count":null,"past_year_merged_pull_requests_count":null,"created_at":"2026-04-15T01:00:24.351Z","updated_at":"2026-05-13T15:01:01.041Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/prospect-energy%2Fprospect-server/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{},"issue_authors":{},"pull_request_authors":{},"host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","last_synced_at":"2026-05-13T00:00:11.349Z","repositories_count":0,"issues_count":0,"pull_requests_count":0,"authors_count":61892,"icon_url":"https://github.com/gitlab.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/gitlab.com/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":null,"keywords":[],"dependencies":[],"score":9.05590631866912,"created_at":"2026-04-04T08:37:18.807Z","updated_at":"2026-05-14T15:30:21.847Z","avatar_url":"https://gitlab.com/uploads/-/system/project/avatar/39240472/prospect-logo.png","language":null,"category":"Energy Systems","sub_category":"Energy Data Accessibility and Integration","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"![Coverage](https://gitlab.com/prospect-energy/prospect-server/badges/main/coverage.svg?job=merge-coverage\u0026key_text=Coverage\u0026key_width=60)\n![Core coverage](https://gitlab.com/prospect-energy/prospect-server/badges/main/coverage.svg?job=merge-rspec-coverage\u0026key_text=Core+Coverage\u0026key_width=90)\n![Dataworker coverage](https://gitlab.com/prospect-energy/prospect-server/badges/main/coverage.svg?job=dataworker-tests\u0026key_text=Dataworker+Coverage\u0026key_width=130)\n![Pipeline Status](https://gitlab.com/prospect-energy/prospect-server/badges/main/pipeline.svg)\n\n\n# Prospect Server\n---\n**NOTE:**\n\nProspect is under heavy development and might change massively within short time frames. Please use current state of development for experimental use only\n\n---\n\nProspect is a server run application for data gathering and visualization in field of renewable energy. It consists of a set of open source tools running in Docker containers and a RubyOnRails Application combining these parts of Software. See it up and running: https://app.prospect.energy/\n\n---\n\nProspect Server is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.\n\n---\n\nIf you want to contribute to Prospect (e.g. connecting own data sources), you are most welcome. Please use our [developer wiki](https://gitlab.com/prospect-energy/prospect-server/-/wikis/home) to get started.\n\n\n## General Software setup and Architecture\n\nPlease see the [wiki for more information](https://gitlab.com/prospect-energy/prospect-server/-/wikis/home).\n\n## 1. Prerequisites\n\n* Install [git](https://github.com/git-guides/install-git) for your OS\n  * Windows only: run the following commands in your cmd terminal to not mix up [LF / CRLF](https://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/)\n     ```\n     git config --global core.autocrlf input\n     git config --global core.eol lf\n     ```\n* Install the latest docker and docker compose for your OS: [Get Docker](https://docs.docker.com/get-docker/)\n  * Ubuntu only: don't use snap, but [apt repository](https://docs.docker.com/engine/install/ubuntu/#installation-methods)\n  * Windows only: docker setup will ask you to install Windows Subsystem for Linux ([WSL](https://learn.microsoft.com/en-us/windows/wsl/install))\n* Checkout the [repo](https://gitlab.com/prospect-energy/prospect-server) in a folder of your choice by running the command in your system terminal (MacOSX: Terminal, Windows: cmd, Linux: Terminal). This folder will be the working directory for all following commands.\n```\ngit clone https://gitlab.com/prospect-energy/prospect-server.git\n```\n\n\n## 2. Setting up the Dev environment\n\nThere are two supported options.\n- The simpler one (2.1) runs all parts in docker managed by docker compose. This is the ideal option, if you want to test the project.\n- If you want to deep dive and debug via your local IDE, you can choose to have the core/ruby project run on your local machine, whilst using docker compose for the rest of the infrastructure (2.2).\n\n### 2.1 Docker compose - all batteries included\n\n#### 2.1.1 Starting the engines\n\nMake sure, you're in the root directory of the project, which contains `docker-compose.yml` as the recipe for the full prospect stack.\n\nStart the whole set of containers with:\n\n```bash\ndocker compose up     # run in foreground, CTRL-C will stop everything\ndocker compose up -d  # detach, you will be able to close the terminal\n```\n\nAfter a while dependencies or the containers might have bee updated, so to rebuild the containers run:\n\n```bash\ndocker compose up --build\n```\n\nFor the docker compose setup init scripts are already taking care of:\n* Creating the db, precompile assets and starting the prospect core server\n* Creating connection, users and buckets for minio\n* Running pending DB migrations\n\n#### 2.1.2 Stopping the engines\n\nTo stop everything, just use CTRL-C or if run in background use your Docker Desktop or\n\n```bash\ndocker compose down\n```\n\nNext time you wanna start using it again, just use `docker compose up` again.\nAs all data is stored on persistent volumes you can continue to work where you left.\n\n***That's it, you can start testing!***\nCheckout **Overview about all endpoints** to get an overview about all endpoints.\nAlso checkout **Logging**, to get to know how to use the built-in logging system.\n\n#### 2.1.3 Resetting the environment\n\nSometimes you might want to start with a clean state, so best just clear out the volumes. This will delete all the data.\n\n```bash\ndocker compose down -v\n```\n\n#### 2.1.4 Code Changes\n\nEven though the code is mounted dynamically into the respective containers, already running processes need to pick up changes.\nTo do this just restart the affected containers, this is much faster that taking everything just down and up again:\n\n```bash\ndocker compose restart core       # restart core container, have it pick up changes to things like initializers\ndocker compose restart dataworker # restart dataworker container\n```\n\nNote: The core Rails App will normally automatically pick up all code changes within `core/app` directory on each page reload.\n\n#### 2.1.5 Logs and Troubleshooting\n\nSometimes it is great to see what is going on within the containers:\n\n```bash\ndocker compose logs                  # print logs of all containers\ndocker compose logs -f               # follow logs of all containers\ndocker compose logs core             # print the logs of the core container and exit\ndocker compose logs -f -t dataworker # follow the logs of the dataworker container with added timestamps\n```\n\n#### 2.1.6 Database Migrations\n\nNormally when you (re)start the `core` docker container all pending DB migrations should be run.\n\nFor Devs writing migrations, that behavior might be unwanted, as they might have unfinished migrations.\nIf you do not want migration run automatically on core container start, just set the following in your local .env.\n\n```\nPROSPECT_AUTOMATIC_DB_MIGRATE=false\n```\n\nTo run migrations manually open a bash inside the core container and run the migrations via the rake task:\n\n```bash\ndocker compose exec core bash # Open a bash console inside the core service\nbundle exec rake db:migrate   # run the database migrations\n```\n\n### 2.2 Core app development\n\nNormally the core app is running and developed with docker compose.\n\nIf you optionally want the app running locally on your machine and have the rest of the infrastructure managed by docker you can\nfollow the [instructions from the wiki](https://gitlab.com/prospect-energy/prospect-server/-/wikis/Development/Core-App-Local-Development)\n\nMost of the commands below should be run from where the core application is running, so enter the core container with\n\n```bash\ndocker compose exec core bash\n```\n\nThe following command will set up the database and create the admin user. ( Normally done via docker compose)\n\n```bash\nbundle exec rake db:setup\n```\n\nYou also might want to dynamically compile the css while developing the UI.\nThis tasks runs indefinite and will recreate all assets while developing, so give it an extra terminal to run.\n\n```bash\nbundle exec rails tailwindcss:watch\n```\n\nStart the development server (if not running via docker).\nThen you will be able to log in with the credentials generated above: http://localhost:3000 :confetti_ball:\n\n```bash\nbundle exec rails s -p 3000 -b '127.0.0.1'  # locally\n```\n\nAfter code changes some migrations might need to be run, dependencies updated, so...\n\n```bash\nbundle install                # too lazy to rebuild container? just install dependencies\nbundle exec rake db:migrate   # run database- (and some few data-) migrations\n```\n\nGet a repl inside the app\n\n```bash\nbundle exec rails c\n```\n\nKeep your code clean before committing, to not get caught by the CI later. So run the linter with\n\n```bash\nbundle exec rubocop     # just print violations\nbundle exec rubocop -A  # autocorrect, 99% of the time, nothing breaks, but sometimes it does :)\n```\n\nRunning the tests, using the [RSpec](https://rspec.info/) framework\n\n```bash\nbundle exec rspec\n```\n\n### 2.3 Enabling prek pre-commit hooks for linting\n\nIf you want to contribute. Our linting, including rubocop, is handled by pre-commit hooks.\n\nThere is a feature of git called `pre-commit hooks`, that are scripts that get called\nwhen you want to commit changes. Those script must run without error on the applied\nchanges for git to proceed with the commit. The script used are normally code quality\ntools that enforce standards in the committed code.\n\nThere is a tool called [prek](https://prek.j178.dev) that handles installing the\ntools in isolated environments and registering scripts in the `.git` directory of the\nproject so they get run by git. `prek` reads its config from `.pre-commit-config.yaml`.\nThis config describes what script should be installed and how it should run.\n\nWhen setting up the project for the first time with git, you can install the pre-commit\nhooks with the `prek` tool with the command `uv tool install prek` (preferred\nmethod requiring to have\n[uv installed](https://docs.astral.sh/uv/getting-started/installation/)) or else by\nrunning `pip install prek` and then`prek install`.\n\nThe tool will install locally the required versions of python.\nRubocop runs via the core Docker container, so no host Ruby or ruby-build is needed.\nEnsure Docker is running and the core image is built (`docker compose build core`).\n\nAfter that, hooks will be run on changed code before every commit. Running the hooks might\nchange your code, in which case you also need to add the resulting changes to the\nchanges you want to commit before retrying. It might also prevent you from committing, if\ntools detect a rule violation but cannot auto correct it. In that case you must correct\nthe error manually, or explicitly ignore it.\n\n## 3. Overview about all endpoints\n\nIf you have followed the guide until here, you should have a working development setup\nby now. Check your `.env` as it contains the default credentials for all of these\nendpoints. The following endpoints should be available:\n\n* Prospect App: [http://localhost:3000](http://localhost:3000)\n  ```\n  PROSPECT_ADMIN_USER='default@example.com'\n  PROSPECT_ADMIN_PASSWORD='Oraech*ai2ve3Me7Cae9'\n  ```\n* Grafana: [http://localhost:3001](http://localhost:3001)\n  ```\n  GRAFANA_ADMIN_USER='admin'\n  GRAFANA_ADMIN_PASSWORD='oozaimahv9iemaeDa5xu'\n  ```\n* Postgres: Access the DB through a SQL client\n  ```\n  POSTGRES_HOST='localhost'\n  POSTGRES_PORT=5431\n  POSTGRES_USER='postgres'\n  POSTGRES_PASSWORD='postgres'\n  POSTGRES_DATABASE='prospect_development'\n  ```\n* Minio: [http://localhost:9090](http://localhost:9090)\n  ```\n  MINIO_ROOT_USER=admin\n  MINIO_ROOT_PASSWORD='Ri7icee1Iechiecu1roe'\n  ```\n* Faktory: [http://localhost:7420](http://localhost:7420)\n  just leave the username blank for the basic auth, password is\n  `FAKTORY_PASSWORD='faktorypassword'`\n\nOverwrite these credentials if needed like described below.\n\n## 4. Additional configurations\n\n### ENV Variables\n\nThe app is mostly configured via ENV variables using the [dotenv-rails](https://github.com/bkeepers/dotenv) gem.\nThe respective files required for development already mounted via docker compose.\nIf you feel the need to override those locally, you can just use `core/.env.local` to overwrite all variables specified in `.env`.\n\n### Google Auth\nThe App can also use Google Auth locally, if you need that then follow the steps for Google OAuth setup [here](https://support.google.com/cloud/answer/6158849?hl=en)\nand enter the credentials in your `core/.env.local`. Set `GOOGLE_AUTH='true'`. Use `http://localhost:3000/session/callback?provider=google?` as authorized redirect URI.\n\n## 5. Connectors\n\nProspect data connectors allow to import data into the system und various ways.\n\nWe allow direct imports into our data schema via manual CSV/Excel uploads, S3 Buckets, Google Sheets and API push. For an overview about our data schema please [check our documentation](https://app.prospect.energy/docs).\n\nWe also support an ever growing set of direct API integrations with manufacturer and CRM systems. Find the [full list here](https://gitlab.com/prospect-energy/prospect-server/-/wikis/User-Wiki/EN/Prospect-Integrations).\n\n## 6. Main Organization\n\nMembers of the *Main Organization* can see/do more on the platform. This helps to hide complexity from normal users and allow for features that need a more centralized approach. Set the `MAIN_ORG_ID` env variable to the main organization's id.\n\nMain organization features:\n- setup Stellar Multi Org Parent connector\n\n## 7. Beta: Importing Verasol product data\n\nAdmin users can navigate to Admin/Misc and upload the Verasol product data into our `common_products` db table. This is a beta feature as the common_products table is not yet used.\n\n## 8. Logging\n\nYou can use the `docker logs` command to check the logs as well, e.g. the following command to check the logs of minio via the docker cli:\n\n```bash\ndocker logs --follow prospect-server-minio-1\n```\n\n## 9. Production Deployment\n\nProspect Demo Core is automatically deployed. A successful gitlab pipeline run on main branch triggers redeployment.\nSee [event](https://gitlab.com/a2ei/prospect/event) project for more details.\n\nIn a production setup make sure to back up your `Rails.application.secret_key_base`.\nIt's the key you need to reproduce the pseudonymization step applied to all sensitive data.\nDon't store it next to your database backups, because access to it would make it much easier for an attacker to reverse the pseudonymization.\n\n**Warning**: When you set up a new production instance make sure you delete the default user (added by `seed.rb`).\nAlso use different credentials than the ones provided with the default environment variables and generate a new JWK key in place of the default one in: `docker_shared/jwks_pk.json`\nvia `docker compose run --rm core rake grafana:generate_jwk` for example.\nIf no key is present, the core container will also generate a new key, but Grafana will not start without one and is a required service for the core container.\nThis poses a little \"hen-egg-problem\", therefore the default key.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/350613","html_url":"https://ost.ecosyste.ms/projects/350613"}