Data-driven development, simplified.

Overview

Table of Contents

0. BRIEF

Contractual is a tool designed to complement team-based development for web applications that utilize JS and Node.js.

Contractual's design philosophy is centered around what we call "Contract driven development".

Contract refers to the data contract between client and server. Contractual allows development teams to define their applications data contract using a simple user interface.

Additionally, frontend/backend development teams will be able to test their applications confidently in a decoupled manner.

1. FEATURES

  • Define project data contracts within the app and share it using a 4-digit token
  • Test and validate request/response architecture with detailed contract breach analysis
  • Develop new features client-side or server-side independently of one-another while adhering to contract specifications with mock results
  • Generate clear contract documentation for distribution with a single click

2. INSTALLATION

- 2.1 DOWNLOAD INSTALLER

Contractual Desktop can be downloaded from our website. Available for Mac OS, Windows, and Linux.

OR

- 2.2 FORK AND CLONE REPO

Developers who want to dive deeper into the code can fork this repo.

Contributions are not only welcome but highly recommended, we believe that every open source contribution makes the entire community much better.

We put our database URI in the .env file for your testing convenience. Do NOT put any sensitive information in your account!

If you would like the app and would use it, you should replace with your own database URI.

elephantSQL directions:

This application requires a postgreSQL database to function.Please create your postgreSQL database instane (we recommend elephantSQL as a free option).

After creating your postgreSQL instance, refer to the build.sql file in the root of the app directory. This file will contain the proper query strings to build your own contractual database. Please run these commands in your postgreSQL database.

In order to connect the application to your database instance, go to the .env in the root directory, and paste your query connection string into the DB_KEY variable.

3. HOW TO USE

3.1 CONTRACT BUILDER

The Contract tab is where the project lead will define or edit the data contract for their application.

Users will select the desired request method option from a dropdown list and input the proper endpoint for their request to be sent to.

Next, the user should add the key names and the expected datatypes of those keys for the request/response objects.

Once the desired input fields are completed, the user can store this endpoint in their data contract by pressing save.

Demo_1: add an endpoint

Alternatively, the user may select from the endpoint drop down list to view any endpoints that have been previously defined.

These endpoints can be edited or deleted using the same method described above.

A notable feature built into this application is the 4-digit identifier token generated uniquely for each created contract.

Demo_2: find the token

As mentioned, this token is generated when a new contract is created.

Members can join, view, and test with previously built data contracts by clicking “Join Contract” in the application settings and inputting a valid token along with the associated contract’s name. A correct contract name and token must be provided at the same time.

Currently, contract edit access is only provided to the user who created the data contract.

Demo_3: import a contract with token

Once a single data contract endpoint has been created or imported, the user is ready and able to begin testing their fullstack application or export the contract for distribution.

3.2 FRONT TESTER

The Frontend tab is used for testing a frontend application’s http request functionality without requiring the addition of any server-side code.

In order for the frontend developer to test with contractual. The will need to sent their requests to our testing server at PORT 1234.

Upon sending requests from a frontend application, Contractual will display a log of these requests and whether or not the data contract was breached.

If the request successfully adheres to the data contract, the user will also receive a mock response corresponding to the response defined in the contract builder for that endpoint.

This tool allows frontend developers to test with confidence and receive clear, immediate feedback.

Demo_4: a successful request

Demo_5: a failed request with error analysis

Demo_6: a mock response based on the pre-defined data contract

3.3 BACK TESTER

The Backend tab is used to test an application’s server-side request handling while being completely decoupled from any sort of front end.

Those familiar with Postman will feel right at home with this tool.

However, Contractual allows you to select from a list of endpoints defined in the data contract with easy to use input fields for the data values.

Upon sending a request, the back tester will render the response from the application and whether or not the data contract was followed, or if the request failed.

Demo_7: a successful response

Demo_8: a failed response with error analysis

3.4 DOCUMENT CREATOR

The document creator is used to view the data contract of the currently active contract in a simplified layout. You are able to export a pdf image of this page for quick and easy distribution to your team using the export button.

Demo_9: save the contract to local


4. ITERATION OPPORTUNITIES

  • Create Web application version of contractual
  • Add ability to select params for "GET" requests
  • Object support for backend mock response
  • Add raw test input field for complex request/response body structure
  • Add a usage description section for each endpoint in Document Creator page
  • Add additional export options to document creator page

5. CONTRIBUTORS

Ernest Leung @ernestLeung52

George Jeng @gdelaselva

Joseph Amos @joeamos

Yankun Song @yankun-song

Comments
Owner
OSLabs Beta
OSLabs Beta
awsrun 189 Jan 3, 2023
🚦Códigos do livro: Learning test-driven development

TDD Project ?? Códigos do livro: Learning test-driven development Pré-requisitos Será necessário a instalação do Go, Node.js, e do Python 3 para execu

