Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Shpota/skmz
A GraphQL-based Web App written with Go, React and MongoDB
https://github.com/Shpota/skmz
docker docker-compose full-stack full-stack-application go golang graphql graphql-api javascript js react reactjs
Last synced: 3 months ago
JSON representation
A GraphQL-based Web App written with Go, React and MongoDB
- Host: GitHub
- URL: https://github.com/Shpota/skmz
- Owner: Shpota
- License: apache-2.0
- Created: 2020-01-19T17:20:39.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T01:56:39.000Z (over 1 year ago)
- Last Synced: 2024-06-12T08:11:40.448Z (5 months ago)
- Topics: docker, docker-compose, full-stack, full-stack-application, go, golang, graphql, graphql-api, javascript, js, react, reactjs
- Language: Go
- Homepage: https://shpota.com
- Size: 3.01 MB
- Stars: 400
- Watchers: 12
- Forks: 41
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
SKMZ [![Build Status](https://travis-ci.com/Shpota/skmz.svg?branch=master)](https://travis-ci.com/Shpota/skmz) [![](https://img.shields.io/codecov/c/github/Shpota/skmz?color=green&logo=test%20coverage)](https://codecov.io/gh/Shpota/skmz)
====A web application that allows to query programmers
with their skills via a **GraphQL** API. The
application is implemented with **Go** and
**[gqlgen](https://github.com/99designs/gqlgen)**
on the backend side and **React** on the front end
side. **MongoDB** is used as a database.![Showcase](showcase.gif)
## System requirements
You need to have [Docker](https://www.docker.com) and
[Docker Compose](https://docs.docker.com/compose/)
installed in oder to build and run the project. No
additional tools required.## How to build and run in production mode
Perform
```sh
docker-compose up
```
Access the application via http://localhost:8080.
Access the GraphQL Playground using
http://localhost:8080/playground.## How to develop locally
**Tools**
In order to develop the app locally the following
tools are required: [Docker](https://docs.docker.com/),
[Docker Compose](https://docs.docker.com/compose/) (if you
are on Mac or Windows it comes installed with Docker),
[Node.js](https://nodejs.org/en/) and
[Go](https://golang.org/dl/).Verify if your environment is ready by running the
following 4 commands:```sh
docker --version
docker-compose --version
npm --version
go version
```**Start the dev DB**
```sh
docker-compose -f docker-compose-dev.yml up
```
This will start a local MongoDB which will be
accessible on port `27017`. The DB will
be populated with test records from
[mongo.init](server/db/mongo.init).**Start the server**
Navigate to the `/server` folder and execute:
```sh
go run server.go
```
This will compile and run the back end part.
As a result, the API and [the GraphQL
playground](http://localhost:8080/playground)
will be available.**Start the Front End dev server**
Navigate to the `/webapp` folder and execute
the following commands:```sh
npm install
npm start
```
As a result, the web site will be accessible
on http://localhost:3000.The changes on the front end side will be automatically
applied once a file is saved. The changes in the back
end code require restarting the back end.## Customizations
The database starts with a preloaded set of data which
can be customized in
[the mongo.init file](server/db/mongo.init).Here is an example of a GraphQL query which can be
run in [the Playground](http://localhost:8080/playground):
```graphql
query {
programmers(skill: "go") {
name,
picture,
title,
company,
skills {
name,
icon,
importance
}
}
}
```