Need help with recursion-tree-visualizer?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

brpapa
257 Stars 36 Forks MIT License 93 Commits 5 Opened issues

Description

🌳 Input the source code of any recursive function in javascript or python and visualize your recursion tree

Services available

!
?

Need anything else?

Contributors list

No Data

Recursion Tree Visualizer

🥇 Winner project of the AlgoExpert SWE Project Contest 🥇

Overview

Stop drawing recursion trees by hand. Watch the demo video or check out the live project.

Folders structure

  • packages/web
    : react user interface.
  • packages/lambda
    : serverless lambda function to execute user-defined code remotely. <!-- -
    packages/common
    : shared code between web and lambda -->

Local development

Web

In the

packages/web
directory, run:
# to install all dependencies
$ npm install

to run the app on http://localhost:3000

$ 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:
# build your local image
$ docker build --tag dev-image .

create and run a container using AWS RIE as executable to emulate a server for your lambda function

$ docker run --rm -p 8080:8080 dev-image

make a http request to your function, passing event with the -d in body field (escaped json)

$ 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

  1. Store an IAM user access key in GitHub Actions secrets named

    AWS_ACCESS_KEY_ID
    and
    AWS_SECRET_ACCESS_KEY
    .
  2. 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 and Improving Walker's Algorithm to Run in Linear Time 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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.