elk Documentation

A nimble Mastodon web client

6,029 stars Vue Vue 1 file ยท ~10,319 tokens #mastodon#mastodon-client#nuxt-app
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy elk on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name elk -p 5314:5314 --restart always elk-zone/elk:latest
Configured Services & Ports
โš™๏ธ elk
image: build locally
๐Ÿ”Œ Ports: 5314:5314
docker-compose.yml
yaml (docker-compose.yml)
services:
  elk:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      # make sure this directory has the same ownership as the elk user from the Dockerfile
      # otherwise Elk will not be able to store configs for accounts
      # e.g., mkdir ./elk-storage; sudo chown 911:911 ./elk-storage
      - './elk-storage:/elk/data'
    ports:
      - 5314:5314

File: README.md

Elk

We appreciate your feedback and contributions. Check out the Open Issues and jump in the action. Join the Elk discord server to chat with us and learn more about the project.

Deployment

Official Deployment

The Elk team maintains a deployment at:

  • ๐ŸฆŒ Production: elk.zone
  • ๐Ÿ™ Canary: main.elk.zone (deploys on every commit to main branch)

Self-Host Docker Deployment

In order to host Elk yourself you can use the provided Dockerfile to build a container with elk. Be aware, that Elk only loads properly if the connection is done via SSL/TLS. The Docker container itself does not provide any SSL/TLS handling. You'll have to add this bit yourself.
One could put Elk behind popular reverse proxies with SSL Handling like Traefik, NGINX etc.

  1. checkout source git clone https://github.com/elk-zone/elk.git
  2. got into new source dir: cd elk
  3. create local storage directory for settings: mkdir elk-storage
  4. adjust permissions of storage dir: sudo chown 911:911 ./elk-storage
  5. start container: docker compose up --build -d

[!NOTE]
The provided Dockerfile creates a container which will eventually run Elk as non-root user and create a persistent named Docker volume upon first start (if that volume does not yet exist). This volume is always created with root permission. Failing to change the permissions of /elk/data inside this volume to UID:GID 911 (as specified for Elk in the Dockerfile) will prevent Elk from storing it's config for user accounts. You either have to fix the permission in the created named volume, or mount a directory with the correct permission to /elk/data into the container.

Ecosystem

These are known deployments using Elk as an alternative Web client for Mastodon servers or as a base for other projects in the fediverse:

Note: Community deployments are NOT maintained by the Elk team. It may not be synced with Elk's source code. Please do your own research about the host servers before using them.

๐Ÿ’– Sponsors

We are grateful for the generous sponsorship and help of:

And all the companies and individuals sponsoring Elk Team and the members. If you're enjoying the app, consider sponsoring us:

Or you can sponsor our core team members individually:

We would also appreciate sponsoring other contributors to the Elk project. If someone helps you solve an issue or implement a feature you wanted, supporting them would help make this project and OS more sustainable.

๐Ÿ“ Roadmap

Open board on Volta

๐Ÿง‘โ€๐Ÿ’ป Contributing

We're really excited that you're interested in contributing to Elk! Before submitting your contribution, please read through the following guide.

Local Setup

Clone the repository and run on the root folder:

text
pnpm i
pnpm run dev

Warning: you will need corepack enabled, check out the Elk Contributing Guide for a detailed guide on how to set up the project locally.

We recommend installing ni, that will use the right package manager in each of your projects. If ni is installed, you can instead run:

text
ni
nr dev

Testing

Elk uses Vitest. You can run the test suite with:

text
nr test

๐Ÿ“ฒ PWA

You can consult the PWA documentation to learn more about the PWA capabilities on Elk, how to install Elk PWA in your desktop or mobile device and some hints about PWA stuff on Elk.

๐Ÿฆ„ Stack

  • Vite - Next Generation Frontend Tooling
  • Nuxt - The Intuitive Web Framework
  • Vue - The Progressive JavaScript Framework
  • VueUse - Collection of Vue Composition Utilities
  • Pinia - The Vue Store that you will enjoy using
  • Vue Macros - More macros and syntax sugar for Vue
  • UnoCSS - The instant on-demand atomic CSS engine
  • Iconify - Iconify icon sets in JSON format
  • Masto.js - Mastodon API client in TypeScript
  • shiki - A beautiful yet powerful syntax highlighter
  • vite-plugin-pwa - Prompt for update, Web Push Notifications and Web Share Target API

