on3iro / BGAchievements

Work In Progress: Web-App for user generated board game achievements
MIT License
7 stars 1 forks source link

DISCLAIMER: Work in progress

Build Status Coverage Status Maintainability Greenkeeper badge style: styled-components JavaScript Style Guide

Discord

BGAchievements (working title)

Description

BGAchievements is (or at this point in time rather "will be") a web application to craft, rate and share achievement sets for your favorite board games. Think of Steam achievements for board gaming.

This project is an endeavour of board game and web development enthusiasts. Our goals are diving deeper into some of the intricacies of modern web development as well as producing a lovable product we will be eventually able to use :) All of our main contributors work in the tech industry and share a deep passion for gaming and board games in particular.

Basic Road Map

Prerequisite phase

MVP (Minimum Viable Product)

Scheduled for summer/autumn 2018

Beta

No schedule, yet.

FAQ

Will the app be free

Yes. We hope to be able to maintain the app without subscription fees or any additional costs attached to it. However depending on the success of the project server costs might increase so we will probably add a way to donate later down the road.

Is it done yet

TL'DR: No! :(

Actually we are currently just starting out.

Contributing

We are currently just starting out and need to "stabilize" our development workflow. Therefore we will currently only take "light weight" contributions marked with the label help wanted. Later on we will probably start to open things up a bit and also make some more technically advanced issues open for contribution.

Installing / Getting started

Database setup

The first setup needs a database connection. The chosen DBMS is PostgreSQL, which you can download here.

REST application setup

To build the Spring Boot REST application, provide an application.properties file containing your database connection properties

Sample application.properties:

spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb?currentSchema=bgachievements
spring.datasource.username=user
spring.datasource.password=secret

Then start the application in a comand-line using

./gradlew bootRun

on Linux machines or

gradlew bootRun

on Unix-like machines in you project root.

To install all project dependencies simply run

npm i

Developing

Built With

This project includes quite a few opinionated settings which where made according to our own guidelines. Therefore this template includes:

Development commands

Dev-Server

To start the development server run:

npm start

This will start an instance of webpack-dev-server on localhost:3000 as well as an instance of json-server which provides a fake api on localhost:8089. From then on the whole project will rebuild, run your JS files through the Flow type-checker and lint your JS with standard whenever you save a file.

You can also run client and api separately by using the following commands:

npm run api
npm run client

Type-Checker (Flow)

To separately type-check your JS-files, run:

npm run flow
Required module not found

To add third party library flow support use flow-typed.

If the library of your choice does not support flow, you can add an entry to flow-typed/libDefs.js. The declaration should look like this:

declare module 'myModule' {
  declare module.exports: any
}

If a local module is not resolved correctly you can add an option to the .flowconfig like so:

[options]
module.system.node.resolve_dirname=src

Linters

To separately lint your JS-files, run:

npm run lint:js

or to autmatically fix issues if possible, run:

npm run lint:js:fix

To lint styled-components run

npm run lint:css

Testing

Tests should usually live next to their base files and should be named like: <myBaseFile>.test.js.

To run Jest an check if your tests pass invoke:

npm run test

To run jest and generate coverage, run:

npm run test:coverage

To view the coverage files inside your browser, open the index.html inside coverage/lcov-report/.

To continuously run Jest and have Jest watch for changes, run:

npm run test:watch

Building

To build the project, run:

npm run build

This will compile, minify and bundle everything and put all packaged files into the dist/ directory (if there is no such directory it will just be newly created, an existing directory will be removed first). To allow our clients browsers to cache vendor files and only update the cache when it is really necessary, all important filenames include hashes for reference inside the built manifest file.

Versioning

We use SemVer for versioning.