diff --git a/README.md b/README.md
index 0efb303..35a8e68 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@
- **Docker Solution**: We now have 2 docker solutions! Thanks to @DaanSelen & @shuricksumy for providing them. For more information, please see the [Docker](#-docker-solutions) section below.
- **Peer Job Scheduler**: Now you can schedule jobs for each peer to either **restrict** or **delete** the peer if the peer's total / upload / download data usage exceeded a limit, or you can set a specific datetime to restrict or delete the peer.
- **Share Peer's QR Code with Public Link**: You can share a peer's QR code and `.conf` file without the need to loging in.
- - **WGDashboard's REST API**: You can now request all the api endpoint used in the dashboard. For more details please review the API Documentation.
+ - **WGDashboard's REST API**: You can now request all the api endpoint used in the dashboard. For more details please review the [API Documentation](./docs/api-documents.md).
- **Logging**: Dashboard will now log all activity on the dashboard and API requests.
- **Time-Based One-Time Password (TOTP)**: You can enable this function to add one more layer of security, and generate the TOTP with your choice of authenticator.
- **Designs**
@@ -61,7 +61,7 @@
- [Generating QR code and peer configuration file (.conf)](#generating-qr-code-and-peer-configuration-file-conf)
- [❓ How to update the dashboard?](#-how-to-update-the-dashboard)
- [🐬 Docker Solutions](#-docker-solutions)
-- [📖 API Document](./docs/api-documents.md)
+- [📖 How to use API Key & API Document](./docs/api-documents.md)
- [🥘 Experimental Functions](#-experimental-functions)
- [🔍 Screenshot](#-screenshot)
- [⏰ Changelog](./docs/api-documents.md)
diff --git a/docs/api-documents.md b/docs/api-documents.md
index 677a641..a3df81e 100644
--- a/docs/api-documents.md
+++ b/docs/api-documents.md
@@ -1,4 +1,4 @@
-# API Documents for WGDashboard
+# 📖 API Document for WGDashboard
**Version: v4.0**
@@ -6,3 +6,21 @@
+## 🔑 How to use API Key?
+
+### Create API Key
+
+1. To request an API Key, simply login to your WGDashboard, go to **Settings**, scroll to the very bottom. Click the **switch** on the right to enable API Key.
+2. Click the blur **Create** button, set an **expiry date** you want or **never expire**, then click **Done**.
+
+### Use API Key in `fetch()`
+
+```javascript
+fetch('http://server:10086', {
+ headers: {
+ 'content-type': 'application/json',
+ 'wg-dashboard-apikey': 'insert your api key here'
+ }
+})
+```
+To use API Key, simply insert `wg-dashboard-apikey` with the value of your API key into the `header` in your http request.
diff --git a/docs/changelogs.md b/docs/changelogs.md
index e69de29..cb98d36 100644
--- a/docs/changelogs.md
+++ b/docs/changelogs.md
@@ -0,0 +1,105 @@
+# ⏰ Changelogs of WGDashboard
+
+#### v3.0.0 - v3.0.6.2 - Jan 18, 2022
+
+- 🎉 **New Features**
+ - **Moved from TinyDB to SQLite**: SQLite provide a better performance and loading speed when getting peers! Also avoided crashing the database due to **race condition**.
+ - **Added Gunicorn WSGI Server**: This could provide more stable on handling HTTP request, and more flexibility in the future (such as HTTPS support). **BIG THANKS to @pgalonza :heart:**
+ - **Add Peers by Bulk:** User can add peers by bulk, just simply set the amount and click add.
+ - **Delete Peers by Bulk**: User can delete peers by bulk, without deleting peers one by one.
+ - **Download Peers in Zip**: User can download all *downloadable* peers in a zip.
+ - **Added Pre-shared Key to peers:** Now each peer can add with a pre-shared key to enhance security. Previously added peers can add the pre-shared key through the peer setting button.
+ - **Redirect Back to Previous Page:** The dashboard will now redirect you back to your previous page if the current session got timed out and you need to sign in again.
+ - **Added Some [🥘 Experimental Functions](#-experimental-functions)**
+
+- 🪚 **Bug Fixed**
+ - [IP Sorting range issues #99](https://github.com/donaldzou/WGDashboard/issues/99) [❤️ @barryboom]
+ - [INvalid character written to tunnel json file #108](https://github.com/donaldzou/WGDashboard/issues/108) [❤️ @ikidd]
+ - [Add IPv6 #91](https://github.com/donaldzou/WGDashboard/pull/91) [❤️ @pgalonza]
+ - [Added MTU and PersistentKeepalive to QR code and download files #112](https://github.com/donaldzou/WGDashboard/pull/112) [:heart: @reafian]
+ - **And many other bugs provided by our beloved users** :heart:
+- **🧐 Other Changes**
+ - **Key generating moved to front-end**: No longer need to use the server's WireGuard to generate keys, thanks to the `wireguard.js` from the [official repository](https://git.zx2c4.com/wireguard-tools/tree/contrib/keygen-html/wireguard.js)!
+ - **Peer transfer calculation**: each peer will now show all transfer amount (previously was only showing transfer amount from the last configuration start-up).
+ - **UI adjustment on running peers**: peers will have a new style indicating that it is running.
+ - **`wgd.sh` finally can update itself**: So now user could update the whole dashboard from `wgd.sh`, with the `update` command.
+ - **Minified JS and CSS files**: Although only a small changes on the file size, but I think is still a good practice to save a bit of bandwidth ;)
+
+*And many other small changes for performance and bug fixes! :laughing:*
+
+#### v2.3.1 - Sep 8, 2021
+
+- Updated dashboard's name to **WGDashboard**!!
+
+#### v2.3 - Sep 8, 2021
+
+- 🎉 **New Features**
+ - **Update directly from `wgd.sh`:** Now you can update WGDashboard directly from the bash script.
+ - **Displaying Peers:** You can switch the display mode between list and table in the configuration page.
+- 🪚 **Bug Fixed**
+ - [Peer DNS Validation Fails #67](issues/67): Added DNS format check. [❤️ @realfian]
+ - [configparser.NoSectionError: No section: 'Interface' #66](issues/66): Changed permission requirement for `etc/wireguard` from `744` to `755`. [❤️ @ramalmaty]
+ - [Feature request: Interface not loading when information missing #73](issues/73): Fixed when Configuration Address and Listen Port is missing will crash the dashboard. [❤️ @js32]
+ - [Remote Peer, MTU and PersistentKeepalives added #70](pull/70): Added MTU, remote peer and Persistent Keepalive. [❤️ @realfian]
+ - [Fixes DNS check to support search domain #65](pull/65): Added allow input domain into DNS. [❤️@davejlong]
+- **🧐 Other Changes**
+ - Moved Add Peer Button into the right bottom corner.
+
+#### v2.2.1 - Aug 16, 2021
+
+Bug Fixed:
+- Added support for full subnet on Allowed IP
+- Peer setting Save button
+
+#### v2.2 - Aug 14, 2021
+
+- 🎉 **New Features**
+ - **Add new peers**: Now you can add peers directly on dashboard, it will generate a pair of private key and public key. You can also set its DNS, endpoint allowed IPs. Both can set a default value in the setting page. [❤️ in [#44](https://github.com/donaldzou/wireguard-dashboard/issues/44)]
+ - **QR Code:** You can add the private key in peer setting of your existed peer to create a QR code. Or just create a new one, dashboard will now be able to auto generate a private key and public key ;) Don't worry, all keys will be generated on your machine, and **will delete all key files after they got generated**. [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)]
+ - **Peer configuration file download:** Same as QR code, you now can download the peer configuration file, so you don't need to manually input all the details on the peer machine! [❤️ in [#40](https://github.com/donaldzou/wireguard-dashboard/issues/40)]
+ - **Search peers**: You can now search peers by their name.
+ - **Autostart on boot:** Added a tutorial on how to start the dashboard to on boot! Please read the [tutorial below](#autostart-wireguard-dashboard-on-boot). [❤️ in [#29](https://github.com/donaldzou/wireguard-dashboard/issues/29)]
+ - **Click to copy**: You can now click and copy all peer's public key and configuration's public key.
+ - ....
+- 🪚 **Bug Fixed**
+ - When there are comments in the wireguard config file, will cause the dashboard to crash.
+ - Used regex to search for config files.
+- **🧐 Other Changes**
+ - Moved all external CSS and JavaScript file to local hosting (Except Bootstrap Icon, due to large amount of SVG files).
+ - Updated Python dependencies
+ - Flask: `v1.1.2 => v2.0.1`
+ - Jinja: `v2.10.1 => v3.0.1`
+ - icmplib: `v2.1.1 => v3.0.1`
+ - Updated CSS/JS dependencies
+ - Bootstrap: `v4.5.3 => v4.6.0`
+ - UI adjustment
+ - Adjusted how peers will display in larger screens, used to be 1 row per peer, now is 3 peers in 1 row.
+
+#### v2.1 - Jul 2, 2021
+
+- Added **Ping** and **Traceroute** tools!
+- Adjusted the calculation of data usage on each peers
+- Added refresh interval of the dashboard
+- Bug fixed when no configuration on fresh install ([#23](https://github.com/donaldzou/wireguard-dashboard/issues/23))
+- Fixed crash when too many peers ([#22](https://github.com/donaldzou/wireguard-dashboard/issues/22))
+
+#### v2.0 - May 5, 2021
+
+- Added login function to dashboard
+ - ***I'm not using the most ideal way to store the username and password, feel free to provide a better way to do this if you any good idea!***
+- Added a config file to the dashboard
+- Dashboard config can be change within the **Setting** tab on the side bar
+- Adjusted UI
+- And much more!
+
+#### v1.1.2 - Apr 3, 2021
+
+- Resolved issue [#3](https://github.com/donaldzou/wireguard-dashboard/issues/3).
+
+#### v1.1.1 - Apr 2, 2021
+
+- Able to add a friendly name to each peer. Thanks [#2](https://github.com/donaldzou/wireguard-dashboard/issues/2) !
+
+#### v1.0 - Dec 27, 2020
+
+- Added the function to remove peers
\ No newline at end of file