Hello! If you're reading this, you're probably an awesome member of the team!
This app was created with React and Node with the focus on GraphQL/Apollo for the front and back-end. Which end is clearly within their respective folder. Such as the front-end (ReactJS) is in the frontend
folder where as the back-end (Node/ExpressJs) is in the backend
folder.
- Backend - The GraphQL setup is a middleware so you'll find it in
backend>middleware>graphql
. All the setup was created within that folder. There are two different schema folders that achieve the same purpose but was created to show the different ways to write it. - Frontend - The GraphQL queries were saved in
frontend>helpers>graphql.js
A presentation was created to go with this project, to access it, click here
During the presentation I should have a tunnelled server running that others could access, but if you would like to run it yourself, there are a couple of steps you need to do:
- install all the packages
npm i
oryarn i
- Build the app
npm run build
oryarn run build
- start the app
npm start
oryarn start
- You should see the server running at
http://localhost:8080
and the GraphQL playground running athttp://localhost:8080/graphql
- Choose a nickname
- Toggle between chat or upload for the type of message you want shared with others
- Chat will let you send a message
- Upload will let you send an image. Dragging an image over also works.
- Nicknames that match the message's name are deletable.
-
If you are running this app locally, the "database" is neDB. You can find the file
database.db
of any data that was stored on your end. This file is not shared. -
Images uploaded from the front-end are stored in
public>images
and are not shared... But will be stored on my local machine.... so.... yeah....
-
The upload feature is executed with a standard POST request handled by multer rather than GraphQL because apollo-upload-client doesn't work alongside Subscription link and I was too lazy to research a better client-side graphql upload tool.
-
This app had little to no thought when it comes to security, UI, responsiveness, and other stuff...