All Projects → Bogdan-Lyashenko → Codecrumbs

Bogdan-Lyashenko / Codecrumbs

Licence: bsd-3-clause
Learn, design or document codebase by putting breadcrumbs in source code. Live updates, multi-language support and more.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects
Less
1899 projects
SCSS
7915 projects
PHP
23972 projects - #3 most used programming language
C#
18002 projects

Projects that are alternatives of or similar to Codecrumbs

Abstractionlayers
Abstraction Layers
Stars: ✭ 16 (-99.38%)
Mutual labels:  learning, code
Code Dot Org
The code powering code.org and studio.code.org
Stars: ✭ 631 (-75.55%)
Mutual labels:  learning, code
Thimble.mozilla.org
UPDATE: This project is no longer maintained. Please check out Glitch.com instead.
Stars: ✭ 1,414 (-45.22%)
Mutual labels:  learning, code
Code2vec
TensorFlow code for the neural network presented in the paper: "code2vec: Learning Distributed Representations of Code"
Stars: ✭ 746 (-71.1%)
Mutual labels:  learning, code
Pinecoders.github.io
PineCoders Web Site
Stars: ✭ 30 (-98.84%)
Mutual labels:  learning, code
Learningprocess
💥 本仓库用于记录我的学习历程和学习笔记
Stars: ✭ 31 (-98.8%)
Mutual labels:  learning, code
Letters
Письма к студентам курса
Stars: ✭ 107 (-95.85%)
Mutual labels:  learning, code
42 cheatsheet
Also referred to as "The C Man"
Stars: ✭ 204 (-92.1%)
Mutual labels:  learning
Learn Rust
https://getrust.tech
Stars: ✭ 211 (-91.82%)
Mutual labels:  learning
Building Products With Js
Materials and code for free course on building products with javascript
Stars: ✭ 206 (-92.02%)
Mutual labels:  learning
Javascript
GitBook teaching programming basics with Javascript
Stars: ✭ 2,525 (-2.17%)
Mutual labels:  learning
Dart
DART is a test documentation tool created by the Lockheed Martin Red Team to document and report on penetration tests, especially in isolated network environments.
Stars: ✭ 207 (-91.98%)
Mutual labels:  documentation-tool
Omnianomaly
KDD 2019: Robust Anomaly Detection for Multivariate Time Series through Stochastic Recurrent Neural Network
Stars: ✭ 208 (-91.94%)
Mutual labels:  code
Scala Exercises
The easy way to learn Scala.
Stars: ✭ 2,431 (-5.81%)
Mutual labels:  learning
Cave miner
Search for code cave in all binaries
Stars: ✭ 218 (-91.55%)
Mutual labels:  code
Redoc
📘 OpenAPI/Swagger-generated API Reference Documentation
Stars: ✭ 15,935 (+517.4%)
Mutual labels:  documentation-tool
Machine Learning For Learning Resources
This ebook from Jason Brownlee. Educational perpose only! Thanks to Jason for the books.
Stars: ✭ 221 (-91.44%)
Mutual labels:  learning
Awesome Learning
Awesome Learning - Learn JavaScript and Front-End Fundamentals at your own pace
Stars: ✭ 216 (-91.63%)
Mutual labels:  learning
Movies2anki
Convert movies with subtitles to watch them with Anki. Inspired by subs2srs
Stars: ✭ 211 (-91.82%)
Mutual labels:  learning
Opensourceresources
Free opensource Learning Resources related to Web-Development A to Z 🔥❤
Stars: ✭ 210 (-91.86%)
Mutual labels:  learning

npm version Open Source Love

What · Demo · Get started · Features · Case studies · Support

Have you ever got lost in a big or unknown codebase? This tool will help you to solve that. Also, it will increase your development speed and give more knowledge about your application architecture.

If you like this project, follow me on Twitter @bliashenko to hear about things I am building.

Codecrumbs v2

Check out new version of this project as standalone application. Just in a few clicks you can start exploring a codebase in more efficient way, create interactive visual guides and share them with others on your own blog! See quick guide here.

Demo

Check out prepared example for standalone version running here.

Codecrumbs v1

How it works? You run codecrumbs command for a codebase, it analyzes source code and builds its visual representation. Write down a codecrumb-comment and codebase state will be reflected by visual client in browser on the fly.

Check out my talk at React-Finland for more details.

Get started

Install and run

