Skip to content

ECRIN Application Audit

Last updated: January 28, 2026

This document presents a complete audit of the ECRIN application, analyzing its architecture, its 6 functional cards and their potential to evolve into standalone applications.

Executive Summary

ECRIN is a collaboration platform for researchers developed by Le Havre Normandie University as part of the Campus Polytechnique des Territoires Maritimes et Portuaires and EUNICoast projects.

MetricValue
Functional cards6
Implemented cards3 (50%)
Candidate applications for extraction3
Main technologiesSvelteKit 2, Svelte 5, Sigma.js, Appwrite

Subprojects

SubprojectStatus
introduce-my-scientific-questionsIn progress
introduce-my-referencesIn progress
collaborate-create-my-projectIn progress
collaborate-build-my-teamPlanned
collaborate-find-my-expertPlanned
collaborate-fund-my-projectPlanned
explore-my-graphPlanned
explore-community-graphPlanned
ask-dataPlanned
ask-an-expertIn progress
publish-my-dataPlanned
publish-my-newsPlanned

1. General Architecture

1.1 Overview

ECRIN is organized around 6 functional cards, each representing a distinct business domain that could potentially evolve into a standalone application.

packages/ecrin/
├── src/
│   ├── routes/                    # SvelteKit routes
│   │   ├── +page.svelte          # Main page (6 cards)
│   │   ├── api/v1/               # REST API endpoints
│   │   ├── global/               # Graph visualization
│   │   └── login/                # Authentication
│   └── lib/
│       ├── ui/                   # Components for the 6 cards
│       ├── server/services/      # Business logic
│       ├── appwrite/             # Appwrite integration
│       ├── redcap/               # REDCap integration
│       └── graph/                # Graph generation

1.2 Technical Integrations

SystemRoleUsage
REDCapData sourceSurveys, user records, projects
AppwriteBackendAuthentication, sessions, database
Sigma.js + GraphologyVisualizationResearch network graphs

2. The 6 Functional Cards

Overview

CardComponentDescriptionBackend status
IntroduceIntroduce.sveltePresent research workInterface only
CollaborateCollaborate.svelteFind collaborators and create projectsFunctional
ExploreExplore.svelteVisualize research networksFunctional
AskAsk.svelteSearch for data and expertsInterface only
PublishPublish.svelteShare data and newsInterface only
AdministrateAdministrate.svelteManage account and surveysFunctional

3. Card Details

3.1 "Introduce" Card (Present)

File: packages/ecrin/src/lib/ui/Introduce.svelte

Objective: Allow researchers to present their research work to get feedback from the community.

Sub-cards

Sub-cardDescriptionImplementation
My scientific questionDescribe research to get feedbackInterface only
My referencesReference recent publicationsInterface only

Implementation Status

  • Frontend: Interface structure present
  • Backend: No integration

Recommendation

Integrate with find-an-expert to:

  • Automatically retrieve publications via OpenAlex
  • Build researcher profile from bibliographic data

3.2 "Collaborate" Card (Collaborate)

File: packages/ecrin/src/lib/ui/Collaborate.svelte

Objective: Facilitate the creation of collaborative projects and the building of research teams.

Sub-cards

Sub-cardDescriptionImplementation
Create my projectDeclare a project to find collaboratorsREDCap survey link
Build my teamSearch for collaborators with specific skillsPartial
Find my expertConnect with expertsRedirects to find-an-expert
Fund my projectSearch for funding opportunitiesInterface only

Services Used

typescript
// Backend services
surveysService.getSurveyUrl()      // Generates link to REDCap survey
accountService.pushAccountToRedcap() // Syncs account with REDCap
authService.signupWithEmail()       // Email registration

API Endpoints

MethodEndpointDescription
GET/api/v1/surveys/urlGet REDCap survey URL
GET/api/v1/account/pushSync account with REDCap

Extraction Potential

High - This card could become a @univ-lehavre/ecrin-collaborator package with:

  • Research project management
  • Collaborator search
  • REDCap survey integration

3.3 "Explore" Card (Explore)

File: packages/ecrin/src/lib/ui/Explore.svelte

Objective: Visualize research networks through interactive graphs.

Sub-cards

Sub-cardDescriptionImplementation
My graphVisualize personal networkFunctional
Community graphView community connectionsFunctional

Technologies

LibraryVersionUsage
Sigma.jsLatestGraph rendering
GraphologyLatestGraph data structure
ForceAtlas2IntegratedLayout algorithm

API Endpoints

MethodEndpointDescription
GET/api/v1/graphs?record={id}User's personal graph
GET/api/v1/graphs/globalCommunity graph

Node Types

TypeColorDescription
ResearcherYellowPlatform users
ProjectGreenResearch projects
TopicBlueResearch domains
KeywordPurpleAssociated keywords
MethodMagentaResearch methods
Geographic areaCyanGeographic location

Extraction Potential

Very high - This card is an excellent candidate for a @univ-lehavre/ecrin-graph-explorer package because:

  • Standalone and reusable component
  • Independent graph generation logic
  • Can work with different data sources

