Un produit 101 Studios
L'agendade vos applications.
Calendar ajoute à vos applications un agenda complet et des champs de date pensés pour le clavier. Récurrences, invités, rappels et abonnements, compatibles Google Agenda et Outlook. Les données restent sur vos serveurs.
Démonstration interactive
Tout tourne dans votre navigateur : rien n'est envoyé, rien n'est gardé après la visite.
iCalendar
Import, export et abonnements, lus par Google Agenda, Outlook et les téléphones.
Récurrences
Tous les jours, un jeudi sur deux, chaque année ; modifier une occurrence, les suivantes ou toutes.
Fuseaux horaires
Chaque événement garde le sien, heure d'été comprise.
Trois langues
Français, anglais et allemand.
01Des champs de date pensés pour le clavier
On tape la date, les flèches passent d'un segment à l'autre, le calendrier s'ouvre au besoin. Dates, dates et heures, périodes : les mêmes champs dans toutes vos applications, avec ou sans l'agenda.
Tapez une date chiffre par chiffre, ou utilisez ↑ et ↓ sur un segment.
02Vos données restent chez vous
Calendar s'installe dans votre application, sur votre base de données. Rien ne passe par 101 Studios, et vous pouvez dire à tout moment où vont les données et avec qui elles sont partagées.
Sur vos serveurs
Les tables de Calendar vivent dans votre base Postgres, à côté des vôtres.
Vos règles d'accès
Qui voit quoi suit les droits de votre application : propriétaire, écriture, lecture, disponibilités.
Un rapport de partage
Pour chaque propriétaire : les partages, les abonnements, les invités extérieurs.
Fermé par défaut
Invités extérieurs et abonnements restent désactivés tant que vous ne les ouvrez pas.
Des liens secrets
Abonnements et invitations par lien : 128 bits aléatoires, gardés seulement sous forme d'empreinte.
Export et oubli
Les données d'une personne s'exportent, et s'effacent à sa demande.
03S'intègre à votre application
Un serveur et son adaptateur AdonisJS, un client, des composants React, des champs de date. Les couleurs suivent vos variables CSS, et la documentation décrit chaque étape.
// config/calendar.ts
export default defineConfig({
user: (ctx) => personOf(ctx.auth.user),
access: (person, owner) => accessTo(person, owner),
timeZone: "Europe/Luxembourg",
})
// start/routes.ts
router
.group(() => calendarRoutes())
.prefix("/calendar")
.use(middleware.auth())const service = createHttpService({ baseUrl: "/calendar" })
<CalendarProvider service={service} user={me} locale="fr-LU">
<Agenda owners={[`user:${me.id}`, "workspace:3"]} />
</CalendarProvider>