Update README for Aplha 1.3 and add THEMES.md

This commit is contained in:
Rohit Awate 2018-09-19 23:20:55 +05:30
parent d5b4c36fae
commit 3ec6a02711
2 changed files with 100 additions and 41 deletions

112
README.md
View file

@ -2,48 +2,79 @@
Everest _(formerly RESTaurant)_ is an upcoming REST API testing client written in JavaFX. Everest _(formerly RESTaurant)_ is an upcoming REST API testing client written in JavaFX.
![idle](https://user-images.githubusercontent.com/23148259/39201973-416978a6-480e-11e8-8f94-ddd656ea8784.PNG) ![home](https://user-images.githubusercontent.com/23148259/45769743-23e5a380-bc5e-11e8-9e45-5ea50342c19f.PNG)
_Everest running on Windows 10._ _Everest running on Windows 10._
# Why Everest? # Why Everest?
- Unlike other REST clients like Postman and Insomnia, Everest is written in Java. Thus, it is significantly - Everest is written in Java. Thus, it is significantly **lighter on resources and more responsive** than its Electron-based competitors like _Postman_. It aims to provide the same level of functionality in a lighter, native but equally slick package.
**lighter on resources and more responsive** than the Electron-based options. The goal with Everest is to provide pretty much the same - 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_.
level of functionality as the other options, but in a lighter, native but equally slick package. It is a big and slightly arrogant bet,
but then I don't think anyone other than me would use this! So heck, at least I'll learnt a lot. _Not bad for a Comp Sci student, eh?_
- In all of my projects, design is of paramount importance. And Everest is no exception.
With a **gorgeous, flat design and a neutral color scheme**, Everest is a pleasure to look at and to work with.
_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 is powered by **Jersey**, the robust and powerful Java library to build and consume RESTful web services.
![get](https://user-images.githubusercontent.com/23148259/41772368-f9276dae-7635-11e8-97ec-1a1e8aa608c4.PNG) > 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.
![get](https://user-images.githubusercontent.com/23148259/45769777-3c55be00-bc5e-11e8-9fbc-c8bf93b7dc5d.gif)
_Making a GET request with Everest._ _Making a GET request with Everest._
# Features currently live #### API Authentication
- GET, POST, PUT, DELETE and PATCH requests. - Basic Auth
- Adding request headers, query parameters and the request body (raw, octet-stream, URL-encoded or form-data) - Digest Auth
- Response details (HTTP status code, response type, time, size)
- **Custom themes**: I encourage you to develop new themes by taking reference of [Adreana](https://github.com/RohitAwate/RESTaurant/blob/master/src/main/resources/css/Adreana.css). I plan on documenting it better in the future. Changing themes needs a manual edit to `Everest/config/settings.json`. This will be properly integrated into a Settings menu soon. 🌈
- **Multi-tab layout**: I'm battling with JavaFX to allow me to add a simple '+' button for adding a new tab. So far, not successful. However, you can use the Ctrl+T keyboard shortcut.
- **History tab**: All the requests you ever made are now shown to the left of the app. 🕒
- **Searching through your request history**: Everest searches not just on the basis of the request target but all other parameters that form the request including headers, the request body, query parameters and even file names. It will **intelligently rank** the results on the basis of their relevance. 🔎
- Everest now maintains its state between sessions so you don't lose your work. 🧠
- **Response Visualizer**: You can now view JSON responses just as you would your file tree.
- **Syntax highlighting**: Everest now highlights your JSON, XML and HTML responses and requests, powered by [RichTextFX](https://github.com/FXMisc/RichTextFX). You can add new CSS syntax themes in `Everest/themes/syntax/` by taking reference of the default, [Moondust](https://github.com/RohitAwate/Everest/blob/master/src/main/resources/css/syntax/Moondust.css).
![search](https://user-images.githubusercontent.com/23148259/39201474-cc4e6e2e-480c-11e8-8770-7fc4401a2435.PNG) #### 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).
_**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.
![history](https://user-images.githubusercontent.com/23148259/45769890-8a6ac180-bc5e-11e8-8f5e-6704eb0e9aa1.gif)
_Everest's search feature in action._ _Everest's search feature in action._
# Upcoming features # Upcoming features ⏳
- **API Authentication**: This is of course a primary feature of any REST client, but currently, not something I've done or used before. #### OAuth Support
So I will need some time to learn this stuff. 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.
- **Text prediction** for the address bar based on your history.
- _Postman_ has this really cool feature wherein it can create a **mock server**. I'll do that once the core features are implemented and if it doesn't severely impact performance.
![Visualizer](https://user-images.githubusercontent.com/23148259/41772225-5bafa988-7635-11e8-9f44-b0e4aa4ea05b.png) #### Everest Project
_Everest's convenient Visualizer makes reading response bodies a breeze!_ - 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.
# Keymap #### 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.
- It will be available early next year as a service.
#### 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 | | Shortcut | Task |
|--------------|--------------------------| |--------------|--------------------------|
| Ctrl + T | New Tab | | Ctrl + T | New Tab |
@ -51,9 +82,9 @@ _Everest's convenient Visualizer makes reading response bodies a breeze!_
| Ctrl + H | Toggle History | | Ctrl + H | Toggle History |
| Ctrl + Enter | Send request | | Ctrl + Enter | Send request |
| Ctrl + L | Focus address bar | | Ctrl + L | Focus address bar |
| Ctrl + M | Open HTTP Method box | | Ctrl + M | Select HTTP method |
| Ctrl + F | Focus history search bar | | Ctrl + F | Focus history search bar |
| Alt + P | Focus Params tab | | Alt + P | Focus Query Params tab |
| Alt + A | Focus Authentication tab | | Alt + A | Focus Authentication tab |
| Alt + H | Focus Headers tab | | Alt + H | Focus Headers tab |
| Alt + B | Focus Body tab | | Alt + B | Focus Body tab |
@ -61,21 +92,20 @@ _Everest's convenient Visualizer makes reading response bodies a breeze!_
# Releases 🚀 # 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. 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 # Building from source 🔨
Everest uses Maven, so building from the source code is very simple. You need to have JDK 8 (9 should also work) installed, along with Maven and Git. If you're using OpenJDK, you will separately need to install OpenJFX. Once you have everything set up, follow these simple steps: 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` 1. Clone the repository: `git clone https://github.com/RohitAwate/Everest.git`
2. Enter the repository: `cd Everest` 2. Enter the repository: `cd Everest`
3. Build a binary: `mvn package` 3. Build a binary: `mvn package`
4. Run the binary: `java -jar target/Everest-Alpha-1.X.jar` replacing 'X' with the current version. 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 # Suggestions and improvements
Use these options to reach me: Use these options to reach me:
- Open a GitHub issue. - Open a GitHub issue.
- Email me at rohitawate121@gmail.com. - Email me at rohitawate121@gmail.com.
- Tweet me [@TheRohitAwate](https://twitter.com/TheRohitAwate). - Tweet me [@TheRohitAwate](https://twitter.com/TheRohitAwate).
Aaaand, that's it!
I don't think anyone will make it down here. But if you did, you're awesome! 🏆
_Cheers!_

29
THEMES.md Normal file
View file

@ -0,0 +1,29 @@
![everestheader](https://user-images.githubusercontent.com/23148259/39124644-c886b47a-4719-11e8-953c-f079b3edb664.png)
# Theme Development Guide
This brief guide gets you started developing themes for Everest. It points you to the default themes in Everest for the UI and syntax. You can refer to these while developing your custom ones. The expected paths to the CSS files is also mentioned along with the property that needs to be defined in the settings file (`EverestInstallationDirectory/config/settings.json`) to activate the theme.
While development, you can edit the CSS file and use the `Shift + T` shortcut within Everest to reload the theme without restarting the application.
## UI Theme
- Default: [Adreana](https://github.com/RohitAwate/RESTaurant/blob/master/src/main/resources/css/Adreana.css)
- Location: `EverestInstallationDirectory/Everest/themes/`
- Property in Settings:
```json
{
"theme": "NameOfYourThemeWithoutCSSExtension"
}
```
## Syntax Theme
- Default: [Moondust](https://github.com/RohitAwate/Everest/blob/master/src/main/resources/css/syntax/Moondust.css)
- Location: `EverestInstallationDirectory/Everest/themes/syntax/`
- Property in Settings:
```json
{
"syntaxTheme": "NameOfYourSyntaxThemeWithoutCSSExtension"
}
```
#### Note
A GUI 'Preferences' menu will be added to Everest soon to allow for easily selecting your UI theme.