Everest/README.md

112 lines
5.8 KiB
Markdown
Raw Normal View History

2018-04-23 11:49:36 +00:00
![everestheader](https://user-images.githubusercontent.com/23148259/39124644-c886b47a-4719-11e8-953c-f079b3edb664.png)
2018-01-30 06:49:00 +00:00
Everest _(formerly RESTaurant)_ is an upcoming REST API testing client written in JavaFX.
2018-01-30 06:49:00 +00:00
![home](https://user-images.githubusercontent.com/23148259/45769743-23e5a380-bc5e-11e8-9e45-5ea50342c19f.PNG)
2018-04-23 11:33:54 +00:00
_Everest running on Windows 10._
# Why Everest?
2018-09-19 17:59:36 +00:00
- Everest is written in Java. Thus, it is significantly **lighter on resources and more responsive** than its Electron-based alternatives like _Postman_. It aims to provide the same level of functionality in a lighter, native but equally slick package.
- Aesthetic is very important. With a **gorgeous, flat design**, Everest is a pleasure to look at and to work with. It is also entirely theme-_able_.
> I want you to want to use it!
- Being a Java application, Everest is inherently **cross-platform**. It will run anywhere there's a JVM.
- Everest will offer cloud synchronization of your projects powered by [Summit](https://github.com/RohitAwate/Summit). It will be available as a cloud service early next year or you may also choose to self-host it.
# Live Features 🔥
#### All of the most common requests
GET, POST, PUT, DELETE and PATCH requests. HEAD and OPTIONS coming soon.
#### Comprehensive Request Builder
- Add request headers.
- Append query parameters. _(with live preview)_
- **Syntax highlighting** for JSON and XML, powered by [RichTextFX](https://github.com/FXMisc/RichTextFX).
- Quickly add key-value pairs for URL-encoded and multipart-form bodies.
#### View Response Details
- HTTP status code, content type, elapsed time, body size.
- **Visualizer** to view JSON responses graphically. _(Aesthetic improvements coming with Alpha 1.4)_
- View response headers.
2018-01-30 06:49:00 +00:00
![get](https://user-images.githubusercontent.com/23148259/45769777-3c55be00-bc5e-11e8-9fbc-c8bf93b7dc5d.gif)
_Making a GET request with Everest._
2018-01-30 06:49:00 +00:00
#### API Authentication
- Basic Auth
- Digest Auth
#### Custom Themes
Everest is entirely theme-_able_ via CSS. For more details, refer [this guide](THEMES.md).
#### Efficient multi-tabbing
Everest utilizes a technique called _pseudo tab-switching_ to maintain a low memory footprint even when heavy multi-tabbing. I have written a highly technical piece about this on my [dev.to](https://dev.to/rohit).
2018-09-19 17:59:36 +00:00
_**Bonus**: The '+' button for adding new tabs is finally live!_
#### History
Everest maintains the history of all the requests made by you. You can search with any of the request's components: the target, the headers, the method, the body or even the files added to the request. Everest will **intelligently rank** the results based on their relevance.
2018-01-30 06:49:00 +00:00
![history](https://user-images.githubusercontent.com/23148259/45769890-8a6ac180-bc5e-11e8-8f5e-6704eb0e9aa1.gif)
2018-01-30 06:49:00 +00:00
2018-04-23 11:33:54 +00:00
_Everest's search feature in action._
2018-01-30 06:49:00 +00:00
# Upcoming features ⏳
#### OAuth Support
Everest will fully support both of the OAuth standards. Work on **OAuth 2.0 is in progress** right now and will be available with Alpha 1.4. OAuth 1.0 will follow next.
#### Everest Project
- This will be Everest's equivalent of Postman's Collection or Insomnia's Workspace.
- Will house **named-requests**.
- Will support **environment variables**. Every request can have its own.
- Can be exported/imported.
#### Summit
![summitheader](https://user-images.githubusercontent.com/23148259/45769968-cbfb6c80-bc5e-11e8-95c7-7d418dee54d5.png)
- [Summit](https://github.com/RohitAwate/Summit) is the synchronization server for Everest.
- It will allow for synchronization of your Everest Projects across multiple devices and other members of your team.
- It will use a Node.js-_powered_ RESTful API and Socket.IO.
2018-09-19 17:59:36 +00:00
- It will be available early next year as a service. You may also choose to self-host Summit.
#### Extension API
This will allow developers to create extensions for Everest which can for example, sync to Google Drive, or visualize the response bodies in a certain fashion or summon Batman.
#### Mock Server
This local server can be used to quickly create a mock REST-_ful_ service with the endpoints of your choice, producing the output of your choice.
# Keymap ⌨️
| Shortcut | Task |
|--------------|--------------------------|
| Ctrl + T | New Tab |
| Ctrl + W | Close tab |
| Ctrl + H | Toggle History |
| Ctrl + Enter | Send request |
| Ctrl + L | Focus address bar |
| Ctrl + M | Select HTTP method |
| Ctrl + F | Focus history search bar |
| Alt + P | Focus Query Params tab |
| Alt + A | Focus Authentication tab |
| Alt + H | Focus Headers tab |
| Alt + B | Focus Body tab |
# Releases 🚀
Everest is under active development and you can get the latest alpha build from [Releases](https://github.com/RohitAwate/Everest/releases). Make sure you read the release notes to understand what works and what doesn't, how to report issues and how to run the binary.
# Building from source 🔨
Everest uses Maven, so building from the source code is very simple. You need to have a minimum of JDK 8 (9 should also work) installed, along with Maven and Git. If you're using OpenJDK, you will need to install OpenJFX separately. Once you have everything set up, follow these simple steps:
1. Clone the repository: `git clone https://github.com/RohitAwate/Everest.git`
2. Enter the repository: `cd Everest`
3. Build a binary: `mvn package`
2018-06-23 17:54:20 +00:00
4. Run the binary: `java -jar target/Everest-Alpha-1.X.jar` replacing 'X' with the current version.
**For JDK 10 and above:** JavaFX has been decoupled from the JDK and will need to be installed separately.
# License ⚖️
Everest is licensed under the [Apache 2.0 License](LICENSE).
# Suggestions and improvements
Use these options to reach me:
- Open a GitHub issue.
- Email me at rohitawate121@gmail.com.
- Tweet me [@TheRohitAwate](https://twitter.com/TheRohitAwate).