Skip to content
/ tricma Public

An umbrella project to hold the various parts of the graphQL enpoint

License

Notifications You must be signed in to change notification settings

wcmaart/tricma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

TRICMA

The WCMA Tricma (pronounced WickMa TrickMa) is an umbrella project to hold the various parts of the collections, graphql api and dashboard projects. There's some common information that's useful to have about all of them and this is the place to put it, as well as tracking issues that don't neatly fit into individual parts.

Overview

The general idea is that we build a system that allows us to extract data from various data sources, be that CSV, JSON, XML files or a number of TMS system. Then allow that data to be combined and served from a common api source. The technology we've chosen means it looks something like this...

Over view image

The three main items in blue are the three repos you can find here on wcma:

  • The Dashboard

    The is the part of the project that allows to upload the data to the data store, upload images to the image store, set user accounts and other general administration tools such as logging and automating the data uploading.

    It also acts as a place for developers who wish to use the GraphQL endpoint to register for a developer API key and read the documentation.

  • The API

    This is the API that allows third part developers (with an API key from the dashboard) to make calls to the API, which returns information about the data we have stored.

    In this case the technology we have chosen is GraphQL

  • The Collection "Spelunker"

    This is an example app, that shows how a developer may interact with the API and display the results.

Technology choices

In the above overview we've used general terms for the parts that are external to our three main repositories, they are in turn;

"Various sources of information"

For us these consist of a single TMS system and some well defined JSON files.

Authentication

We are using Auth0 to handle our user login and user roles.

Database

Our external datastore is ElasticSearch, in our case hosted on elastic.co with a Kibana management panel.

Image hosting

We are uploading and hosting the images with Cloudinary.

Dashboard

Is mainly a Node + Express + express-handlebars application with a bunch of other stuff, see the repo for more details.

API

Is a graphQL server built using Node + Express + express-graphQL, which backs onto the ElasticSearch database, see the api repo for more.

Collections Explorer

Is a node + react web app which pulls data from the graphQL server.

Installation, aka Before you Begin

Before cloning the three repos you should probably set up accounts for at least...

...because you will need both of those before you can do anything.

You should also set up a local version of ElasticSearch and Kibana to store any data, see the dashboard for more information.

Once that is set up you should follow the instructions on the dashboard to start consuming data, and then follow the instructions on the API to expose the data as a handy GraphQL endpoint.

If you want to test the endpoint finally clone and run the collection.

Issues and Projects

General issues that span all parts of the project just be added in Issues and tracked in the Project. For example things like "Should we move the datastore to SQlite?" would live here because both the dashboard and the API are involved. If the decision to move was made then we'd place that as two individual tasks on each repo.

About

An umbrella project to hold the various parts of the graphQL enpoint

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published