Go to file
Nolan Lawson 7053230ac0 fix focus() being called too often 2018-03-21 00:53:52 -07:00
assets add apple touch icons 2018-03-17 00:36:37 -07:00
bin make statuses robust against duplicates, remove duplicate from test 2018-03-15 20:04:24 -07:00
fixtures implement requesting to follow someone 2018-03-14 22:32:58 -07:00
original-assets build svgs automatically 2018-01-27 12:48:22 -08:00
routes fix focus() being called too often 2018-03-21 00:53:52 -07:00
scss add muted style for image/video dialogs 2018-03-20 21:26:53 -07:00
templates add muted style for image/video dialogs 2018-03-20 21:26:53 -07:00
tests change scheduling to focus on requestIdleCallback 2018-03-20 20:28:53 -07:00
.gitignore add favorite/unfavorite feature 2018-02-24 14:49:28 -08:00
LICENSE add footer and license 2018-03-07 09:25:07 -08:00
README.md outline goals and non-goals 2018-03-11 12:55:46 -07:00
package-lock.json fix Cache-Control in sapper 2018-03-20 20:46:37 -07:00
package.json fix Cache-Control in sapper 2018-03-20 20:46:37 -07:00
server.js fix Cache-Control in sapper 2018-03-20 20:46:37 -07:00
webpack.client.config.js add lodash features we were using 2018-03-16 23:38:28 -07:00
webpack.server.config.js use standard 2018-02-08 22:29:29 -08:00

README.md

Pinafore

An alternative web client for Mastodon.

Goals and non-goals

This section lays out some high-level goals for Pinafore, as well as the goals it doesn't intend to tackle.

Goals

  • Support the most common use cases
  • Fast even on low-end phones
  • Works offline in read-only mode
  • Progressive Web App features
  • Multi-instance support
  • Support latest versions of Chrome, Edge, Firefox, and Safari
  • a11y (keyboard navigation, screen readers)

Possible future goals

  • Works as an alternative frontend self-hosted by instances
  • Ship in the Android/iOS app stores as a Cordova app
  • Support Pleroma/non-Mastodon backends
  • i18n

Non-goals

  • Supporting old browsers, proxy browsers, or text-based browsers
  • React Native / NativeScript / hybrid-native version
  • Full functionality with JavaScript disabled
  • Emoji support beyond the built-in system emoji
  • Custom emoji keyboard
  • Multi-column support
  • Keyboard shortcuts
  • Admin/moderation panel
  • Works offline in read-write mode

Building

npm install
npm run build
PORT=4002 npm start

Now it's running at localhost:4002.

Development

npm run dev

Now it's running at localhost:4002.

Testing in development mode

In separate terminals:

1. Run a Mastodon dev server (note this destroys the mastodon_development database and inserts canned data):

npm run run-mastodon

2. Run a Pinafore dev server:

npm run dev

3. Run a debuggable TestCafé instance:

npx testcafe --hostname localhost --skip-js-errors --debug-mode firefox tests/spec

If you want to export the current data in the Mastodon instance as canned data, so that it can be loaded later:

npm run backup-mastodon-data

Testing

Lint:

npm run lint

Run integration tests:

npm test

Run tests for a particular browser:

BROWSER=chrome npm run test-browser
BROWSER=chrome:headless npm run test-browser
BROWSER=firefox npm run test-browser
BROWSER=firefox:headless npm run test-browser
BROWSER=safari npm run test-browser
BROWSER=edge npm run test-browser

Automatically fix most linting issues:

npx standard --fix