Cássio Botaro 2 Apr 19, 2022
Simplified JavaScript Jargon

Simplified JavaScript Jargon (short SJSJ) is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem i

Kitty Giraudel 2.3k Dec 30, 2022
An unofficial, simplified version of the @Shopify/koa-shopify-auth middleware library.

simple-koa-shopify-auth https://www.npmjs.com/package/simple-koa-shopify-auth NOTE: This package is not maintained by or affiliated with Shopify. Desc

David 20 Nov 7, 2022
AWS Lambda and API Gateway, simplified for Javascript

alanajs AWS Lambda and API Gateway, simplified for JavaScript About alanajs Make setting up Lambda microservices easier than ever. alanajs is a free,

OSLabs Beta 64 Aug 1, 2022
A simplified list crud that adds, removes and edits items

To-do list This project is as simplified todo list crud. Built With HTML CSS JavaScript Webpack Live version See live version Getting Started To get a

Fernando Saldaña 7 Apr 2, 2022
⚡ It is a simplified database module with multiple functions that you can use simultaneously with sqlite, yaml, firebase and json.

Prisma Database Developed with ?? by Roxza ⚡ An easy, open source database ?? Installation npm i prisma.db --save yarn add prisma.db ?? Importing impo

Roxza 21 Jan 3, 2023
Motionia is a lightweight simplified on demand animation library

The Ultimate & smart JS animation library! Simple fast , flexible & easy to integrate. No need to write page long CSS Keyframes that consumes a lot of

Abhi 324 Dec 30, 2022
🐬 A simplified implementation of TypeScript's type system written in TypeScript's type system

?? HypeScript Introduction This is a simplified implementation of TypeScript's type system that's written in TypeScript's type annotations. This means

Ronen Amiel 1.8k Dec 20, 2022
A simplified jQuery date and time picker

jSunPicker A simplified jQuery date and time picker Why another Date picker? There are numerous date, time pickers out there. However, each of those l

null 1 May 31, 2022
An overly simplified Angular tool for interacting with Smart Contracts, demod at ng-conf 2022.

AngularOperator This is a sample repo and tool created for ng-conf 2022. It contains a normal Angular app designed to interact with the blockchain. It

Stephen Fluin 8 Oct 7, 2022
REST API simplified.

Deepkit REST REST API simplified npm i \ @deepkit-rest/http-extension \ @deepkit-rest/rest-core \ @deepkit-rest/rest-crud Overview DeepKit REST

DeepKit REST 8 Dec 30, 2022
Zemi is data-driven and reverse-routing library for Express. It provides out-of-the-box OpenAPI support, allowing you to specify and autogenerate an OpenAPI spec.

zemi zemi is a data-driven routing library for Express, built with Typescript. Features: optional, out-of-the-box support for OpenAPI reverse-routing

Yoaquim Cintrón 5 Jul 23, 2022
Dynamic-web-development - Dynamic web development used CSS and HTML

Dynamic-web-development ASSISNMENT I just used CSS and HTML to make a mobile int

null 1 Feb 8, 2022
The project integrates workflow engine, report engine and organization authority management background, which can be applied to the development of OA, HR, CRM, PM and other systems. With tlv8 IDE, business system development, testing and deployment can be realized quickly.

介绍 项目集成了工作流引擎、报表引擎和组织机构权限管理后台,可以应用于OA、HR、CRM、PM等系统开发。配合使用tlv8 ide可以快速实现业务系统开发、测试、部署。 后台采用Spring MVC架构简单方便,前端使用流行的layui界面美观大方。 采用组件开发技术,提高系统的灵活性和可扩展性;采

Qian Chen 38 Dec 27, 2022
JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

Aykut Saraç 20.6k Jan 4, 2023
It shows an effective way to correct bus arrival information using data analytics based on Amazon Serverless such as Kiness Data Stream, Kinesis Data Firehose, S3, and Lambda.

Amazon Serverless를 이용한 실시간 버스 정보 수집 및 저장 본 github repository는 버스 정보를 주기적으로 수집하여 분석할 수 있도록, Amazon Serverless인 Amazon Kinesis Data Stream, Kinesis Data

John Park 4 Nov 13, 2022
A table component for your Mantine data-rich applications, supporting asynchronous data loading, column sorting, custom cell data rendering, row context menus, dark theme, and more.

Mantine DataTable A "dark-theme aware" table component for your Mantine UI data-rich applications, featuring asynchronous data loading support, pagina

Ionut-Cristian Florescu 331 Jan 4, 2023
Tool to sign data with a Cardano-Secret-Key // verify data with a Cardano-Public-Key // generate CIP-8 & CIP-36 data

Tool to sign data with a Cardano-Secret-Key // verify data with a Cardano-Public-Key // generate CIP-8 & CIP-36 data

Martin Lang 11 Dec 21, 2022