AcadeDoc/apps/client
Corentin 2fc310a2f2 feat(acadenice): add bidirectional backlinks + wikilinks for R3.2
- Migration: acadenice_backlink table (source/target/link_type/excerpt/workspace)
  with 3 indexes and UNIQUE(source,target,type) constraint. Up+down.
- Backend module AcadeniceBacklinksModule:
  BacklinkParserService: walks Tiptap JSON, extracts wikilinks/mentions/databaseView.
  BacklinkIndexerService: idempotent delete-then-insert per page save.
  BacklinkService: permission-aware query (space_members / public visibility).
  BacklinksController: GET /api/acadenice/pages/:pageId/backlinks (JWT auth).
  PageContentUpdatedListener: OnEvent handler for collab saves -> async reindex.
  Tests: 16 Vitest specs (parser/indexer/service/controller).
- PersistenceExtension patch: emits ACADENICE_PAGE_CONTENT_UPDATED_EVENT after
  each collab onStoreDocument (fire-and-forget, no impact on save path).
- CoreModule patch: imports AcadeniceBacklinksModule.
- Frontend WikilinkExtension: Tiptap inline atom node, [[Title]] / [[Title|alias]],
  Suggestion popup (reuses mention pattern + floating-ui), ReactNodeView with
  broken-link state, insertWikilink command.
  Tests: 9 Vitest specs (schema/attrs/commands/HTML parse+render).
- LinkedReferencesPanel: React Query useBacklinks(pageId, staleTime=30s),
  accordion grouped by link_type, excerpt preview, navigate to source page.
  Tests: 7 Vitest specs (loading/error/empty/render/navigate/groups).
- extensions.ts patch: + WikilinkExtension in mainExtensions[].
- full-editor.tsx patch: + LinkedReferencesPanel below editor (Divider + panel).
- i18n: 11 keys added in en-US and fr-FR (backlinks.* + wikilink.*).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 00:51:02 +02:00
..
public feat(acadenice): add bidirectional backlinks + wikilinks for R3.2 2026-05-08 00:51:02 +02:00
src feat(acadenice): add bidirectional backlinks + wikilinks for R3.2 2026-05-08 00:51:02 +02:00
.dockerignore fixes 2024-06-07 17:29:34 +01:00
.gitignore switch to nx monorepo 2024-01-09 18:58:26 +01:00
Dockerfile.e2e test(e2e): add data-testid attributes for Playwright e2e (Patch 008 R3.1.e) 2026-05-08 00:37:39 +02:00
eslint.config.mjs chore: fix linting (#544) 2024-12-09 14:51:31 +00:00
index.html feat(rebrand): DocAdenice — patch initial sur le fork Acadenice 2026-05-07 21:10:51 +02:00
package.json feat(rbac): R2.2 frontend pages settings RBAC dynamique avec PermissionMatrix 2026-05-07 22:42:39 +02:00
postcss.config.js switch to nx monorepo 2024-01-09 18:58:26 +01:00
README.md switch to nx monorepo 2024-01-09 18:58:26 +01:00
tsconfig.json switch to nx monorepo 2024-01-09 18:58:26 +01:00
tsconfig.node.json switch to nx monorepo 2024-01-09 18:58:26 +01:00
vite.config.ts fix(deps): package updates (#2041) 2026-03-25 10:07:01 +00:00
vitest.config.ts feat(rbac): R2.2 frontend pages settings RBAC dynamique avec PermissionMatrix 2026-05-07 22:42:39 +02:00

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

  • Configure the top-level parserOptions property like this:
   parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module',
    project: ['./tsconfig.json', './tsconfig.node.json'],
    tsconfigRootDir: __dirname,
   },
  • Replace plugin:@typescript-eslint/recommended to plugin:@typescript-eslint/recommended-type-checked or plugin:@typescript-eslint/strict-type-checked
  • Optionally add plugin:@typescript-eslint/stylistic-type-checked
  • Install eslint-plugin-react and add plugin:react/recommended & plugin:react/jsx-runtime to the extends list