Coder Social home page Coder Social logo

okayshankha / tracetrail Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 8.53 MB

Simple request logger for Express or Express Like apps. Effortlessly record and identify input/output payloads.

License: GNU Affero General Public License v3.0

TypeScript 7.02% HTML 0.09% CSS 92.89% Shell 0.01%
debugging nodejs request-response rest-api typescript request-logger request-logging

tracetrail's Introduction

Tracetrail

Introducing "Tracetrail" - the npm package that streamlines the API debugging process. This package enables you to record the input and output payloads transferred to and from your client or server with ease.

Tracetrail makes it simple to find out what payload was transmitted by the client or received as a response from the server. This package is particularly created to assist you in more effectively debugging your APIs, making it a crucial tool for developers.

Payload Recorder is ideal for anybody working on a large-scale application or a basic project. It makes debugging easier, allowing you to rapidly detect and handle any problems that may develop. You can quickly navigate through the recorded payloads and receive insights into the performance of your API thanks to its user-friendly interface.

Installation

npm install tracetrail

Usage

For regular javascript code

const { TraceTrail } = require('tracetrail')

For CJS / Module Imports

import { TraceTrail } from 'tracetrail' 
import { TraceTrail } from 'tracetrail' 
import express from 'express'

const port = 4444
const app = express()

// You can use a separate database to keep things neat and clean.
const traceTrail = new TraceTrail('mongodb://localhost:27017/TraceTrail', {
  AUTO_CLEAN_RECORDS_OLDER_THAN: 10,          // Optional [Default: 60]
  AUTO_CLEAN_RECORDS_OLDER_THAN_UNIT: 'days'  // Optional [Default: days]
})

// You need to use traceTrail.MiddleWare to make this package work.
app.use(traceTrail.MiddleWare)

app.listen(port, () => {
    console.log(`App listening on port ${port}`)
})

UI

To get the inbuilt UI you can easily code it like this.

image

import { TraceTrail } from 'tracetrail'
import express from 'express'

const port = 4444
const app = express()

// You can use a separate database to keep things neat and clean.
const traceTrail = new TraceTrail('mongodb://localhost:27017/TraceTrail', {
  AUTO_CLEAN_RECORDS_OLDER_THAN: 10,          // Optional [Default: 60]
  AUTO_CLEAN_RECORDS_OLDER_THAN_UNIT: 'days'  // Optional [Default: days]
})

// Get the UI
app.use(
  '/tracetrail',
  traceTrail.UI({
    LOGIN_PASSWORD: '1234',                      // Optional [Default: 1234]
    // SALT_ROUNDS: 10,                          // Optional [Default: 12]
    // SECRET_KEY: Config.SECRET_KEY as string,  // Optional [Default: Auto]
    // JWT_EXPIRY_SECS: 60 * 60 * 24,            // Optional [Default: 1 day]
  }),
)

// You need to use traceTrail.MiddleWare to make this package work.
app.use(traceTrail.MiddleWare)

app.listen(port, () => {
    console.log(`App listening on port ${port}`)
})

Developers Guide

If you want to set up the project in your local follow these steps:

  • Terminal #1
    • Clone the repository

    • Run following command npm i

    • Create .env file and add the following bare minimum environment variables

      DB_URL=mongodb:/localhost:27017/TraceTrail
      PORT=7777
      TRACETRAIL_ENV=DEV
    • Now run npm run dev

    • Go to the examples folder and pick any file of your choice JavaScript one or TypeScript one.

    • Make sure to update the MongoDB url.


That's it, you are all set. Now you can open your browser and open http://localhost:7777/tracetrail it will open TraceTrail UI.

If you haven't changed any ports, then the following would be true.

  • Backend Server: http://localhost:7777
  • React Front End: http://localhost:7778

tracetrail's People

Contributors

okayshankha avatar preetamsing avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

preetamsing

tracetrail's Issues

Login page for access authorization

  • I'm thinking about implementing this feature.
    And the best approach I can think of is user provides password to access this page. That password (not password hash) is set in configuration while middleware initializaiton, picked up from environment variable desirably.
    @okayshankha Do you have a better approach on your mind?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.