๐Ÿ‘จโ€๐Ÿ’ป Contributors

๐Ÿ“„ License

MIT © 2022-PRESENT Elk contributors :)


File: docs/content/1.guide/1.index.md


title: Introduction

Introduction

What is Elk?

Elk is an alternative way to access your Mastodon account from your browser.

Through the Mastodon API, Elk provides similar access to posts and actions on posts you expect to be able to do to Mastodon.
You can compose a post (Toot, if you like), boost others' toots, like, bookmark, and scroll just as you would through your regular server site.

Why Elk, then?
Elk provides some features not available through the standard Mastodon web app interface.

  • Notifications for the same post combine when they are sequential. No more seeing your same viral joke multiple times in the Notification feed for each like and boost. Now you can see it just one, with a list of who liked or boosted the post just above the post itself.
  • You control whether you see boost, like, and follower accounts - all separately!
  • See a preview of the profile when someone follows you.

You can use Elk right in your browser.
On a mobile device, you can install the app to your home screen right from your browser for easy access.
(This is called a Progressive Web App, or PWA.)

Want to try it out?
Visit https://elk.zone, type in your Mastodon server address, then log in.
Or, visit one of the other Elk installs in the Elk ecosystem.

What is Mastodon?

Mastodon is a decentralized microblogging platform.
Mastodon uses the ActivityPub protocol to share posts and actions between users within or across different instance servers.

You can think of the service as something similar to Twitter, but with some key differences.

  • Where Twitter is a single site that everyone who uses it belongs to, Mastodon is a platform used by many different sites.
  • Where Twitter is a corporation with profit goals and advertisements, Mastodon is a free and open source software tool maintained by volunteers and paid for by patrons and voluntary contributors to their own instance servers and back to the main software project.
  • Where Twitter users can only interact with other Twitter users, Mastodon users can talk to users on many other ActivityPub platforms, including services that provide video (PeerTube), photos (PixelFed), blogs (WriteFreely), and alternative microblogging platforms (Pleroma, Hometown, GoToSocial, and their derivatives).

For more details about Mastodon, see their website, blog, docs, and GitHub Repository.

What is a Mastodon Client?

A Mastodon Client is software that serves up the posts and activities from a Mastodon server using the Mastodon API.
When you visit or sign in to a Mastodon server, you use the standard Mastodon client or the alternative Advanced Web Interface (that provides a multi-column format).

A Mastodon client performs similar functions as the standard web interfaces.
Using a client, you can

  • View posts from accounts you follow
  • Boost, like, or bookmark posts
  • Create new posts from your own account
  • Explore the home, local, and federated timelines
  • See what is trending on your server
  • View, add, or participate in polls
  • Follow, unfollow, mute, and block accounts

::callout{type="info"}
Note: Not all clients provide all features.
::

Installed Mastodon Clients

You may be most familiar with Mastodon Clients through your phone or tablet.
The app you download from an app store and install on your device to access your Mastodon account is a Mastodon Client.

::card{icon="logos:android-icon"}
#title
Android
#description
Fedilab, Tusky, or Tooot, among others.
::

::card{icon="logos:apple"}
#title
Apple
#description
Ivory, Ice Cubes, Metatext, or Toot
::

::card{icon="mdi:desktop-classic"}
#title
Desktop
#description
TheDesk, Whalebird, or Sengi
::

All of these apps provide some combination of the features a typical Mastodon user expects for their account.

Browser-based Mastodon Clients

Elk is a Mastodon Client, but instead of being an app to install on your phone, tablet, or desktop, it is an alternative web site you visit in a browser.

In addition to Elk, there are other browser-based alternative Mastodon clients.
Some include:

Sponsors

We want to thank the generous sponsoring and help of:


And all the companies and individuals sponsoring Elk Team members.

Find out more about sponsoring Elk.


File: docs/content/1.guide/2.features.md


title: Features

Features

::callout{type=warning}
๐Ÿšง This section is a work in progress. ๐Ÿšง
::

Multiple accounts

Elk supports logging into multiple Mastodon accounts.
Select the three vertical dot menu button next to your profile picture on a desktop or your profile picture directly on mobile devices, then select Add an existing account.

