MotusArtium is GraphQL-first.
That is the key design choice for the project.
The main application behavior depends on dedicated GraphQL documents stored in graphql/.
These documents drive:
- movement detail loading
- artist detail loading
- artwork detail loading
- artist expansion from a movement
- artwork expansion from an artist
- artwork expansion from a museum
- artwork expansion from a subject
- influence and diffusion views
- label refreshes for selected entities
The GraphQL endpoint used by the app is Wikidata's wbgraphql endpoint.
GraphQL is the main aspect of MotusArtium because it lets the app:
- keep entity relationships explicit
- ship dedicated query documents as part of the product
- show the active document directly in the UI
- make variables and response shapes visible
- expand different entity types through purpose-built query surfaces
This is not just an implementation detail. It is part of the product identity.
REST is used for narrower supporting tasks where it is a better fit than GraphQL.
Used for free-text search input such as:
- movement names
- artist names
- museum names
- subject terms
Used to inspect entity claims for search-result type resolution, so the app can decide whether a search result should load as:
- movement
- artist
- artwork
- museum
- subject
movement_details.graphqlartists_by_movement.graphqlartist_details.graphqlartist_influences.graphqlartworks_by_artist.graphqlartwork_details.graphqlmuseum_details.graphqlartworks_by_museum.graphqlartworks_by_subject.graphqlmovements_catalog.graphqlmovement_diffusion.graphqlmovement_evolution.graphqlcountries_coordinates.graphqlentity_label.graphql
If the user is searching by text, the shell starts with REST.
If the app is expanding an entity into meaningful art-history relationships, the app should move into GraphQL as quickly as possible.