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.

Côté serveur
// 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())
Côté interface
const service = createHttpService({ baseUrl: "/calendar" })

<CalendarProvider service={service} user={me} locale="fr-LU">
  <Agenda owners={[`user:${me.id}`, "workspace:3"]} />
</CalendarProvider>