Switch between your accounts quickly:

  • On the desktop, select the profile picture for the account to use.
  • On mobile devices or smaller screens, tap your profile picture to see a list of signed-in accounts, then select the account to use.

Rich text

Elk renders basic Markdown-like text markup in post texts as the expected HTML.

  • Use one asterisk (*) before and after a word or phrase to italicize* the text.
  • Surround the text with two asterisks (**word**) to bold it.

::callout{type="warning"}
Many apps do not support Markdown in posts.
Mastodon itself does not support Markdown in posts.

Users who see your posts from other apps or the Mastodon web app see standard, unrendered Markdown text.
::

Code blocks

Elk supports adding code blocks to your posts.

When writing the post, select the editor tools and then Code Block to add a block to your post.
Paste or type in the contents.

Once you've added the block, you can select the language to use for code highlighting.
Hover over the right side of the code block to see the drop down box, then select the dropdown to see the full list of supported languages.

Options include:

  • plain
  • c
  • cpp
  • csharp
  • css
  • dart
  • go
  • html
  • java
  • javascript
  • jsx
  • kotlin
  • python
  • rust
  • svelte
  • swift
  • tsx
  • typescript
  • vue

Connecting linked posts in the timeline

Elk reorders timeline posts that are connected to each other to display them in a connected thread in the timelines.
This helps keep the conversation context for a post and its replies.

Improved notifications

Elk groups boosts and likes to the same post when they occur together in the notification history.
Rather than displaying each like and boost with the post contents as in other apps, Elk displays the post one time with a list of the users who liked or boosted the post.
This greatly simplifies your notification history.


File: docs/content/1.guide/3.contributing.md


title: Contributing

Contributing

We're really excited that you're interested in contributing to Elk! Before submitting your contribution, please read through the following guide.

Local Setup

Clone the repository and run on the root folder:

bash
pnpm i
pnpm run dev

Warning: you will need corepack enabled, check out the Elk Contributing Guide for a detailed guide on how to set up the project locally.

We recommend installing ni, that will use the right package manager in each of your projects. If ni is installed, you can instead run:

bash
ni
nr dev

Testing

Elk uses Vitest. You can run the test suite with:

bash
nr test

Translation status

Stack

  • Vite - Next Generation Frontend Tooling
  • Nuxt - The Intuitive Web Framework
  • Vue - The Progressive JavaScript Framework
  • VueUse - Collection of Vue Composition Utilities
  • Pinia - The Vue Store that you will enjoy using
  • Vue Macros - More macros and syntax sugar for Vue
  • UnoCSS - The instant on-demand atomic CSS engine
  • Iconify - Iconify icon sets in JSON format
  • Masto.js - Mastodon API client in TypeScript
  • shiki - A beautiful yet powerful syntax highlighter
  • vite-plugin-pwa - Prompt for update, Web Push Notifications and Web Share Target API

File: docs/content/1.guide/4.sponsoring.md


title: Sponsoring

Sponsoring

If you're enjoying the app, consider sponsoring our team:

We would also appreciate sponsoring other contributors to the Elk project. If someone helps you solve an issue or implement a feature you wanted, supporting them would help make this project and OS more sustainable.


File: docs/content/2.deployment/1.netlify.md


title: Netlify and Cloudflare

Want to host Elk for your Mastodon instance? You came to the right place!

For this guide we're going to use Netlify for hosting the app, and Cloudflare for key value storage. Both of which can be used on their free tiers if your instance is small.

Forking Elk

In order to use Netlify with Elk, we'll need to fork the Elk repo.

Fork the repository from https://github.com/elk-zone/elk. Make sure you deselect "Copy the main branch only" if you want to use the stable release branch.

Importing the Elk repo into Netlify

On the main page of your Netlify dashboard, press the "Import from GitHub" button. Point it to your Elk fork.

On the third page with Site settings, change the "Branch to deploy" to release if you wish. Press "Deploy site".

That's one step done! Keep the tab open while we hop over to CloudFlare for a bit.

Setting up CloudFlare Workers KV

From your CloudFlare dashboard, open "Workers". If this is your first time opening this tab, CloudFlare will ask you to set up a free custom Cloudflare Workers subdomain. Follow the instructions.

Go to "KV" and create a new namespace.

Then go to "Overview" and click on API tokens. We want to create an API token that will let Elk modify our newly made Worker. Click on "Create token" and then in the Custom token section click "Get started".

