Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brpapa/recursion-tree-visualizer
🌳 Input the source code of any recursive function in javascript, python or golang and visualize its recursion tree
https://github.com/brpapa/recursion-tree-visualizer
algorithms aws-lambda lambda recursion recursion-tree recursion-visualizer serverless visualization
Last synced: 9 days ago
JSON representation
🌳 Input the source code of any recursive function in javascript, python or golang and visualize its recursion tree
- Host: GitHub
- URL: https://github.com/brpapa/recursion-tree-visualizer
- Owner: brpapa
- License: mit
- Created: 2020-08-26T02:10:22.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-04-26T03:17:56.000Z (over 1 year ago)
- Last Synced: 2024-08-02T06:24:35.921Z (3 months ago)
- Topics: algorithms, aws-lambda, lambda, recursion, recursion-tree, recursion-visualizer, serverless, visualization
- Language: TypeScript
- Homepage: https://recursion.vercel.app
- Size: 1.8 MB
- Stars: 459
- Watchers: 7
- Forks: 64
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Recursion Tree Visualizer
🥇 Winner project of the AlgoExpert SWE Project Contest 🥇
## Overview
Stop drawing recursion trees by hand. Watch the [demo video](https://youtu.be/1f-KeeN8AHs) or check out the [live project](https://recursion.now.sh).
### Folders structure
- `packages/web`: react user interface.
- `packages/lambda`: serverless lambda function to execute user-defined code remotely.## Local development
### Web
In the `packages/web` directory, run:
```bash
# to install all dependencies
$ npm install# to run the app on http://localhost:3003
$ npm run start
```### Lambda
You can use the Amazon Runtime Interface Emulator (RIE), already contained in the docker image, to test the Lambda function.
In the `packages/lambda` directory, run:
```bash
# build your local image
$ docker build --tag rtv .# create and run a container using AWS RIE as executable to emulate a server for your lambda function
$ docker run --rm -p 8080:8080 rtv# make a http request to your function, passing event with the -d in body field (escaped json), see examples in requests.http file
$ curl -XPOST "http://localhost:8080/2015-03-31/functions/function/invocations" -d '{"body":"{}"}'
```## Deploy to production
### Web
Set your API Gateway endpoint in `packages/web/src/config/api.ts`.
Ships `packages/web` on Vercel.
### Lambda
The deployment of the Lambda function is automatized by the workflow `cd-lambda-function`. You will need to complete the following set-up steps to use it:
1. Create the following **AWS resources**:
- Lambda function defined as a container image
- API Gateway to trigger the lambda function with CORS support
- ECR repository to store your Docker images
- IAM user with the proper permissions
2. Store the IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.
3. Change the workflow file `github/workflows/cd-lambda-function.yml`:
- Replace the value of the `AWS_REGION` env with the region of all your AWS resources.
- Replace the value of the `AWS_ECR_REPOSITORY_NAME` env with your repository's name.
- Replace the value of the `AWS_LAMBDA_FUNCTION_NAME` env with your function's name.
## Acknowledgements
Thanks 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.
## Compatibility
For a better experience, I recommend using a chromium-based browser like Chrome or Edge.
## Contact me
- [Twitter](https://twitter.com/brnpapa)