Yaade is an open-source, self-hosted, collaborative API development environment.

Overview

yaade-icon

Yaade - Yet Another API Development Environment

Yaade is an open-source, self-hosted, collaborative API development environment.

dark-mode-screenshot

🤔 Why did you develop Yaade?

I was looking for a web-based Postman alternative so that API collections can easily be shared between teammates. Even though popular solutions like Hoppscotch exist, their self-hosted app does not come with authentication and relies on Firebase for persistency. Yaade is developed from the ground up with self-hosting and security in mind. That means sensitive information in API requests can safely be stored on your own server!

🌟 Features

  1. Self-hosted: data never leaves your own server.
  2. Secured: if you don't know the password, you can't get in
  3. Persistent: even across container or server restarts
  4. Easy single-file data import / export
  5. Requests are executed on your machine so you can call localhost as well as remote servers
  6. Most importantly: dark mode default

Install

To have the best experience with Yaade run the docker container on your server and install the browser extension on your local machine.

1. 🐋 Docker

$ docker volume create yaade
$ docker run -d --restart=always -p 9339:9339 -e YAADE_ADMIN_USERNAME=admin -v yaade:/app/data --name yaade esperotech/yaade:latest

The default password is password. After login go to ⚙️ > Account and change the password.

2. 🔧 Extension

Yaade uses a browser extension as a proxy to enable CORS requests. Install the extension using your browsers extension store. Currently only a chrome extension is available. You can find it here. Then open it and input your server URL, eg. https://yaade.example.com/. From that point all requests originating from your Yaade browser tabs will be proxied through the extension.

💾 Technology

  1. SPA built with TypeScript, React and Vite.
  2. Backend built with Kotlin.
  3. H2 file-based database.
  4. Browser extension with plain JavaScript.

🖥️ Local development

  1. Install the required dependencies
    • Java 11
    • Kotlin
    • Node >= 16
  2. Clone the repository
  3. Install the project specific dependencies
$ cd scripts/
$ chmod +x install.sh
$ ./install.sh
  1. Start the server on port 9339 using your IDE of choice (I use IntelliJ IDEA)
    • you can also run it by using the jar file directly $ java -jar server/build/libs/yaade-server-1.0-SNAPSHOT
    • note that you must set the environment variable YAADE_ADMIN_USERNAME to run
  2. Start the vite dev server on port 9338
$ cd client/
$ npm run dev
  1. Start the dev-proxy on port 9337
$ cd dev-proxy/
$ node index.js
  1. Now open your browser and visit http://localhost:9337

🔨 Build

$ cd scripts/
$ chmod +x build.sh
$ ./build.sh

Screenshots

🌙 Dark mode

dark-mode-screenshot

☀️ Light mode

light-mode-screenshot

🤝 How can I contribute?

Your contribution is very welcome! First open an issue about the topic you want to contribute on, eg. adding a new feature, bugfixing or refactoring. We will then discuss further details. Eventually, I will review your Pull Request and merge / release it.