The only permission that we'll need is to edit the Workers KV Storage.

Save the newly made token in a safe spot. Keep the tab open while we'll configure the environment variables on Netlify.

Setting the environment variables on Netlify

On your project page, go to "Site settings", and open the "Environment variables" section.

There are 5 environment variables to add.

Environment variable What it is
NUXT_CLOUDFLARE_ACCOUNT_ID This is your CloudFlare Account ID. You can find it in "Workers > Overview".
NUXT_CLOUDFLARE_API_TOKEN Put your CloudFlare API token here.
NUXT_CLOUDFLARE_NAMESPACE_ID This is your CloudFlare KV Namespace ID. You can find it in "Workers > KV".
NUXT_STORAGE_DRIVER Because we're using CloudFlare, we'll need to set this to cloudflare.
NUXT_PUBLIC_DEFAULT_SERVER This is the address of the Mastodon instance that will show up when a user visits your Elk deployment and is not logged in. If you don't make that variable, it will point to m.webtoo.ls by default.
NUXT_PUBLIC_SINGLE_INSTANCE If enabled it will disable signing in to servers other than the server specified in NUXT_PUBLIC_DEFAULT_SERVER
NUXT_PUBLIC_PRIVACY_POLICY_URL This is the URL to a web page with information on your privacy policy.

That's it! All that's left to do is...

Deploy Elk!

On your project page open the Deploys tab, click on "Trigger deploy" and "Deploy site". In a few minutes Elk should be up and running!

Use a custom domain

If you want to use a custom domain, go to "Domain settings" on your Netlify project page, and press "Add custom domain". If your domain is not bought from Netlify, it will ask you to add a CNAME record. Do that.

Once the custom domain is added, you'll need to add an SSL/TLS certificate. At the bottom of the page press "Verify DNS configuration" and if it succeeds, press "Provision certificate". If that fails, you may need to wait some time until your DNS propagates.

And that's it! Enjoy your instance's Elk!


File: docs/content/80.pwa.md


title: Progressive Web App

PWA

Elk provides a PWA (Progressive Web App) that can be installed on your desktop/device. This allows you to use Elk as a native app on your device, and it will work offline.

The main goal of the PWA is to provide a native app experience on mobile devices with Web Push Notifications and Web Share Target API capabilities.

Web Share Target will allow you to share content from other apps to Elk in mobile browsers.

Mobile Support

Some mobile browsers will allow you to install the PWA as a native app, and some others will only allow you to add the PWA to your home screen.

If you're using a mobile browser that supports the PWA installation, you will see a banner at the bottom of the screen with the option to install the PWA.

If the browser also supports beforeinstallprompt event, ElK will show a prompt (on the right aside on wide screens, or at top on small screens) to allow you to install the PWA directly.

If the browser doesn't support the PWA installation, check following entries:

Safari iOS

Right now, you cannot use Web Push Notifications on Safari mobile browsers, since it doesn't support the Web Push API yet at operating system level.

You can check the status of the Push API on Safari mobile browsers on this page.

Visit also this site to check the status of PWA Capabilities on Safari mobile browsers.

To install a Progressive Web App (PWA) on Safari, follow these steps:

  • Tap the "Share" icon at the bottom of the screen.
  • Scroll down and tap "Add to Home Screen".
  • Customize the name of the app (if desired) and tap "Add".
  • The PWA should now appear on your home screen.

Other browsers on iOS

Browsers on iOS other than Safari (like Chrome) are very limited on PWA functionalities. Besides Web Push Notifications (like in Safari) not even PWA installation is supported.

If you are using one of these browsers and want to add Elk to your homescreen, you will have to use Safari and follow the instructions above.

Firefox

To install a Progressive Web App (PWA) on Firefox, follow these steps:

  • Look for the install button or icon, usually located in the address bar or in a prompt that appears on the screen.
  • Click on the install button or icon and follow the prompts to complete the installation.
  • If you don't see an install button or icon, you can look for the PWA in the Firefox menu. Click on the three horizontal lines in the top/bottom right corner of the browser window to open the menu, then click on "Install" option.

Chromium based browsers

