diff --git a/docs/widgets.md b/docs/widgets.md
index 151eab64..1861c6d1 100644
--- a/docs/widgets.md
+++ b/docs/widgets.md
@@ -17,6 +17,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Crypto Price History](#crypto-token-price-history)
- [Crypto Wallet Balance](#wallet-balance)
- [Code Stats](#code-stats)
+ - [Email Aliases (AnonAddy)](#anonaddy)
- [Vulnerability Feed](#vulnerability-feed)
- [Exchange Rates](#exchange-rates)
- [Public Holidays](#public-holidays)
@@ -379,6 +380,50 @@ Display your coding summary. [Code::Stats](https://codestats.net/) is a free and
---
+### AnonAddy
+
+[AnonAddy](https://anonaddy.com/) is a free and open source mail forwarding service. Use it to protect your real email address, by using a different alias for each of your online accounts, and have all emails land in your normal inbox(es). Supports custom domains, email replies, PGP-encryption, multiple recipients and more
+
+This widget display email addresses / aliases from AnonAddy. Click an email address to copy to clipboard, or use the toggle switch to enable/ disable it. Shows usage stats (bandwidth, used aliases etc), as well as total messages recieved, blocked and sent. Works with both self-hosted and managed instances of AnonAddy.
+
+

+
+##### Options
+
+**Field** | **Type** | **Required** | **Description**
+--- | --- | --- | ---
+**`apiKey`** | `string` | Required | Your AnonAddy API Key / Personal Access Token. You can generate this under [Account Settings](https://app.anonaddy.com/settings)
+**`hostname`** | `string` | _Optional_ | If your self-hosting AnonAddy, then supply the host name. By default it will use the public hosted instance
+**`apiVersion`** | `string` | _Optional_ | If you're using an API version that is not version `v1`, then specify it here
+**`limit`** | `number` | _Optional_ | Limit the number of emails shown per page. Defaults to `10`
+**`sortBy`** | `string` | _Optional_ | Specify the sort order for email addresses. Defaults to `updated_at`. Can be either: `local_part`, `domain`, `email`, `emails_forwarded`, `emails_blocked`, `emails_replied`, `emails_sent`, `created_at`, `updated_at` or `deleted_at`. Precede with a `-` character to reverse order.
+**`searchTerm`** | `string` | _Optional_ | A search term to filter results by, will search the email, description and domain
+**`disableControls`** | `boolean` | _Optional_ | Prevent any changes being made to account through the widget. User will not be able to enable or disable aliases through UI when this option is set
+**`hideMeta`** | `boolean` | _Optional_ | Don't show account meta info (forward/ block count, quota usage etc)
+**`hideAliases`** | `boolean` | _Optional_ | Don't show email address / alias list. Will only show account meta info
+
+##### Example
+
+```yaml
+ - type: anonaddy
+ options:
+ apiKey: "xxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ limit: 5
+ sortBy: created_at
+ disableControls: true
+```
+
+##### Info
+- **CORS**: ๐ข Enabled
+- **Auth**: ๐ด Required
+- **Price**: ๐ Free for Self-Hosted / Free Plan available on managed instance or $1/month for premium
+- **Host**: Self-Hosted or Managed
+- **Privacy**: _See [AnonAddy Privacy Policy](https://anonaddy.com/privacy/)_
+
+---
+
### Vulnerability Feed
Keep track of recent security advisories and vulnerabilities, with optional filtering by score, exploits, vendor and product. All fields are optional.
@@ -1181,14 +1226,15 @@ Glances can be launched with the `glances` command. You'll need to run it in web
##### Options
-All Glance's based widgets require a `hostname`
+All Glance's based widgets require a `hostname`. All other parameters are optional.
**Field** | **Type** | **Required** | **Description**
--- | --- | --- | ---
-**`hostname`** | `string` | Required | The URL to your Glances instance (without a trailing slash)
+**`hostname`** | `string` | Required | The URL or IP + port to your Glances instance (without a trailing slash)
**`username`** | `string` | _Optional_ | If you have setup basic auth on Glances, specify username here (defaults to `glances`)
**`password`** | `string` | _Optional_ | If you have setup basic auth on Glances, specify password here. **Note**: since this password is in plaintext, it is important not to reuse it anywhere else
**`apiVersion`** | `string` | _Optional_ | Specify an API version, defaults to V `3`. Note that support for older versions is limited
+**`limit`** | `number` | _Optional_ | For widgets that show a time-series chart, optionally limit the number of data points returned. A higher number will show more historical results, but will take longer to load. A value between 300 - 800 is usually optimal
##### Info
- **CORS**: ๐ข Enabled
diff --git a/src/components/Widgets/AnonAddy.vue b/src/components/Widgets/AnonAddy.vue
new file mode 100644
index 00000000..0e466c05
--- /dev/null
+++ b/src/components/Widgets/AnonAddy.vue
@@ -0,0 +1,400 @@
+
+
+
+
+
+
+ Bandwidth
+
+ {{ meta.bandwidth | formatBytes }} out of
+ {{ meta.bandwidthLimit !== 100000000 ? (formatBytes(meta.bandwidthLimit)) : 'โ'}}
+
+
+
+ Active Domains
+ {{ meta.activeDomains }} out of {{ meta.activeDomainsLimit }}
+
+
+ Shared Domains
+ {{ meta.sharedDomains }} out of {{ meta.sharedDomainsLimit || 'โ'}}
+
+
+ Usernames
+ {{ meta.usernamesCount }} out of {{ meta.usernamesLimit || 'โ'}}
+
+
+
+
+
+
+
+
+
โ
+
+ {{ alias.email }}
+ @
+ {{ alias.domain }}
+
+
+
+
+
+ {{ alias.description }}
+
+
+
+ Forwarded
+ {{ alias.forwardCount }}
+ Blocked
+ {{ alias.blockedCount }}
+ Replied
+ {{ alias.repliesCount }}
+ Sent
+ {{ alias.sentCount }}
+
+
+
+ Created
+ {{ alias.createdAt | formatDate }}
+ {{ alias.createdAt | formatTimeAgo }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue
index d768e831..ff145fdc 100644
--- a/src/components/Widgets/WidgetBase.vue
+++ b/src/components/Widgets/WidgetBase.vue
@@ -18,8 +18,15 @@