Comments
  • Does it feature multi users or OAuth2?

    Does it feature multi users or OAuth2?

    Hi 👋

    I would like to find out if yaade supports mutiple users, and/or does it have single sign on capabilities?

    I would like to install it in our company network and share requests/responses for different users and customer projects!

    Thank you for you work!

    Greetings Niklas

    opened by nhh 7
  • Generate sample request from openapi.yaml

    Generate sample request from openapi.yaml

    The OpenApi/Swagger UI generates an example request from the example data defined in the openapi.yaml. It would be awesome if Yaade would do the same.

    opened by n14s 2
  • Error when creating collections

    Error when creating collections

    1. create collection with openapi file
    2. create basic collection

    result: the openapi collection is duplicated

    looking at the code it seems that the state property is not reset.

    opened by rzorzorzo 1
  • Feature Request: Add timestamp to sent request info

    Feature Request: Add timestamp to sent request info

    It would be great to have a timestamp next to the info of a sent request (next to Status, Time, Size). This would help to better identify if a request has been sent and to later recall when it has been sent.

    opened by n14s 1
  • Request not saving XML

    Request not saving XML

    I just deployed a new docker, added a collection and a request. I click save and it remembers the URL but all of the body of the request is lost any time I switch to a different request and go back to the request I clicked save on.

    opened by numbers1thru9 1
  • Failed to connect to extension

    Failed to connect to extension

    Unable to send requests even after installing the chrome extension and adding my yaade URL (eg, https://xx.xxxxx.xxx). Unable to add a trailing "/" since the extension strips it out. Should this work with Edge (and chrome extension)?

    Receive this error: Failed to connect to extension The extension could not be connected. Please install the extension and copy the URL of this window into the host field of the extension. Then click retry.

    opened by soundneedle 1
  • Feature Request: OpenApi import: support $ref remote reference

    Feature Request: OpenApi import: support $ref remote reference

    example: https://gitlab.ow2.org/bonita/bonita-openapi/-/tree/master currently there is no way of importing this openapi spec into yajsw.

    import of the entry point openapi/openapi.yaml causes the following error:

    java.lang.RuntimeException: Unable to load RELATIVE ref: ./paths/loginservice.yaml path: /tmp

    Suggestion: allow import of a .zip file with input of relative path to the entry point file.

    This also raises the general question of support for http uris. I think that supporting http uris could lead to security issues or require authentication.

    reference: https://swagger.io/docs/specification/using-ref/

    opened by rzorzorzo 1
  • Allow reuploading openapi.yaml to an existing collection

    Allow reuploading openapi.yaml to an existing collection

    In case of changes in the openapi.yaml, I need to delete the collection and create a new one with the new openapi.yaml. The Edit Panel of the Collection only allows for renaming the Collection. Let's add a feature to re-upload the openapi.yaml for an existing collection from the edit panel.

    opened by n14s 2
  • Some Suggestions

    Some Suggestions

    Hi team, thanks for this project. I have been looking for awhile on something like this and glad I stumbled on this project.

    Would be great tool to use if we can include:

    1. documentation for each requests, possibly markdown friendly
    2. mock server facility so we can mock and add sample requests

    With the above, it can be used as self-hosted stoplight.io

    opened by beeing 2
Owner
null
MongoDB object modeling designed to work in an asynchronous environment.

Mongoose Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Mongoose supports both promises and callbacks. Do

Automattic 25.2k Dec 30, 2022
An open source cybersecurity protocol for syncing decentralized graph data.

GUN is an ecosystem of tools that let you build community run and encrypted applications. Currently, Internet Archive and HackerNoon run GUN in produc

Mark Nadal 16.7k Dec 27, 2022
Open source code of classic.minecraft.net

Minecraft classic Open source This Project is a clone for classic.minecraft.net. Owner of this Repo (CodeWhiteWeb) doesn't have any rights to this pro

CodeWhiteWeb 4 Dec 16, 2022
StashQL is a light-weight, open-source npm package that improves the speed of your GraphQL queries in your application.

Table of Contents What is StashQL? Install Getting Started Queries Mutations refillCache clearRelatedFields Logging The Team What is StashQL? StashQL

OSLabs Beta 67 Sep 30, 2022
Cli created by shoulders to facilitate the development of Nest.js applications that use our seed!

Nest CLZ Your CLI by Shoulders to create a backend started with nest-seed Installation We will launch the application soon! Using npm: npm i -g nest-c

Shoulders 2 Mar 22, 2022
The Blog system developed by nest.js based on node.js and the database orm used typeorm, the development language used TypeScript

考拉的 Nest 实战学习系列 readme 中有很多要说的,今天刚开源还没来及更新,晚些慢慢写,其实本人最近半年多没怎么写后端代码,主要在做低代码和中台么内容,操作的也不是原生数据库而是元数据Meta,文中的原生数据库操作也当作复习下,数据库的操作为了同时适合前端和Node开发小伙伴,所以并不是很

程序员成长指北 148 Dec 22, 2022
🌐 API and CLIENT API for FiveM to externalize database responsibilities.

?? Query API API and CLIENT API for FiveM to externalize database responsibilities. FAQ Is the project finished? Definitely NOT, this is a first versi

Thiago Neubern 2 Jul 5, 2022
An open letter against Apple's new privacy-invasive client-side content scanning.

Apple Privacy Letter An open letter against Apple's new privacy-invasive client-side content scanning technology. View the letter Sign the letter This

Nadim Kobeissi 655 Dec 19, 2022
If you are a Slack browser user, this userscript will allow you to auto-redirect without Slack asking if you want to open on the desktop app.

Auto-redirect for browser Slack users If you are a Slack browser user, this userscript will allow you to auto-redirect without Slack asking if you wan

Felipe Santos (he/him) 6 Aug 23, 2022
Execute one command (or mount one Node.js middleware) and get an instant high-performance GraphQL API for your PostgreSQL database!

PostGraphile Instant lightning-fast GraphQL API backed primarily by your PostgreSQL database. Highly customisable and extensible thanks to incredibly

Graphile 11.7k Jan 4, 2023
Burger builder project using React, Hooks and Context API.

Burger Builder In this project, I made a context-api project by creating hamburgers with 3 different materials. Project setup npm install Project star

Efecan Pınar 4 Jun 17, 2021
A simple url shorter API built with nodejs running on Kubernetes in Google Cloud, using PostgreSQL for storage and cloud sql proxy.

Simple URL Shorter - Google Cloud - Kubernetes A simple url shorter API built with nodejs running on Kubernetes in Google Cloud, using PostgreSQL for

null 3 Nov 25, 2021
Unofficial API Documentation for the Axie Infinity's GraphQL Endpoint.

Axie GraphQL Documentation API Documentation for the Axie Infinity GraphQL Endpoint. Customization Guide This site is usings rocketseat. You may refer

Shane Maglangit 101 Nov 24, 2022
This API can be use to all developers to get location details of Sri Lanka 🇱🇰 including major cities, sub areas, districts and Provinces. ⛳️

Location Data API - Sri Lanka Table of Contents Introduction Technologies Implemantations Hosting Use Cases Getting Started Project Setup Contributing

Pasindu Senarathne 35 Jun 29, 2022
This is a repository that contains an simple NestJS API about Movies developed at Blue EdTech.

NestJS Movies Technologies and requirements NestJS JavaScript TypeScript Prisma MySQL Project This is a repository that contains an simple NestJS API

Isabella Nunes 2 Sep 28, 2021
GraphQL API Playground with cascade-like operations

modif ( ?? ?? ?? ) modif is a small GraphQL API with transform capabilities. It takes a string input and outputs a string. Always. TL;DR Go play with

Pedro Palhari 6 Jan 4, 2022
Starter template for NestJS 😻 includes GraphQL with Prisma Client, Passport-JWT authentication, Swagger Api and Docker

Instructions Starter template for ?? NestJS and Prisma. Checkout NestJS Prisma Schematics to automatically add Prisma support to your Nest application

notiz.dev 1.6k Jan 4, 2023
around nestjs, with prisma and some graphql lib,write less code,create power api

介绍 这是一个 prisma + nestjs + graphql 的集成示例 对于开发者来说,特别是使用 graphql 的时候,只需要写非常少量的代码即可完成数据的各种操作,同时也支持接口透传。 开发&部署 本地开发 npm run start:dev swagger 地址:http://loc

芋头 26 Nov 24, 2022
DolphinDB JavaScript API is a JavaScript library that encapsulates the ability to operate the DolphinDB database, such as: connecting to the database, executing scripts, calling functions, uploading variables, etc.

DolphinDB JavaScript API English | 中文 Overview DolphinDB JavaScript API is a JavaScript library that encapsulates the ability to operate the DolphinDB

DolphinDB 6 Dec 12, 2022