To install a Progressive Web App (PWA) on Chromium based browsers, such as Google Chrome, Microsoft Edge, or Brave, follow these steps:

  • Click on the menu button (three vertical dots) at the top right corner of the screen.
  • Select "Install Elk as app" or "Install Elk to Home screen".
  • Customize the name of the app (if desired) and click "Install" or "Add".
  • The PWA should now appear on your device's home screen or in your app drawer.

FAQ

This FAQ is related to the PWA application on Elk, if you can't find the answer to your problem here, you can file an issue on Elk's repository in GitHub.

Could not subscribe to push notifications

In Elk application, you can only have one push subscription per backend server, so if you have already subscribed to push notifications in another account with different backend, you will not be able to subscribe to push notifications. If that's the case, you will need to switch to the account which is subscribed to push notifications and unsubscribe it.

This is a limitation of any browser, and it's not related only to Elk application.

If you deleted any account from your backend with push notification subscription enabled in Elk, you will need to remove the push notification subscriptions from your browser:

  • Chrome - Web and Android.
  • Firefox:
    • Open settings
    • Click on "Privacy & Security" menu entry
    • Scroll down in the page and locate "Permissions > Notifications"
    • Click on "Configuration" button
    • Locate "Elk" website in the list and select it, then click on "Remove website" button
  • Safari (WIP)

Permission denied: enable notifications in your browser

Before enabled push notifications in your browser, you need to enable notifications, Elk will instruct the browser to show a notification permission prompt.

If you cannot see the notification permission prompt, you will need to remove push notification subscriptions, check previous entry.

Your browser supports Web Push Notifications, but does not seem to implement the VAPID protocol.

If you're receiving this error, it means that either your browser doesn't support the VAPID protocol, or something is preventing the VAPID protocol from working in your browser. The VAPID protocol requires the clock to be set correctly on your computer or device, since this is used for certficate checks. Check that your clock is set to the correct date, time and timezone. After setting it correctly, restart your browser and try again. If it is set correctly, and you still receive this message, then your browser doesn't support the VAPID protocol and you will not be able to receive push notifications.

In Brave Browser, you will need to allow "Use Google Services for Push Messaging" in "Settings" > "Privacy and security".

There is nothing we can do to fix this, you will need to use a browser that supports the VAPID protocol: Chrome, Brave, Edge, Safari, Firefox and Vivaldi.

Install Elk button not working

There are browsers that allows applications to provide a custom PWA installation prompt, but there are also browsers with that behavior broken, for example Arc browser.

There is nothing we can do to fix this problem, you will need to check browser documentation to install the PWA.

PWA Configuration in Elk project

By default, Elk will enable the PWA integration, but can be disabled by setting VITE_DEV_PWA to false in your .env file.

You can find the configuration options for the PWA in the config/pwa.ts module.

PWA Web Manifest

Right now, there is no support for web manifest internationalization and theme color in any browser, we're using a custom module to generate web manifests for theme color and language variants.

Elk will generate 2 web manifests per locale, one for light theme and one for dark theme.

You can check web manifest generation on modules/pwa/i18n.ts module.

PWA Icons

Elk's favicon and PWA icons are generated from Elk's SVG Logo via custom script, using sharp and sharp-ico libraries:

  • favicon.ico: transparent 64x64 32-bits icon
  • pwa-64x64.png: transparent 64x64 8-bits icon (optimized from 32-bits color)
  • pwa-192x192.png: transparent 192x192 8-bits icon (optimized from 32-bits color)
  • pwa-512x512.png: transparent 512x512 8-bits icon (optimized from 32-bit color)
  • maskable-icon.png: white background 512x512 8-bits icon (optimized from 32-bits color)
  • apple-touch-icon.png: white background 180x180 8-bits icon (optimized from 32-bits color)

PWA UI Components

Elk will provide a set of UI components to allow you to customize the PWA installation prompt on browsers with beforeinstallprompt support.

You can find the PWA installation prompt in the PwaInstallPrompt component: will be shown on the right aside on wide screens, or at top on small screens.

Elk is using prompt for update strategy, so the PWA prompt for update will be shown only if there is a new version of Elk available.

On small screens, the PWA prompt for update will be shown as a button on the head, you can find it in PwaBadge component.

On wide screens, the PWA prompt for update will be shown as a prompt on the right aside, you can find it in PwaPrompt component.

PWA prompt for update will take preference over PWA installation prompt, so if there is a new version of Elk available, the PWA prompt for update will be shown instead of the PWA installation prompt.

