pinafore/README.md

95 lines
2.1 KiB
Markdown
Raw Normal View History

2018-01-19 06:29:12 +01:00
# Pinafore
2018-01-07 00:51:25 +01:00
2018-02-18 23:38:10 +01:00
An alternative web client for [Mastodon](https://joinmastodon.org]).
2018-03-11 20:55:46 +01:00
## 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
2018-03-21 16:39:06 +01:00
- Offline search
2018-03-11 20:55:46 +01:00
### 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
2018-02-18 23:38:10 +01:00
## Building
npm install
npm run build
PORT=4002 npm start
2018-03-11 20:55:46 +01:00
Now it's running at `localhost:4002`.
2018-02-18 23:38:10 +01:00
## Development
npm run dev
2018-03-11 20:55:46 +01:00
Now it's running at `localhost:4002`.
2018-02-18 23:38:10 +01:00
## 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
2018-02-20 03:24:22 +01:00
3\. Run a debuggable TestCafé instance:
2018-02-18 23:38:10 +01:00
2018-02-20 03:36:54 +01:00
npx testcafe --hostname localhost --skip-js-errors --debug-mode firefox tests/spec
2018-02-18 23:38:10 +01:00
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
2018-02-20 03:24:22 +01:00
Run integration tests:
2018-02-18 23:38:10 +01:00
2018-02-20 03:25:59 +01:00
npm test
2018-02-20 03:36:54 +01:00
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
2018-02-20 03:25:59 +01:00
Automatically fix most linting issues:
2018-03-11 20:55:46 +01:00
npx standard --fix