3.4 "Ask" Card (Ask)

File: packages/ecrin/src/lib/ui/Ask.svelte

Objective: Allow researchers to find data and experts.

Sub-cards

Sub-cardDescriptionImplementation
DataSearch for data for researchInterface only
Expert by locationFind an expert in a geographic areaInterface only
Expert by topicFind an expert on a subjectInterface only
Expert with dataFind an expert with relevant dataInterface only

Implementation Status

  • Frontend: Interface disabled (inactive buttons)
  • Backend: Not implemented

Recommendation

Merge with find-an-expert:

  • find-an-expert already provides expert search via OpenAlex and GitHub
  • Avoids feature duplication
  • Capitalizes on existing bibliographic data

3.5 "Publish" Card (Publish)

File: packages/ecrin/src/lib/ui/Publish.svelte

Objective: Allow researchers to share their work with the community.

Sub-cards

Sub-cardDescriptionImplementation
My dataPublish datasetsInterface only
My newsWrite blog postsInterface only

Implementation Status

  • Frontend: Interface structure present
  • Backend: Not implemented

Prerequisites for Implementation

  1. File storage system for datasets
  2. Content management system for articles
  3. Moderation policy for publications

Extraction Potential

Medium - Requires significant infrastructure before becoming a standalone package.


3.6 "Administrate" Card (Administer)

File: packages/ecrin/src/lib/ui/Administrate.svelte

Objective: Allow users to manage their account and data.

Sub-cards

Sub-cardDescriptionImplementation
My account - RegisterCreate an accountFunctional
My account - LogoutEnd sessionFunctional
My account - DeleteDelete accountFunctional
My survey - SubscribeAccept data policyFunctional
My survey - DownloadExport data (CSV/JSON)Functional
My survey - DeleteDelete REDCap dataFunctional

Services Used

typescript
// Authentication services
authService.signupWithEmail()    // Magic URL registration
authService.login()              // Session creation
authService.logout()             // Session destruction
authService.deleteUser()         // Account deletion

// Survey services
surveysService.getSurveyUrl()    // Survey link
surveysService.downloadSurvey()  // Data export
surveysService.deleteSurveyRecord() // REDCap deletion

// Account services
accountService.checkAccountPushed() // Status verification

API Endpoints

MethodEndpointDescription
POST/api/v1/auth/signupEmail registration
POST/api/v1/auth/loginLogin
POST/api/v1/auth/logoutLogout
DELETE/api/v1/auth/deleteAccount deletion
GET/api/v1/surveys/downloadData download
DELETE/api/v1/surveys/deleteSurvey deletion

Extraction Potential

High - Authentication logic is already partially extracted into @univ-lehavre/atlas-auth. This card could be generalized into:

  • @univ-lehavre/ecrin-account-manager for account management
  • Integration with the existing auth package

4. Relationship with find-an-expert

4.1 Functional Comparison

AspectECRINfind-an-expert
Main objectiveCollaboration and projectsExpertise discovery
Data sourcesREDCap (declarative surveys)OpenAlex, GitHub (public data)
Expert search"Ask" card (not implemented)Main feature
Researcher profileSurvey-basedPublication-based
StatusMain applicationSpecialized subproject

4.2 Complementarity

4.3 Integration Recommendation

Position find-an-expert as ECRIN's expertise discovery engine:

  1. ECRIN's "Ask" card redirects to find-an-expert
  2. find-an-expert provides search results
  3. find-an-expert profiles enrich ECRIN data

5. Recommendation Summary

5.1 Short Term

ActionPriorityEffort
Integrate find-an-expert with "Ask" cardHighMedium
Document the 6 cards in ECRIN READMEHighLow
Extract Graph component as reusable packageMediumMedium

5.2 Medium Term

ActionPriorityEffort
Implement "Introduce" card with OpenAlexMediumHigh
Extract Collaborate logic as packageLowMedium
Define architecture for "Publish" cardLowHigh

5.3 Candidate Packages for Extraction

Proposed packageSourceDependencies
@univ-lehavre/ecrin-graph-explorerExplore cardgraphology, sigma
@univ-lehavre/ecrin-collaboratorCollaborate cardREDCap, Appwrite
@univ-lehavre/ecrin-account-managerAdministrate cardAppwrite, atlas-auth

6. Appendix: Analyzed File Structure

packages/ecrin/src/lib/ui/
├── Introduce.svelte       # Introduce card
├── Collaborate.svelte     # Collaborate card
├── Explore.svelte         # Explore card
├── Ask.svelte             # Ask card
├── Publish.svelte         # Publish card
├── Administrate.svelte    # Administrate card
├── Options.svelte         # Admin options
├── Graph.svelte           # Visualization component
├── GraphSelector.svelte   # Graph view selector
├── CardItem.svelte        # Generic card component
├── HorizontalScroller.svelte # Horizontal scrolling
└── TopNavbar.svelte       # Navigation bar