flamebird icon indicating copy to clipboard operation
flamebird copied to clipboard

🔥 task manager for Procfile-based or npm-based applications. Have console and web (GUI) versions




🔥 flamebird 🔥

the nodejs task manager for Procfile-based or npm-based applications

🚀 Installation

$ npm install -g flamebird

📄 Usage

To start Flamebird you can use fb [command] [options] (or longer alias flamebird [command] [options]).
Application provides two commands: fb start and fb web (read below).

Need help? Use command:

$ fb --help
# or simply
$ fb

💻 Console version (fb start)

$ fb start [options]

Run tasks from Procfile or package.json

Options:

  • -p, --package - using package.json for the managing tasks. (:warning: with this option the command start run all tasks from package.json, for resolving it , please use option -t)
  • -t, --tasks [tasks] - list of tasks which needs to async run in fb start ( example : fb start --tasks start,start:dev,start-server and then tasks are start,start:dev,start-server will have been runned asynchronously )

💻 Web version (fb web)

$ fb web [options]

Launch web-application which is task-manager. That command has more abilities than start. Web-application is reading Procfile and package.json and adding ability to launch scripts inside this files together

Options:

  • -t, --tasks [tasks] - list of tasks which will be managing in the fb web command ( example : fb web --tasks start,start:dev,start-server and this tasks will be showing in the web-application start,start:dev,start-server )
  • -p, --port <PORT> - sets the server port, by default 5050
  • -n, --name <NAME> - sets the project name. Display name of the project in title and header. By default using name of project inside package.json otherwise flamebird

hotkeys

hotkeys works only if hotkeys button is triggered.

hotkey action
Q,W,E...M,<,>,/ Open task which assigned to specific key. example
SHIFT + R Run/Stop selected task.
TAB Switch between Procfile and package.json tabs
DEL Clear logs in selected task
Partially scroll up logs in selected task
Partially scroll down logs in selected task
SHIFT + Fully scroll up logs in selected task
SHIFT + Fully scroll down logs in selected task
SHIFT + A Run all tasks
SHIFT + S Stop all tasks

How it looks:

Contribution

If you want to help this project you need to read this part of readme.md for more detail understanding of for what some things are needed.

First of all take a look at project structure:

  • flamebird project
    • flamebird.js - Executable by nodejs file when call fb start/fb web. Describe information about commands web and start.
    • LICENSE
    • nodemon.json - Nodemon config file. Only needed for debug flamebird.
    • node_modules - you know what is that :D
    • package-lock.json
    • package.json
    • postinstall.js - Script which execute after installing flamebird dependencies
    • Procfile - List of scripts which execute via nodemon. Only needed for debug flamebird.
    • README.md
    • webpack.config.js
    • babel.config.js
    • CHANGELOG.md
    • assets
      • task_button.png
      • hotkeys_button.png
      • web-ui-screen.png
    • client Client application ⚡️
      • controllers - folder with controllers where each one have specific UI manipulations
        • Header.js
      • assets - folder with assets
        • logo.psd - source of the flamebird logo
        • logo.png
        • logo2_small.png
        • logo2.png
        • logo2_transparent.png
      • helpers - folder with helpers where helper contains specific logic. In future it will be removed or moved into modules in scripts folder.
        • dom_utils.js
        • hotKeys.js
        • tabs.js
        • taskList.js
        • WindowAttached.js
      • global.js - global file which implement pattern Facade and combine all interactions of modules from scripts folder.
      • index.html
      • medium-screens.css
      • scripts - Bunch of modules which needed for web application.
        • Api.js - Contains all API endpoints which needed for client. It uses kinka as http web client.
        • Configs.js - Responsible for update configs list
        • HotKeys.js - Hot keys
        • Tabs.js - Module which responsible for update tabs list.
        • TaskList.js - Module which responsible for update tasks list.
        • ThemeSwitcher.js - Module which responsible for theme switching.
        • WebLogger.js - Logger module. Output logs into the logs container
        • WebSocket.js - WebSocket client connection
      • small-screens.css
      • styles
        • dark-theme.css
        • fullscreen.css
        • hot_keys-shortcuts.css
      • styles.css
    • dist - client build folder
    • server Server application ⚡️
      • config.js - module which working with configuration file (.flamebirdrc)
      • constants.js - module which contains constant values. It usings on both sides (client, server)
      • processWorker.js - module which responsible for run/stop tasks
      • server.js - [Web version] module which contains API endpoints.
      • utils - bunch of utilities 😊
        • colors.js - tools which colorize console output
        • commands.js - tools which needed for CRUD commands
        • emitter.js - instance of events.EventEmitter.
        • envs.js - tools which needed for parse environment variables
        • mem_cache.js - just simple object which save all information. Have methods get, set
        • processes.js - tools which needed for create and kill processes
      • ws.js - [Web version] Websocket connection
      • taskfile.js - module which parse all commands from Procfile and package.json

📝 License

Licensed under the MIT License.