Tutoriel frontend — « Memo »

Données & store

Le module appelle son propre backend via le client api du SDK : préfixe /api/v1, cookies inclus. Le host gère l'authentification — aucun code de token côté module.

Appels API #

// frontend/src/api.ts — le client est fourni par le SDK (baseURL = /api/v1)
import { api } from '@kubuno/sdk'

export const listNotes  = () => api.get('/memo/notes').then(r => r.data.notes)
export const createNote = (dto: { title: string; body: string }) =>
  api.post('/memo/notes', dto).then(r => r.data.note)
export const deleteNote = (id: string) => api.delete(`/memo/notes/${id}`)
Note

Toutes ces requêtes passent par le core, qui les authentifie puis les proxifie vers http://127.0.0.1:3120/notes… en injectant l'identité.

Le store (Zustand) #

// frontend/src/store.ts
import { create } from 'zustand'

interface MemoState {
  query: string
  selectedId: string | null
  setQuery: (q: string) => void
  select: (id: string | null) => void
}

export const useMemoStore = create<MemoState>((set) => ({
  query: '',
  selectedId: null,
  setQuery: (query) => set({ query }),
  select:   (selectedId) => set({ selectedId }),
}))

Les stores du module sont des instances locales ; seuls les stores du SDK (auth, modules, notifications…) sont partagés et uniques.