Introduction

TroveFM is a web application built on top of Django, ReactJS, and GraphQL.

This website is currently in transition to a containerized implementation using Docker.

The following containers are up and running:
  1. Reverse Proxy

  2. PostgreSQL Database

  3. The Graphene-Django GraphQL API

I am currently in the process of dockerizing the ReactJS/Apollo Client, which will present the front end of the application.

The initial implementation of the TroveFM website is simply a Proof Of Concept (POC) that mimics the Hacker News website. This is in no way inteneded to compete with the Hacker News site, and is only used to demonstrate the Django/GraphQL/ReactJS/Apollo Client architecture in a Docker environment.

Upon completion of the POC, I expect to use the tool chain that I have built and the knowledge that I have gained to replace the POC with something else that I have in mind.

Note

If you would like to view the GraphQL API documentation for the TroveFM POC and run your own GraphQL queries against the API, you can use the GraphiQL IDE, available at https://api.poc.trove.fm/graphql/

Using GraphiQL, you can perform any of the queries and most of the mutations documented there. You will not be able to run the createLink or createVote mutations from this interface, as those require a GraphQL client that can pass back the authetication token as a cookie, which GraphiQL is unable to do.

For full access to the TroveFM GraphQL API, I suggest that you use the Insomnia REST client, available from https://insomnia.rest/

Documentation for GraphQL queries using Insomnia is available here: https://support.insomnia.rest/article/61-graphql

The Insomnia client will store the authentication cookie and pass it back to the API with each request. The address to use in the Insomnia client is the same as the one above: https://api.poc.trove.fm/graphql/

If you would like to know more about GraphQL itself, these two sites would be a good place to start:

Objectives

  1. Create a user-friendly, modern website.

  2. Demonstrate the use of Django, Graphen-Django (GraphQL), and ReactJS

  3. Provide as close to 100% Test Coverage as possible 1

  4. Provide clear documentation with full coverage of the API and example code.