lemmy-ui is a free, open source social networking project written in CSS and released under AGPL-3.0. It has 1,008 GitHub stars, 379 forks and 55 open issues, and was last pushed 4 days ago. On this registry it ranks #34 of 44 tracked projects in Social Networking, with 5 head-to-head comparisons available.

What is lemmy-ui?

lemmy-ui is the official web app for Lemmy — the federated link aggregator and forum of the Fediverse — and it is built for the people who run and use Lemmy servers rather than for anyone seeking a centrally hosted social network.

What it is

lemmy-ui is the front-end web application for Lemmy, a self-hostable, decentralized link aggregator and discussion forum. It lives in the LemmyNet organisation alongside the backend it talks to, and it is written in CSS and built on the Inferno framework. A Lemmy instance is a server that hosts forums, called communities, where people subscribe to topics, post links and discussions, then vote and comment on them. Because Lemmy servers are federated in the manner of email, a user registered on one server can subscribe to communities on any other server and hold discussions with users registered elsewhere, all within a single connected universe.

The concrete problem it solves is the presentation layer of that federation. Lemmy splits into a backend service and this web interface, and lemmy-ui is the part that renders the site in the browser and connects to the backend. For an operator, that means the interface is a separately deployable component that can be pointed at any Lemmy backend, configured independently, and themed with custom CSS. It replaces the need for a hosted, advertising-driven link aggregator under corporate control: instead of a single company mediating every community, each Lemmy server sets its own moderation policy and appoints site-wide admins and community moderators to keep out trolls.

Key capabilities

  • Runs as an isomorphic Node server, configured with LEMMY_UI_HOST (default 0.0.0.0:1234) for the IP and port it binds.
  • Connects to a Lemmy backend through LEMMY_UI_BACKEND (default localhost:8536), with a separate LEMMY_UI_BACKEND_INTERNAL for server-to-server requests and LEMMY_UI_FRONTEND for the browser-facing base URL.
  • Switches base URL protocol via the LEMMY_UI_HTTPS boolean, defaulting to false.
  • Loads additional CSS themes from LEMMY_UI_EXTRA_THEMES_FOLDER, defaulting to ./extra_themes.
  • Supports independent frontend development with LEMMY_UI_BACKEND=https://voyager.lemmy.ml pnpm dev, serving the app on http://localhost:1234.
  • Publishes community translations through the Weblate instance at weblate.join-lemmy.org.
  • Ships as a Docker image, dessalines/lemmy-ui, and is distributed under AGPL-3.0.

Who uses it and how

  • Lemmy server operators who self-host the front end alongside the backend to run their own instance.
  • Instance administrators who set site-wide moderation policy and appoint community moderators for the communities they host.
  • Frontend contributors who work against the public test instance at https://voyager.lemmy.ml or against a locally compiled Lemmy backend.
  • Translators who contribute through the project's Weblate instance.
  • Members of federated instances who subscribe to communities on other servers and hold discussions across server boundaries.

Getting started

Development requires pnpm; the README flow is git clone https://github.com/LemmyNet/lemmy-ui.git --recursive, then pnpm install, then LEMMY_UI_BACKEND=https://voyager.lemmy.ml pnpm dev, opening http://localhost:1234. The README also references the Docker image dessalines/lemmy-ui for deployment.

How it compares

The README places Lemmy alongside Reddit, Lobste.rs, and Hacker News as the sites whose experience it resembles: subscribe to forums, post links and discussions, vote, and comment. The difference it draws is architectural rather than cosmetic — Lemmy runs on servers anyone can operate, and those servers federate, so the equivalent of a subreddit can live on any instance instead of inside one company's platform. Within this registry, lemmy-ui is the official front end for that model, not an alternative client for the sites named.

When to use it — and when not to