Pre-condition: update/install NodeJS version to be >= 8.11.1

  1. Install codecrumbs globally (yarn global add codecrumbs)
  2. Run codecrumbs -d project-src-dir -e project-src-dir/index.js. Change parameters to match your project:-d is directory with source code, -e is entry point file .
  3. Go to http://localhost:2018 in the browser to check it out.

Configuration

Run codecrumbs with CLI params or specify static config file codecrumbs.config.js (see example here)

CLI Config file Description Example
d projectDir Relative path to project source code directory -d src
e entryPoint Relative path to project source entry point file (must be inside dir) -e src/app.js
x excludeDir Relative path(or paths separated by ,) to directories for exclusion -x src/doc,src/thirdparty
p clientPort Port for Codecrumbs client (optional, default 2018) -p 2019
n projectNameAlias Project name alias (optional, default same as -d value) -n my-hello-world
C - Path to codecrumbs.config.js (optional, by default will try to find the file in PWD) -C config/codecrumbs.config.js
D debugModeEnabled Enable debug mode for logs (optional, default is false) -D

Features

Breadcrumbs and trails

UI explained:

  • enable "Codecrumbs" switch to have codecrumbs tree on the scheme (drop-down contains extra configuration)
  • choose "current" codecrumbs trail to display (can be either trail or all other "simple" codecrumbs)
  • select connection between two steps (code for two codecrumbs will be opened in "Sidebar" under "Crumbs" tab)
  • set other options in dropdowns to configure behaviour of the diagram (show code blocks, details, etc.)

How to get there?

Leave breadcrumb in code by writing down a comment: //cc:[parameters;].

cc (stands for "CodeCrumb") is a prefix which used by the parser; check example of parameters in the table below:

Example Description Use case
//cc:remember place simple breadcrumb, remember place is a title of our first breadcrumb Mark an important place to not forget where it was
//cc:here is bug;well, seems like a bug in logic simple breadcrumb, well, seems like a bug in logic is details for breadcrumb, separated by ; Add extra information, will be rendered in popups
//cc:signin#3;enable route trail of breadcrumbs,signin is the trail ID, #3 is order number of step, enable route is a title describing the step. A sequence of codecrumbs, use to describe some data flow (e.g. user login, or form submit, etc.).
//cc:signin#1;firebase sign in;+2;do call to firebase with credentials trail of breadcrumbs,+2 is number of lines to highlight, separated by ; Use number of lines to highlight the code related to breadcrumb

Note: current version supports single line comments only.

Hint: you can use trail id without step number (e.g. //cc:groupname#;test) just to group breadcrumbs, you always can add step numbers later when you know the correct order.

Multi-codebase integration

You might be interested to study connections between several codebases (sub-modules), codecrumbs supports that. Simply start codecrumbs multiple times (once for each codebase), it all will be synced in one picture inside the browser tab. To control a diagram UI - select it by clicking on it.

E.g. for client-server application, go to the source directory for your server code and run codecrumbs -e your-server-src/index.py -d your-server-src, same for client codecrumbs -e src-client/index.js -d src-client.

Note: codebases can be located wherever you want (no need to have them like mono-repo, etc.), simply run codecrumbs for directory you need.

Multi-language support

Current version supports next programming languages:

  • C#
  • C++
  • Fortran
  • Go
  • Haskell
  • Java
  • JavaScript
  • Kotlin
  • PHP
  • Python
  • Ruby
  • TypeScript

Please file an issue to support other language you would like to have.

Dependencies

Note: In current version only [JavaScript, TypeScript] offer this feature

UI explained:

  • enable "Dependencies" switch
  • select connection between modules (all involved files will be opened in "Sidebar", so you can see “what is imported” and “its implementation”)

Flowchart

Note: In current version only JavaScript offers this feature

js2flowchart is used in the sidebar to draw flowchart for the selected file code.

Support

Any support is very much appreciated! 👍 😘 ❤️ If you like this project, please, put a and tweet about it. Thanks!

Please, consider making financial donation, it will help further development of more cool features! We'll thank you by including your name/company logo here ☺️. Feel free to ping me for discussion.

Sponsors

Development supported by 0+X

Backers

Contribute

When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owner of this repository before making a change. Ideas and suggestions are welcome. To start development environment, clone the repo & run:

yarn && yarn start

WIP

Next features are developing:

  • VS Code extension - some neat features right inside the code editor. Checkout the repo here.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].