{"id":18023615,"url":"https://github.com/jeffotoni/growth","last_synced_at":"2025-07-29T13:10:00.458Z","repository":{"id":48227085,"uuid":"384337098","full_name":"jeffotoni/growth","owner":"jeffotoni","description":"Simple CRUD example to store data coming from JSON in memory. In several languages.","archived":false,"fork":false,"pushed_at":"2025-05-16T19:02:51.000Z","size":53674,"stargazers_count":44,"open_issues_count":2,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-08T16:03:18.608Z","etag":null,"topics":["go","golang","hacktoberfest","kotlin","nodejs","nodejs-api","python","rust","typescript"],"latest_commit_sha":null,"homepage":"","language":"Go","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/jeffotoni.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-09T06:00:21.000Z","updated_at":"2025-05-16T19:02:55.000Z","dependencies_parsed_at":"2024-10-30T07:44:32.053Z","dependency_job_id":null,"html_url":"https://github.com/jeffotoni/growth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeffotoni/growth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgrowth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgrowth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgrowth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgrowth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffotoni","download_url":"https://codeload.github.com/jeffotoni/growth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffotoni%2Fgrowth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267693067,"owners_count":24129130,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["go","golang","hacktoberfest","kotlin","nodejs","nodejs-api","python","rust","typescript"],"created_at":"2024-10-30T07:10:01.417Z","updated_at":"2025-07-29T13:10:00.413Z","avatar_url":"https://github.com/jeffotoni.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Growth 💙 🐿️ 🐍 🦀\nThis repository was created to make projects available in various programming languages ​​for educational purposes and to collaborate with the developer community. A joke that was born on social media and materialized in this repository ❤️.\n\nProgramming languages ​​❤️ are tools and should be used to solve specific problems than what they were proposed to solve. But we know that it goes far beyond this 😍, in this equation we have to add a pinch of LOVE 😍 and when you have this combination things start to get even more interesting 😂😂.\n\n---\nThe scope of the project is to create a rEST API, a CRUD and persist it in memory and place it in a docker image. The size of this docker image could not exceed 6Mb, but we are aware of the limitations that each language has and in this regard you can send a larger image, try to make it as small as you can and very lean ☺️.\n\nYour POST will receive a JSON of 1mb or 3mb and persist it in memory.\nBelow is an example and description of what you will need to implement in the API.\n\nThe entire repo was organized by programming languages, feel free to collaborate by sending us a pull request, below we will leave the documentation on how to make a PR.\n\nWhat we will send to [POST] will be a 1Mb or 3Mb json with more than 40k lines and the body of the json is below:\n\n```bash\n[\n   {\n      \"Country\":\"BRZ\",\n      \"Indicator\":\"NGDP_R\",\n      \"Value\":183.26,\n      \"Year\":2002\n   },\n   {\n      \"Country\":\"AFG\",\n      \"Indicator\":\"NGDP_R\",\n      \"Value\":198.736,\n      \"Year\":2003\n   }\n]\n```\n## Pull Request\n\nYou can organize your directory like the examples below:\n```bash\ngrow.go/\n└── jeffotoni\n    ├── grow.fiber\n    │   └── README.md\n    └── grow.standard.libray\n        ├── Dockerfile\n        ├── go.mod\n        ├── main.go\n        ├── main_test.go\n        └── README.md\n\n```\nYou can organize your project by choosing the language you will implement and then your github user and within your directory you can create and organize your contributions.\n\nCheck out more examples:\n```bash\ngrow.python/\n└── cassiobotaro\n    ├── Dockerfile\n    ├── main.py\n    ├── README.md\n    └── requirements.txt\n```\n\n```bash\ngrow.rust\n└── marioidival\n    └── actix\n        ├── Cargo.toml\n        └── src\n            └── main.rs\n```\n## Docker\nYou can use Docker or Podman to create your images, remembering that the smaller the better, so try to make the smallest images possible.\nWe will execute the following command:\n```bash\n$ docker build --no-cache -f Dockerfile -t growth/\u003clang\u003e:latest .\n```\nAnd then we will run it:\n```bash\n$ docker run --rm -it -p 8080:8080 growth/\u003clang\u003e\n```\n\nFeel free to play with the possibilities, you can use docker-compose too, you can use the scale option if you want space for creativity is always welcome 😁.\n\n## Tests Stress\nWe will be stress testing your project, so be sure to take this into consideration. We will be using V6 and Locust for the tests and they are located in the root of the repository with the installation and configuration manual. With our example ready and beautiful, just run it 😍.\n\n## Endpoints to be implemented\nThe endpoints that must be implemented are listed below, we will follow the same pattern for all projects:\n\n#### POST\nCreating our database in memory, this request is asynchronous and will run in the background, but only implement this feature if your language provides support.\n```bash\n$ curl -i -XPOST -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth -d @3mb-growth_json.json\n{\"msg\":\"In progress\"}\n```\n\n#### GET\nWith this endpoint we can view the status of the processing we sent in [POST]\n```bash\n$ curl -i -XGET -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/post/status\n{\"msg\":\"complete\",\"test value\"\":183.26, \"count\":42450}\n```\n\n#### GET\nThis endpoint searches memory to return the result.\n```bash\n$ curl -i -XGET -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/brz/ngdp_r/2002\n{\"Country\":\"BRZ\",\"Indicator\":\"NGDP_R\",\"Value\":183.26,\"Year\":2002}\n```\n\n#### PUT\nThis endpoint will update the database in memory, if the data does not exist it will create a new one.\n\n```bash\n$ curl -i -XPUT -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/brz/ngdp_r/2002 \\\n-d '{\"value\":333.98}'\n```\n#### GET\nMaking a request to check if what we changed or created new is in the database.\n\n```bash\n$ curl -i -XGET -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/brz/ngdp_r/2002\n{\"Country\":\"BRZ\",\"Indicator\":\"NGDP_R\",\"Value\":333.98,\"Year\":2002}\n```\n#### DELETE\nThis endpoint will remove the data from our memory database.\n\n```bash\n$ curl -i -XDELETE -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/brz/ngdp_r/2002 \n```\n\n#### GET\nThis endpoint will return the size of our database in memory.\n\n```bash\n$ curl -i -XGET -H \"Content-Type:application/json\" \\\nlocalhost:8080/api/v1/growth/size\n{\"size\":42450}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffotoni%2Fgrowth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffotoni%2Fgrowth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffotoni%2Fgrowth/lists"}