Choose lemmy-ui if there is already a Lemmy backend to point at, because the interface does nothing on its own and expects a backend at LEMMY_UI_BACKEND, defaulting to localhost:8536. A self-hoster must operate both the Node server for the interface and the Lemmy backend behind it, including whatever the backend requires. It is a poor fit for anyone wanting an all-in-one hosted product, or unwilling to carry the obligations of an AGPL-3.0 codebase. The README excerpt is developer-oriented and its configuration table is truncated, so prospective operators should read the full documentation at join-lemmy.org rather than relying on this page alone.

project readme (upstream, from github) — read inline

GitHub tag (latest SemVer) Build Status GitHub issues Docker Pulls Translation status License GitHub stars

Lemmy UI

A link aggregator and forum for the fediverse.

Join Lemmy · Documentation · Matrix Chat · Report Bug · Request Feature · Releases · Code of Conduct

About The Project

Desktop Mobile
desktop mobile

Lemmy is similar to sites like Reddit, Lobste.rs, or Hacker News: you subscribe to forums you're interested in, post links and discussions, then vote, and comment on them. Behind the scenes, it is very different; anyone can easily run a server, and all these servers are federated (think email), and connected to the same universe, called the Fediverse.

For a link aggregator, this means a user registered on one server can subscribe to forums on any other server, and can have discussions with users registered elsewhere.

It is an easily self-hostable, decentralized alternative to Reddit and other link aggregators, outside of their corporate control and meddling.

Each Lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing.

You can find more information in the Backend Repository.

Development

You need to have pnpm installed. Then run the following:

git clone https://github.com/LemmyNet/lemmy-ui.git --recursive
cd lemmy-ui
pnpm install
LEMMY_UI_BACKEND=https://voyager.lemmy.ml pnpm dev

Finally open http://localhost:1234 in your browser. This uses the public test instance https://voyager.lemmy.ml/ as backend. For more details such as developing with a locally compiled Lemmy backend, read the documentation.

Configuration

The following environment variables can be used to configure lemmy-ui:

ENV_VAR type default description
LEMMY_UI_HOST string 0.0.0.0:1234 The IP / port that the lemmy-ui isomorphic node server is hosted at.
LEMMY_UI_FRONTEND string undefined The base url where browsers can reach the lemmy-ui server, is inferred from request headers when undefined. (Protocol is optional)
LEMMY_UI_BACKEND string localhost:8536 The base url for lemmy-ui in the browser to connect to the lemmy backend server. (Protocol is optional)
LEMMY_UI_BACKEND_INTERNAL string LEMMY_UI_BACKEND The base url for the lemmy-ui server to connect to the lemmy backend server. (Protocol is optional)
LEMMY_UI_HTTPS bool false Uses https:// as the default protocol for base urls.
LEMMY_UI_EXTRA_THEMES_FOLDER string ./extra_themes A location for additional lemmy css themes.
LEMMY_UI_DISABLE_CSP bool false Disables CSP security headers
LEMMY_UI_CUSTOM_HTML_HEADER string undefined Injects a custom script into ``.

Debugging

These environment variables are for debugging purposes and are disabled by default for production builds, but can be enabled explicitly.

ENV_VAR type default evaluation description
LEMMY_UI_ERUDA bool true runtime Enables Eruda, the console for mobile browsers. (In production Eruda partially violates the CSP, but remains useful.)
LEMMY_UI_SOURCE_MAPS bool true buildtime Gives browsers and node the ability to report accurate stack traces.
LEMMY_UI_SERVE_CSS_MAPS bool false runtime Serves .css.map files when requested. Map files are untracked, run pnpm themes:build to generate and update them.
LEMMY_UI_COMPRESSION bool true runtime Enables response body compression, useful to test on slow connections.

Credits

Icons from Feather Icons.

Code template based off of MrFoxPro's inferno-isomorphic-template.

Frequently asked questions

Is lemmy-ui free to use?

lemmy-ui is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does lemmy-ui do?

The official web app for lemmy.

What is lemmy-ui written in?

lemmy-ui is primarily written in CSS. Its source is publicly available at https://github.com/LemmyNet/lemmy-ui, and it has 1,008 GitHub stars.