···55work in progress client for bluesky & other atproto-based apps, written with vue
66& typescript.
7788+[try it here](https://bbell.vt3e.cat) - note that this may be terribly out of date!
99+i have not yet set up automated deployments.
1010+811## todo
9121013as stated previously, bluebell is _very_ work in progress and is far from feature
1114parity with the official bluesky app or other third party clients.
12151313-you can see [TODO.md](./.tangled/TODO.md) for a more detailed list of planned features
1414-& progress, i will definitely forget to update it though.
1616+at the moment, what is implemented is:
1717+1818+- oauth login
1919+- viewing feeds, interacting with posts/replies (likes, reposts, replying)
2020+- viewing profiles, following/unfollowing, viewing followers/following lists
2121+- posting incl. video & images, though i don't do any compression
2222+- smooth animations and a pretty ui!!
15231616-general roadmap: feature parity with social-app, then later integrations with
1717-other atproto applications (e.g., leaflet, stream.place, teal.fm), and other small
1818-quality of life improvements to the core experience.
2424+it's not a crazy amount but it is basically the core experience that's done.
19252026## name
21272228"blue" is NOT from bluesky i promise. i wanted a flower themed name, i also wanted
2329a pretty photo to go in the onboarding flow, and i only really had photos of bluebells,
2424-sooo bluebell it is.
3030+sooo bluebell it is. i was going to call it "scilla" at first but then realised
3131+i had no photos of scillas.
3232+3333+i personally like to shorten the name down to just bell, or bbell.
25342635also yes i realise the logo kinda looks like the wilted rose emoji. this ALSO was
2736not intentional oh my god.
+3-1
src/App.vue
···4040 return
4141 }
42424343- const wait = () => new Promise((resolve) => setTimeout(resolve, 2500))
4343+ const wait = () => new Promise((resolve) => setTimeout(resolve, 1500))
44444545 // waiting for auth
4646 // we then either determine the Next Phase - either the onboarding flow or to the shell
···7979 currentPhase.value = 'shell'
80808181 const profile = auth.profile
8282+ if (!profile) return
8383+8284 if (!profile?.pronouns) {
8385 setTimeout(() => {
8486 const dismissed = localStorage.getItem(KEYS.STATE.WOKE_DISMISSED)
···66 url: URL
77 location: string
88 subtitle?: string
99+ /** whether this provider should be prominently displayed as a login option */
1010+ default?: boolean
911 /** whether this provider should be pinned when displayed */
1012 pin?: boolean
1113 /** if the PDS has a policy on who can use what handles, blacksky, for example. */
···2527 pin: true,
2628 },
2729 {
3030+ name: 'Blacksky',
3131+ url: new URL('https://blacksky.app/'),
3232+ subtitle: 'A PDS for the black community and allies.',
3333+ location: 'US',
3434+ handlePolicy: new URL(
3535+ 'https://docs.blacksky.community/migrating-to-blacksky-pds-complete-guide#who-can-use-blacksky-services',
3636+ ),
3737+ default: true,
3838+ },
3939+ {
2840 name: 'Bluesky',
2941 url: new URL('https://bsky.social/'),
3042 location: 'US',
4343+ default: true,
3144 },
3245 {
3346 name: 'Tophhie Social',