Alternative frontend for Akkoma
Find a file
2022-12-24 15:12:48 +01:00
.github/workflows Update webpack.yml 2022-11-11 13:26:33 +01:00
.gitlab Add default MR template 2022-08-08 16:02:25 -04:00
.vscode Snippets: use default export for component 2022-07-25 10:58:37 -05:00
app [FIX] Fix some french translations about scheduled posts (#111) 2022-12-24 15:12:48 +01:00
custom Allow custom module imports 2022-05-09 17:57:15 -05:00
docs Update customization.md 2022-12-06 10:15:08 +01:00
installation Mastodon nginx: remove try_files from @mastodon-packs 2022-06-22 13:44:27 -05:00
jest Upgrade Jest to v28 2022-07-05 11:30:08 -05:00
tailwind gradient-purple, gradient-blue --> gradient-start, gradient-end 2022-05-07 15:23:43 -05:00
types/redux-immutable FIX ROOT STATE TYPE!!!!! 2022-07-06 15:54:30 -05:00
webpack Release Goodcook raccoon (#87) 2022-12-01 19:45:43 +01:00
.editorconfig Add .editorconfig 2020-04-11 15:02:30 -05:00
.env.example Patron updates 2020-06-30 17:33:21 -05:00
.eslintignore eslintignore: /custom/** 2022-05-16 10:08:50 -05:00
.eslintrc.js eslint: disable consistent-return 2022-08-11 15:28:57 -05:00
.gitignore Produce a junit.xml during test:coverage 2022-06-13 13:26:51 -05:00
.gitlab-ci.yml GitLab CI: try jest --runInBand 2022-07-06 11:23:35 -05:00
.lintstagedrc.json Revert "Merge branch 'revert-f59d977a' into 'develop'" 2022-02-27 00:13:35 +00:00
.stylelintrc.json Start adding dark mode 2022-03-23 19:18:37 -05:00
.tool-versions Upgrade to Node 18 2022-06-01 13:22:49 -05:00
admin-fe.png Release Hot Snowleopard (#58) 2022-11-11 16:40:51 +01:00
admin-fe2.png Release Hot Snowleopard (#58) 2022-11-11 16:40:51 +01:00
babel.config.js eslint: indent switch statements 2022-05-11 16:06:35 -05:00
CHANGELOG.md Bump version to v1.3.0, update CHANGELOG.md 2021-07-02 15:24:59 -05:00
COFE_OF_CONDUCT.md Replace code of conduct with cofe of conduct 2020-05-29 00:57:07 -05:00
dangerfile.ts Danger: modified --> edited 2022-08-05 11:16:33 -05:00
jest.config.js Update tests for Jest v28, apply uuid hack 2022-07-09 14:25:19 -05:00
jsdoc.conf.js JSDoc scaffolding 2021-09-05 14:49:38 -05:00
LICENSE Add LICENSE and README 2020-03-28 16:06:29 -05:00
package.json Maj version name 2022-12-16 23:41:10 +01:00
postcss.config.js Add Tailwind 2022-03-19 13:24:16 -05:00
README.md Update README.md 2022-12-02 16:36:45 +01:00
renovate.json Renovate: add GitHub access token for release notes 2020-10-05 15:51:58 -05:00
tailwind.config.js Revert unwanted design changes 2022-08-22 23:28:17 +02:00
tsconfig.json Update tsconfig.json 2022-11-10 00:00:37 +01:00
ui-dark.png [ADD] Screenshots to the readme (#35) 2022-08-27 16:45:16 +02:00
ui-light.png [ADD] Screenshots to the readme (#35) 2022-08-27 16:45:16 +02:00
ui-mixed.png [ADD] Screenshots to the readme (#35) 2022-08-27 16:45:16 +02:00
webpack.config.js eslint: indent switch statements 2022-05-11 16:06:35 -05:00
yarn.lock Add react-query 2022-08-01 20:13:02 -05:00

Mangane FE

UI Mixed UI Dark UI Light

Mangane FE is a frontend for Pleroma with a focus on custom branding and ease of use.

🚀 Deploy on Pleroma/Akkoma

Installing Mangane FE on an existing Pleroma server is easy. Log in your server and follow those instructions depending on your configuration.

Download

First you need to download mangane on your server.

OTP

/opt/pleroma/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip

Note: The pleroma_ctl path may vary on your system

Mix / Source

mix pleroma.frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip

Admin-fe with database configuration enabled

Just fill the form at Frontend/Available like this.

admin-fe

Activation

Then you need to activate the frontend so it will be available to your users.

Config.exs

Edit your configuration files to add/edit the config :pleroma, :frontends section like this

config :pleroma, :frontends,
  primary: %{
    "name" => "mangane",
    "ref" => "dist"
  }
Admin-fe with database configuration enabled

Just fill the form at Frontend/frontends/Primary like this.

admin-fe

That's it! 🎉 Mangane FE is installed. The change will take effect immediately, just refresh your browser tab. You may need to restart pleroma/akkoma for the change to take effect.

🐘 Deploy on Mastodon

See Installing Mangane over Mastodon.

How does it work?

Mangane FE is a single-page application (SPA) that runs entirely in the browser with JavaScript.

It has a single HTML file, index.html, responsible only for loading the required JavaScript and CSS. It interacts with the backend through XMLHttpRequest (XHR).

Here is a simplified example with Nginx:

location /api {
  proxy_pass http://backend;
}

location / {
  root /opt/soapbox;
  try_files $uri index.html;
}

(See mastodon.conf for a full example.)

Soapbox incorporates much of the Mastodon API, Pleroma API, and more. It detects features supported by the backend to provide the right experience for the backend.

Running locally

To get it running, just clone the repo:

git clone https://github.com/BDX-town/Mangane.git
cd Mangane

Ensure that Node.js and Yarn are installed, then install dependencies:

yarn

Finally, run the dev server:

yarn dev

That's it! 🎉

It will serve at http://localhost:3036 by default.

You should see an input box - just enter the domain name of your instance to log in.

Tip: you can even enter a local instance like http://localhost:3000!

Troubleshooting: ERROR: NODE_ENV must be set

Create a .env file if you haven't already.

cp .env.example .env

And ensure that it contains NODE_ENV=development. Try again.

Developing against a live backend

You can also run Mangane FE locally with a live production server as the backend.

Note: Whether or not this works depends on your production server. It does not seem to work with Cloudflare or VanwaNet.

To do so, just copy the env file:

Local Dev Configuration

The following configuration variables are supported supported in local development. Edit .env to set them.

All configuration is optional, except NODE_ENV.

NODE_ENV

The Node environment. Mangane FE checks for the following options:

  • development - What you should use while developing Mangane FE.
  • production - Use when compiling to deploy to a live server.
  • test - Use when running automated tests.

BACKEND_URL

URL to the backend server. Can be http or https, and can include a port. For https, be sure to also set PROXY_HTTPS_INSECURE=true.

Default: http://localhost:4000

PROXY_HTTPS_INSECURE

Allows using an HTTPS backend if set to true.

This is needed if BACKEND_URL is set to an https:// value. More info.

Default: false

Yarn Commands

The following commands are supported. You must set NODE_ENV to use these commands. To do so, you can add the following line to your .env file:

NODE_ENV=development

Local dev server

  • yarn dev - Run the local dev server.

Building

  • yarn build - Compile without a dev server, into /static directory.

Translations

  • yarn manage:translations - Normalizes translation files. Should always be run after editing i18n strings.

Tests

  • yarn test:all - Runs all tests and linters.

  • yarn test - Runs Jest for frontend unit tests.

  • yarn lint - Runs all linters.

  • yarn lint:js - Runs only JavaScript linter.

  • yarn lint:sass - Runs only SASS linter.

Contributing

We welcome contributions to this project. To contribute, first review the Contributing doc

Additional supporting documents include:

Customization

Mangane supports customization of the user interface, to allow per instance branding and other features. Current customization features include:

  • Instance name
  • Site logo
  • Favicon
  • About page
  • Terms of Service page
  • Privacy Policy page
  • Copyright Policy (DMCA) page
  • Promo panel list items, e.g. blog site link
  • Mangane extensions, e.g. Patron module
  • Default settings, e.g. default theme

Customization details can be found in the Customization doc

License & Credits

Mangane FE is based on Soapbox's frontend.

Mangane FE is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Mangane FE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with Mangane FE. If not, see https://www.gnu.org/licenses/.