Alle projekter

Joyn

Ét sted til hele fællesskabet: chat, arrangementer, afstemninger, tavler og filer, og hvem der er online lige nu.

Besøg getjoyn.io

Gratis op til 100 medlemmer

Hvad jeg lavede
Det hele: produktet, designet, web, iOS og Android, API'et og realtidsgatewayen
Kører på
Web, iPhone, iPad og Android, på dansk og engelsk
Målgruppe
Idrætsforeninger, kirker, foreninger, skoler, kor og frivillige grupper
Joyn på en iPad: Harbour Run Clubs forside med arrangementer, filer, personer, kanaler og grupper, omgivet af arrangementet Saturday Long Run, en chatbesked om det, en afstemning, et kort fra en tavle og antallet af medlemmer.

Lavet til dem, der holder en klub kørende.

De fleste klarer sig med en gruppechat, et delt drev, et Facebook-event og en mailingliste. Joyn samler hele fællesskabet i ét rum, giver hvert hold i det sin egen gruppe og taler dansk såvel som engelsk.

IdrætsforeningerKirkerForeningerSkoler og klasserKor og bandsFrivillige grupper

Tag en tur rundt i et Joyn-rum.

#kanaler

Kanaler til hvert emne

En kanal kan være en samtale, opslag, en opgaveliste, et ugentligt check-in eller en kanban-tavle. Samtaler har reaktioner, @-omtaler, GIF'er, afstemninger og spørgsmål, og du kan se, hvem der skriver, og hvem der er online.

Reaktioner@-omtalerGIF'erHvem der skriverHvem der er online
En chatbesked i Joyn fra Anna Holm, der spørger, hvem der er med på lørdagens langtur, med reaktioner.
#arrangementer

Arrangementer, folk faktisk dukker op til

Tilmelding med ét tryk og venteliste, når der er fuldt, tilbagevendende arrangementer, påmindelser og medarrangører. Til offentlige arrangementer kan gæster melde sig til med bare et navn og en e-mail, og det hele kan eksporteres til din egen kalender.

TilmeldingVentelisteTilbagevendendePåmindelserKalendereksport
Arrangementskortet for Saturday Long Run i Joyn: 08:00 til 10:30 ved Den Lille Havfrue, 27 kommer og 3 pladser tilbage, med knapperne Going og Not going.
#afstemninger

Afstemninger i stedet for frem og tilbage

Spørg hele klubben i en kanal eller under et arrangement, se stemmerne tikke ind, og luk afstemningen, når det er besluttet.

I kanalerI arrangementerLukker til tiden
En afstemning i Joyn om, hvilken søndag der passer, hvor søndag den 15. november fører med 58 procent.
#tavler

Tavler, opgaver og check-ins

Kanban-tavler med en kommentartråd på hvert kort, opgavelister og check-ins, der stiller det samme spørgsmål med faste mellemrum, så bestyrelsens arbejde ligger lige ved siden af samtalen om det.

KanbanKommentarer på kortOpgaverCheck-ins
En kolonne på en Joyn-tavle, In progress, med et kort om rutekortet og GPX-filen med frist den 11. oktober.
#filer

Filer og sider

Mapper til klubbens filer og sider, som bestyrelsen skriver på sammen i realtid, ligesom et delt dokument, bare inde i rummet.

MapperDelte filerFælles redigering
Filer i Joyn: en Harbour 10K-mappe, en PDF med rutekortet og siden med klubbens håndbog.
#grupper

Grupper og roller

Hvert hold får sin egen gruppe inde i rummet, offentlig eller privat, med egne kanaler, arrangementer, filer og administratorer. Egne roller og rettigheder pr. kanal bestemmer, hvem der må hvad.

Offentlige eller private grupperEgne rollerAdministrer kanalerAdministrer arrangementerAdministrer roller
#offentlig-side

En hoveddør for nye ansigter

Hvert rum kan have en offentlig side med kommende arrangementer, nyheder og en knap til at blive medlem, og den viser aldrig medlemmernes navne.

Kommende arrangementerNyheder»Bliv medlem«-knap
getjoyn.io/c/harbour-run-club

Realtid hele vejen igennem.

En fællesskabsapp står og falder med, om den føles levende. Beskeder, reaktioner, hvem der skriver, og hvem der er online, går gennem sin egen WebSocket-gateway, adskilt fra API'et.

Det samme gælder for, hvem der er online. Uanset hvor mange dele af en skærm der holder øje med et emne, abonnerer appen kun på det én gang, og forespørgslerne bliver sendt samlet i portioner på 50.

  1. 1
    Sofie trykker på Send
    Hendes app viser beskeden med det samme og mærker den med en engangs-nonce.
  2. 2
    API'et gemmer den
    Fastify skriver den til Postgres og regner ud, hvilke medlemmer der skal have besked om den.
  3. 3
    Redis bringer den videre
    Den bliver udgivet på Redis, adresseret til hver gateway-maskine, de medlemmer er forbundet til.
  4. 4
    Gatewayen leverer den
    Hver gateway sender den ud gennem sine åbne WebSockets, og hver telefon og browser i kanalen viser den.
  5. 5
    Sofies kopi kommer også tilbage
    Noncen fortæller hendes app, at den allerede har den, så den aldrig dukker op to gange.

Og resten

Sider, der skrives sammen
Bestyrelsens dokumenter, som flere kan redigere på samme tid, bygget på BlockNote, Yjs og sin egen Hocuspocus-server.
Hurtig første visning
Siderne hentes på serveren og gives videre til React Query, så listerne er der, før JavaScriptet er.
Det sker med det samme
Reaktioner, tilmeldinger og flytninger på en tavle slår igennem på skærmen, før serveren har svaret.
Virker i bussen
Mobilappen gemmer sine data på enheden og prøver igen med stigende pauser, når forbindelsen ryger. En besked, der fejler, kan sendes igen.
Ingen går glip af noget
Push-notifikationer gennem Firebase og ugentlige oversigter og mails om ulæste beskeder, sendt af BullMQ-jobs.
Billeder, der indlæses pænt
Uploads ender i Cloudflare R2, skaleret med sharp, med en blurhash, der vises, mens de hentes.
Fejl rettet over natten
Et kort på Joyns egen kanban-tavle kan blive samlet op af Claude Code om natten og komme tilbage som en draft pull request.
Bygget med
TypeScriptNext.jsReact Native + ExpoFastifyPostgresRedis + WebSocketsBullMQYjs + HocuspocusFirebaseStripeSanityCloudflare R2Fly.io

Saml klubben
under ét tag.

Joyn er gratis op til 100 medlemmer. Derefter koster det 4 euro pr. person om måneden eller 250 euro om måneden for et fællesskab af enhver størrelse.