All previous UI components don't have any logic, all them will use the logic provided by the PWA plugin.

Service Worker

You can find Elk custom service worker in service-worker folder, it provides:

Push Notifications Subscription Logic

Elk will allow you to send push notifications to your users, you can find the logic for Web Push Notifications subscription composables/push-notifications folder.

There is a limitation on browsers about registering multiple Web Push Notifications: you can only subscribe to one push service per browser per application: trying to register multiple push subscriptions will be treated as spam by the browser.

If you try to register multiple push subscriptions, the browser will throw an error, and you will need to unregister the previous push subscription before registering a new one.

Debugging PWA in development

To debug the PWA in development, you will need to run dev:pwa or dev:mocked:pwa script.

Running one of previous scripts will start a development server with the PWA enabled: you can review the web manifests and debug the service worker in your browser, use any Chromium based browser, since we're registering the service worker using type: 'module'.

You can debug Web Push Notifications in desktop and mobile browser and Web Share Target in your mobile device, using the same URL as the development server.

Right now, we can only debug on Android Chrome mobile browsers:

  • Web Push Notifications: you don't need to install de PWA, just enable the notifications in the browser on notifications page or web push notifications settings page.
  • Web Share Target: you need to install the PWA, and then you can share content from other apps to Elk.

Debugging PWA in mobile browsers

To debug the PWA service worker in your mobile browser, you will need to:

  1. Enable development options in your Android device:
  • Go to "Settings" on your device.
  • Scroll down to "About phone" and tap it.
  • Locate the "Build number" and tap it repeatedly (usually 7 times) until you see a message saying that you have enabled developer options.
  • Go back to "Settings" and you should now see "Developer options" listed.
  • Tap on "Developer options" and you can enable various settings such as USB debugging, mock locations, and more.
  1. Connect your Android device to your computer using a USB cable.
  2. Enable USB debugging in your Android device:
  • Go to "Settings" on your device.
  • Scroll down to "Developer options" and tap it.
  • Enable "USB debugging".
  • Confirm the prompt on your device to allow USB debugging.
  • Open Chrome/Edge browser in your device.
  1. Open Chrome on your computer and go to chrome://inspect/#devices.
  • Your device should be listed in the "Remote Target" section after a few seconds (if not, open Chrome/Edge and navigate to any page).
  • Click the "Port forwarding..." button and type "5314" into the "Port" input and "localhost:5314" into the "IP address and port" input, then press "Done".
  • Enter http://localhost:5314 in the "Open tab with url" input and click the "Open" button.
  • Click on the "Inspect" button to open the DevTools.
  1. Remember to remove the service worker from your device browser using dev tools once you finish testing the service worker:
  • Go to Application > Storage, you should check following checkboxes:
    • Application: [x] Unregister service worker
    • Storage: [x] Local and session storage [x] IndexedDB
    • Cache: [x] Cache storage and [x] Application cache
  • Click on Clear site data button
  • Go to Application > Service Workers and check the current service worker is missing or has the status deleted or reduntant.
  1. Disable port forwarding: open the "Port forwarding..." modal again on the chrome://inspect/#devices page and either uncheck the "Enable port forwarding" option or remove the entry from the list and click "Done".

When adding your application to the related_applications PWA web manifest property, you will need some info about them.

Microsoft Store

Elk is available on Microsoft Store, you can find it in the following url: Elk.

If you want to add your app published in the Microsoft Store as a related application, check the following link: https://learn.microsoft.com/en-us/mem/configmgr/protect/deploy-use/find-a-pfn-for-per-app-vpn#find-a-pfn-if-the-app-is-not-installed-on-a-computer.

To add your application to the related application entry:

From the previous url, you will get a json file as response:

json
{
  "packageFamilyName": "53213ElkTeam.Elk_6x2f3wfg7gnst",
  "packageIdentityName": "53213ElkTeam.Elk",
  "windowsPhoneLegacyId": "cf793b8f-863a-45cd-936c-11519a995096",
  "publisherCertificateName": "CN=B976409D-CB14-4908-A1DF-47FAA5352A5B"
}

Use the packageFamilyName value as the id in your related_applications entry, for Elk results in (replace 9PNZMMXQHQZ5 with your Store ID in the url entry):

