A minimalistic opinionated Mastodon web client
Find a file
2022-12-20 09:27:59 +08:00
.github/workflows GitHub action to auto-create PR to merge main to production 2022-12-14 23:48:28 +08:00
compose New feature: poll 2022-12-14 21:48:17 +08:00
design Updated design file 2022-12-19 17:38:28 +08:00
public It's time for MVP PWA/ServiceWorker 2022-12-19 14:51:56 +08:00
scripts Initial commit 2022-12-10 17:14:48 +08:00
src Possible quick fix for menu popovers not working on iOS 2022-12-20 09:27:59 +08:00
.env Initial commit 2022-12-10 17:14:48 +08:00
.gitignore Initial commit 2022-12-10 17:14:48 +08:00
.prettierrc New feature: pop-out compose window 2022-12-13 20:42:09 +08:00
index.html viewport-fit=cover is needed for safe area CSS to work 2022-12-20 00:32:45 +08:00
package-lock.json It's time for MVP PWA/ServiceWorker 2022-12-19 14:51:56 +08:00
package.json It's time for MVP PWA/ServiceWorker 2022-12-19 14:51:56 +08:00
README.md Update logo in README 2022-12-19 15:55:42 +08:00
vite.config.js It's time for MVP PWA/ServiceWorker 2022-12-19 14:51:56 +08:00

Phanpy

Minimalistic opinionated Mastodon web client.


This is an alternative web client for Mastodon.

🔗 Production: https://phanpy.social (production branch)
🔗 Development: https://dev.phanpy.social (main branch, may break more often)

Everything is designed and engineered for my own use case, following my taste and vision. This is a personal side project for me to learn about Mastodon and experiment with new UI/UX ideas.

🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧

🐘 This is an early ALPHA project. Many features are missing, many bugs are present. Please report issues as detailed as possible. Thanks 🙏

🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧

Features

  • 👪 Multiple accounts
  • 🪟 Compose window pop-out/in
  • 🌗 Light/dark/auto theme
  • 🔔 Grouped notifications

Design decisions

  • Status actions (reply, boost, favourite, bookmark, etc) are hidden by default.
    They only appear in individual status page. This is to reduce clutter and distraction. It may result in lower engagement, but we're not chasing numbers here.
  • Boost is represented with the rocket icon.
    The green double arrow icon (retweet for Twitter) doesn't look right for the term "boost". Green rocket looks weird, so I use purple.
  • Short usernames (@username) are displayed in timelines, instead of the full account username (@username@instance).
    Despite the guideline mentioned that "Decentralization must be transparent to the user", I don't think we should shove it to the face every single time. There are also some screen-reader-related accessibility concerns with the full username, though this web app is unfortunately not accessible yet.
  • Hash-based URLs.
    This web app is not meant to be a full-fledged replacement to Mastodon's existing front-end. There's no SEO, database, serverless or any long-running servers. I could be wrong one day.

Development

Prerequisites: Node.js 18+

  • npm install - Install dependencies
  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview the production build
  • npm run fetch-instances - Fetch instances list from instances.social, save it to src/data/instances.json
    • requires .env.dev file with INSTANCES_SOCIAL_SECRET_TOKEN variable set

Tech stack

Some of these may change in the future. The front-end world is ever-changing.

Mascot

Phanpy is a Ground-type Pokémon.

Maintainers

Backstory

I am one of the earliest users of Twitter. Twitter was launched on 15 July 2006. I joined on December 2006 and my first tweet was posted on 18 December 2006.

I know how early Twitter looks like. It was fun.

Back then, I made a Twitter clone called "Twig" written in Python and Google App Engine. I almost made my own Twitter desktop client written in Appcelerator Titanium. I gave one of my best talks about the Twitter client in a mini-conference. I built this thing called "Twitter Columns", a web app that shows your list of followings, your followings' followings, your followers, your followers' followers and so on. In 2009, I wrote a blog post titled "How I got started with Twitter". I created two themes for DestroyTwitter (a desktop client made with Adobe Air by Jonnie Hallman) and one of them is called "Vimeo". In 2013, I wrote my own tweets backup site with a front-end to view my tweets and a CouchDB backend to store them.

It's been more than 15 years.

And here I am. Building a Mastodon web client.

Alternative clients

License

MIT.