Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Xyphyn/photon

A replacement for lemmy-ui with more features, a better design, and more customizability.
https://github.com/Xyphyn/photon

Last synced: 25 days ago
JSON representation

A replacement for lemmy-ui with more features, a better design, and more customizability.

Awesome Lists containing this project

README

        

# Photon

Jump to:

- [Self-hosting](#self-hosting)
- [Public Instances](#public-instances)

A better, more intuitive way to use Lemmy, with a cleaner UI, more features, and snappier usage.

It is designed for all features to have an appealing and intuitive design, while being fast.

## Screenshots

![desktop-default-dark](https://github.com/user-attachments/assets/4abda138-427a-48b3-8741-0f3ca3510fd0)
![desktop-default-light](https://github.com/user-attachments/assets/8356d7eb-16c6-4bd8-ba9a-6d227370ddb0)

## Self-hosting

Put Photon on your own domain for easier onboarding.

### Running from image

```sh
# Use the env var PUBLIC_INSTANCE_URL to set the default instance URL.
docker run -p 8080:3000 -e PUBLIC_INSTANCE_URL=example.com ghcr.io/xyphyn/photon:latest
```

### Running from repo

**More unstable but latest features**

Clone the repo:

```sh
git clone https://github.com/Xyphyn/photon && cd photon
```

and run the docker container:

```sh
docker build -t photon .

# Use the env var PUBLIC_INSTANCE_URL to set the default instance URL.
docker run -p 8080:3000 -it photon:latest
```

There you go, you now have an instance of Photon running.

### Configuring default settings

The most common settings you'll use are `PUBLIC_INSTANCE_URL`. Some selfhosters with `PUBLIC_SSR_ENABLED` set to true might want the instance url to be different for the server. You can use the `PUBLIC_INTERNAL_INSTANCE` variable for that.

`PUBLIC_MIGRATE_COOKIE` is useful if you want to switch Photon to your default frontend. It'll convert the logged in cookie from lemmy-ui to a Photon account. It will only work if you have `PUBLIC_INSTANCE_URL` set, and it will login with that instance.

`PUBLIC_SSR_ENABLED` will have the initial load be rendered by the server, before the client router is loaded. This can lead to a faster feeling load initally, and will allow your instance to be better indexed by search bots, and allow users with JavaScript disabled to view Photon with a basic view.

These are the most important environment variables that you can change:

| Variable | Values | Default Value |
| --------------------------- | ------------------- | -------------------------------------- |
| PUBLIC_INSTANCE_URL | URL | `lemmy.ml` |
| PUBLIC_INTERNAL_INSTANCE | URL | Value of `PUBLIC_INSTANCE_URL` |
| PUBLIC_LOCK_TO_INSTANCE | `bool` | `true` if `PUBLIC_INSTANCE_URL` is set |
| PUBLIC_FAVICON | URL | `/img/logo-background.svg |
| PUBLIC_SSR_ENABLED | `bool` | `false` |
| PUBLIC_MIGRATE_COOKIE | `bool` | `false` |
| PUBLIC_THEME | JSON | Photon's default colors |
| PUBLIC_COLORSCHEME | system\|dark\|light | system |
| PUBLIC_EXPANDABLE_IMAGES | `bool` | true |
| PUBLIC_MARK_READ_POSTS | `bool` | true |
| PUBLIC_DEFAULT_FEED_SORT | `SortType` | Active |
| PUBLIC_DEFAULT_FEED | `ListingType` | Local |
| PUBLIC_DEFAULT_COMMENT_SORT | `CommentSortType` | Hot |
| PUBLIC_HIDE_DELETED | `bool` | true |
| PUBLIC_HIDE_REMOVED | `bool` | true |
| PUBLIC_NSFW_BLUR | `bool` | true |
| PUBLIC_RANDOM_PLACEHOLDERS | `bool` | true |
| PUBLIC_REMOVE_CREDIT | `bool` | false |

There are more options available that you can see at `src/lib/settings.ts`, by looking at the `defaultSettings` object.

The values for `SortType`, `ListingType`, and `CommentSortType` are defined by the lemmy-js-client library.

#### Listing Type

https://github.com/LemmyNet/lemmy-js-client/blob/main/src/types/ListingType.ts

- All
- Local
- Subscribed
- Moderator

#### Sort Type

(case sensitive)

https://github.com/LemmyNet/lemmy-js-client/blob/main/src/types/SortType.ts

- Active
- Hot
- New
- Old
- TopDay
- TopWeek
- TopMonth
- TopAll
- MostComments
- NewComments
- TopHour
- TopSixHour
- TopTwelveHour
- TopThreeMonths
- TopSixMonths
- TopNineMonths
- TopYear

#### Comment Sort Type

https://github.com/LemmyNet/lemmy-js-client/blob/main/src/types/CommentSortType.ts
values:

- Hot
- Top
- New
- Old
- Controversial

## Public Instances

Want your instance added here? Make a GitHub issue or make a PR! (this is for general purpose Photon instances.)

[phtn.app](https://phtn.app) is the official instance and will get updates instantly.

| Instance | Location | Contact |
| --------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------- |
| [phtn.app (Official)](https://phtn.app) | 🇺🇸 US West | [[email protected]](mailto:[email protected]) |
| [ph.opnxng.com](https://ph.opnxng.com) | 🇸🇬 Singapore | [about.opnxng.com](https://about.opnxng.com) |
| [photon.thesanewriter.com](https://photon.thesanewriter.com) | 🇺🇸 US East | [[email protected]](mailto:[email protected]) |
| [p.darrennathanael.com](https://p.darrennathanael.com) | 🇮🇩 ID West | [[email protected]](mailto:[email protected]) |
| [p.lemmy.ohaa.xyz](https://p.lemmy.ohaa.xyz) | 🇦🇹 Austria | (???) |
| [~~photon.zhenyapav.com~~ (Has not updated since v1.9.2)](https://photon.zhenyapav.com) | 🇮🇸 Iceland | [[email protected]](mailto:[email protected]) |
| [~~ph.buckodr.ink~~ (Has not updated since v1.21.1)](https://ph.buckodr.ink) | 🇺🇸 US East | [[email protected]](mailto:[email protected]) |
| [phtn.ngn.tf](https://phtn.ngn.tf) | 🇹🇷 Turkey | [[email protected]](mailto:[email protected]) |
| [lm.sudovanilla.org](https://lm.sudovanilla.org) | 🇺🇸 US East | [[email protected]](mailto:[email protected]) |

## Donate

You can donate at [Buy me a Coffee](https://buymeacoffee.com/xylight)