json
{
  "related_applications": [{
    "platform": "windows",
    "url": "https://www.microsoft.com/store/apps/9PNZMMXQHQZ5",
    "id": "53213ElkTeam.Elk_6x2f3wfg7gnst"
  }]
}

File: docs/content/99.privacy.md


title: Privacy Policy

Privacy

Last updated January 27, 2023

This privacy notice for Elk describes how we handle your information when you:

::callout{type="warning"}
Elk is open source and other websites that link to this privacy notice may not be affiliated with Elk or bound by this policy.
::

Information

We do not collect or process your personal or sensitive information.

The only information retained by Elk when you use it is the host name of your Mastodon instance, which we need in order to log you in to that instance.

We use two third-party providers to provide server and content delivery network (CDN) capacity. They each have their own privacy policies which you can read: Cloudflare and Netlify.

We use aggregated information from these third-party providers to let us know about traffic and visits to Elk.

Tracking

We do not use tracking technologies (for example, cookies). We store information about your user interface preferences in your local browser storage.

Updates

We will update this notice as necessary to stay compliant with relevant laws.

When we update this privacy notice, the updated version will be indicated by a new 'Revised' date. The updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.

Contact

If you have questions or comments about this notice, you may raise an issue at https://github.com/elk-zone/elk.


File: docs/README.md

Welcome to the Elk Docs

The documentation site publishes to https://docs.elk.zone.
We use Docus as the site generator and deploy through Netlify.

Quickstart

Prerequisites

  • GitHub account
  • Git installed on your machine
  • Node >14.18 installed
    • Use node -v to see which version you have installed.
    • Use nvm install node to upgrade to the latest version.
    • Refer to the nvm docs for information on installing nvm.
  • pnpm installed

Install and Preview

  1. Fork the Elk GitHub project into your own account
  2. Clone your fork to your local machine
  3. From your terminal, cd to the directory you cloned into
  4. cd docs to enter the docs folder
  5. Run npm install
    Note: Run this from the project's docs folder, not the root of the repository on your machine!
  6. Run npm run dev to launch a preview
  7. Visit localhost:3000/ to see a live preview of the docs

Contributing

When you are ready to submit work back to the main Elk repo, create a PR.

  1. If it has been a bit, synchronize your fork with the upstream repo on GitHub.
  2. Do your work in a branch on your fork
    Use git checkout -b branchNameToUse to create a working branch separate from main.
  3. Do your work in your preferred editor
  4. Commit changes often and write meaningful commits
  5. Push the changes from your local machine to your fork on GitHub
  6. Go to your fork of the Elk project in your GitHub account
  7. Select the Pull Request tab
  8. Select New Pull Request
  9. Confirm the repo/branches to compare
  • Base repo should be elk-zone/elk
  • base branch should be main
  • Head repository should be your fork
  • Compare branch should be your working branch you want to submit
    If you don't see four drop-downs, be sure you are comparing across forks.
  1. Add a description of the changes your request makes
  2. Select Add Pull Request

Other team members will review your PR and make comments or suggestions through the PR.
You can continue making additional changes and/or apply feedback by making additional commits to the branch on your fork.
ALWAYS WORK IN YOUR FORK/BRANCH.

Writing

Tips

  • Docs are in the docs/content folder
  • Write in standard markdown
  • Refer to the Docus writing pages guide
  • Docus provides additional components to extend basic markdown

Avoid screenshots until Elk reaches a stable release.

Standards

Write in American English using spelling as found in Merriam-Webster.
Translation and localization will be handled separately as/when availability or necessity allow.

Use semantic linefeeds with no more than one sentence per line.
To create paragraphs, use a blank line.

There are no house style rules currently.
When we add any, they will be found in this document.

Style Guides

Use the first guide that mentions a usable standard from the order below:

  1. Refer to the U.S. Government's Federal Plain Language Guidelines as a base standard.
  2. For user interface, device, and other technical guidance, refer to Google's Developer Style Guide.
  3. As a secondary reference to the Google guide, refer to Microsoft's Style Guide, then the Chicago Manual of Style, 17th Edition.

We use Merriam-Webster as the standard dictionary for spelling.

Images

Place image files in the /docs/public/images folder.
You can create subfolders to organize the images.

To add an image to a doc, use standard markdown with alt text:

md
[](URL.for.hyperlink)
[](https://stackblitz.com/)

In-house Styles

None yet defined