{"id":22083643,"url":"https://github.com/dockerbound-immortal/nerpa","last_synced_at":"2026-04-05T22:01:54.581Z","repository":{"id":201695868,"uuid":"447655618","full_name":"Dockerbound-Immortal/NERPA","owner":"Dockerbound-Immortal","description":"NERPA Microservices Architecture. Node, Nginx, React, Postgres, Adminer. ","archived":false,"fork":false,"pushed_at":"2022-01-17T09:11:25.000Z","size":209,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T21:31:16.814Z","etag":null,"topics":["adminer","nginx","node","postgres","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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://github.com/Dockerbound-Immortal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-01-13T15:42:12.000Z","updated_at":"2024-09-27T15:30:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"215cafee-1585-42af-9fef-d8a4b8c0a063","html_url":"https://github.com/Dockerbound-Immortal/NERPA","commit_stats":null,"previous_names":["planetdebug/nerpa"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/Dockerbound-Immortal/NERPA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dockerbound-Immortal%2FNERPA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dockerbound-Immortal%2FNERPA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dockerbound-Immortal%2FNERPA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dockerbound-Immortal%2FNERPA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dockerbound-Immortal","download_url":"https://codeload.github.com/Dockerbound-Immortal/NERPA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dockerbound-Immortal%2FNERPA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31451446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["adminer","nginx","node","postgres","react"],"created_at":"2024-12-01T00:16:45.752Z","updated_at":"2026-04-05T22:01:54.318Z","avatar_url":"https://github.com/Dockerbound-Immortal.png","language":"JavaScript","readme":"# Forewarn\n\nThis repository is deprecated, this stack will be being split out into multiple docker-compose files for each network.\nYou may still use this for a quick devbox setup but it is not recommended for large-scale microservices. \n\nWe will be building a new Microservices architecture using multiple docker-compose files which works with docker-compose\nexternal networks to join multiple networks together, making our compose files smaller and more manageable. \n\n# NERPA Microservices\n\nA simplified microservices template for use with docker-compose. \nEach service is separated by a network, ensuring local services \nonly have access to their local database within their own network. \n\nServices are expected to communicate over their APIs, maintaining \na copy of their own database entries if necessary. This means \neach service built within the architecture is modular, it can be \nremoved or replaced and still allow the other services to function. \n\nAn Nginx gateway routes to different services on different ports\nusing the Nginx configuration. Not only is this method of direct \nrouting faster, it also acts as protection from the greater web. \n\n## Usage\n\nTo get started, make sure you have [Docker installed](https://docs.docker.com/docker-for-mac/install/) on your system, and then clone this repository.\n\nContainers can be brought up with the docker-compose.dev.yml by running the following command: \u003ccode\u003edocker-compose -f docker-compose.dev.yml up --build -d\u003c/code\u003e\n\nonly exposed endpoints are available from your localhost, using: \u003ccode\u003edocker ps\u003c/code\u003e you can see which ports are available from your localhost \nby the 0.0.0.0 address. Other ports are only available within the docker networks, these can communicate via their container names over the docker\nnetwork, but it is not necessary to expose them to the localhost. \n\nData is persisted to the database via volumes. You can add more services by adding them to the docker-compose file, along wth updating \nthe nginx.conf file to include the routes to expose. By default this is set up for a single service, you may wish to set up routes \nfor each service named as ````/service````. This is performed\nin the nginx conf by using the container name followed by the port:\n\n\u003cpre\u003e\n\u003ccode\u003e\n    location /api/ {\n        proxy_pass http://artemis-api:4000/;\n    }\n\u003c/code\u003e\n\u003c/pre\u003e\n\nTo add more services you may wish to change the config to something more like:\n\n\u003cpre\u003e\n\u003ccode\u003e\nserver {\n    listen 80;\n\n    server_name localhost;\n\n    location / {\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_http_version 1.1;\n        proxy_set_header Connection $http_connection;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;\n        proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;\n        proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;\n        proxy_cache_bypass $http_upgrade;\n        proxy_read_timeout 900;\n        client_max_body_size 0;\n        proxy_buffering off;\n        add_header X-Accel-Buffering no;\n        \n        proxy_pass http://gateway-service:3000/;\n    }\n    \n    location gateway/api/ {\n        proxy_pass http://gateway-service-api:4000/;\n    }\n}\n\u003c/code\u003e\n\u003c/pre\u003e\n\n## Package Manager\n\nThe package manager used by default is ````yarn````. Yarn is somewhat faster than ```npm``` when initially installing a large number of packages. We also prefer the syntax since you no longer need the ````run```` keyword like you do when using ````npm````.\n\n## Exposed Ports \n\n- **nginx** - `:8080`\n- **adminer** - `:8081`\n\n## Git Setup\n\nWe recommend using different repositories for each service, and \nthen having separate repositories for the API and Client. Whilst each\nservice is packaged together with the API and Client, it is important\nto recognise that these themselves are separate modular sub-services. The API\nshould not be dependent on the client of vice-versa. You can achieve this by initialising each as it's own repo, then reinisitalising the main repo. \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdockerbound-immortal%2Fnerpa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdockerbound-immortal%2Fnerpa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdockerbound-immortal%2Fnerpa/lists"}