{"id":13527568,"url":"https://github.com/brpapa/recursion-tree-visualizer","last_synced_at":"2025-04-01T09:31:42.288Z","repository":{"id":37714858,"uuid":"290371241","full_name":"brpapa/recursion-tree-visualizer","owner":"brpapa","description":"🌳  Input the source code of any recursive function in javascript, python or golang and visualize its recursion tree","archived":false,"fork":false,"pushed_at":"2025-01-30T22:57:57.000Z","size":2457,"stargazers_count":480,"open_issues_count":7,"forks_count":65,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-30T23:27:56.568Z","etag":null,"topics":["algorithms","aws-lambda","lambda","recursion","recursion-tree","recursion-visualizer","serverless","visualization"],"latest_commit_sha":null,"homepage":"https://recursion.vercel.app","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/brpapa.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":"2020-08-26T02:10:22.000Z","updated_at":"2025-01-23T15:47:45.000Z","dependencies_parsed_at":"2024-01-13T22:53:42.875Z","dependency_job_id":"9dc9b8ff-9287-4b32-b121-2aaf4ee4b2f9","html_url":"https://github.com/brpapa/recursion-tree-visualizer","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/brpapa%2Frecursion-tree-visualizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brpapa%2Frecursion-tree-visualizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brpapa%2Frecursion-tree-visualizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brpapa%2Frecursion-tree-visualizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brpapa","download_url":"https://codeload.github.com/brpapa/recursion-tree-visualizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246616196,"owners_count":20806079,"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":["algorithms","aws-lambda","lambda","recursion","recursion-tree","recursion-visualizer","serverless","visualization"],"created_at":"2024-08-01T06:01:52.223Z","updated_at":"2025-04-01T09:31:42.278Z","avatar_url":"https://github.com/brpapa.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo.svg\" height=\"100\"/\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003eRecursion Tree Visualizer\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e🥇 Winner project of the \u003ca href=\"https://www.algoexpert.io/swe-project-contests/2020-summer\"\u003eAlgoExpert SWE Project Contest\u003c/a\u003e 🥇\u003c/p\u003e\n\n## Overview\n\nStop drawing recursion trees by hand. Watch the [demo video](https://youtu.be/1f-KeeN8AHs) or check out the [live project](https://recursion.now.sh).\n\n### Folders structure\n\n- `web`: react user interface.\n- `lambda`: serverless lambda function to execute user-defined code remotely.\n\n## Local development\n\n### Web\n\nIn the `web` directory, run:\n\n```bash\n# to install all dependencies\n$ npm install\n\n# to run the app on http://localhost:3003\n$ npm run start\n```\n\n### Lambda\n\nYou can use the Amazon Runtime Interface Emulator (RIE), already contained in the docker image, to test the Lambda function.\n\nIn the `lambda` directory, run:\n\n```bash\n# build your local image\n$ docker build --tag rtv .\n\n# create and run a container using AWS RIE as executable to emulate a server for your lambda function\n$ docker run --rm -p 8080:8080 rtv\n\n# make a http request to your function, passing event with the -d in body field (escaped json), see examples in requests.http file\n$ curl -XPOST \"http://localhost:8080/2015-03-31/functions/function/invocations\" -d '{\"body\":\"{}\"}'\n```\n\n## Deploy to production\n\n### Lambda\n\nIn `terraform` folder:\n\n- create terraform.tfvars file\n- run `terraform init`\n- run `terraform validate`\n- run `terraform plan`\n- run `terraform apply`\n\n### Web\n\nShips `web` on Vercel, setup environment variables.\n\n## Acknowledgements\n\nThanks to [Drawing Presentable Trees](https://llimllib.github.io/pymag-trees/#foot5) and [Improving Walker's Algorithm to Run in Linear Time](http://dirk.jivas.de/papers/buchheim02improving.pdf) articles I implemented Reingold-Tilford's algorithm to position each node of the tree on a 2D plane in an aesthetically pleasing way.\n\n## Compatibility\n\nFor a better experience, I recommend using a chromium-based browser like Chrome or Edge.\n\n## Contact me\n\n- [Twitter](https://twitter.com/brnpapa)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrpapa%2Frecursion-tree-visualizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrpapa%2Frecursion-tree-visualizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrpapa%2Frecursion-tree-visualizer/lists"}