diff --git a/README.md b/README.md index 5fd55ee..1704728 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,29 @@

[![Node.js CI](https://github.com/AlecM33/Werewolf/actions/workflows/node.js.yml/badge.svg?branch=master)](https://github.com/AlecM33/Werewolf/actions/workflows/node.js.yml) +[![CodeQL](https://github.com/AlecM33/Werewolf/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/AlecM33/Werewolf/actions/workflows/codeql-analysis.yml) Find the latest production deployment at: https://play-werewolf.app/ +- [Overview](#overview) - [Features](#features) - [Tech Stack](#tech-stack) - [Contributing and Developers' Guide](#contributing-and-developers-guide) - [Testing](#testing) - [Code Formatting](#code-formatting) +

+

+ + + + + + +

+ +## Overview + An application to run games of Werewolf (Mafia) smoothly when you don't have a deck, or when you and your friends are together virtually. Basically, a host builds a game and deals a role to everyone's device, and then the app keeps track of the game state (timer, who is killed/revealed, etc). Since people tend to have their own preferences when it comes to what roles they use or how they run the game, the app tries to take a generalized, flexible, hands-off approach - it won't run day and night for you and won't implement any role abilities. Hosts can use any roles they want, in any configuration, and can create their own roles if the provided ones don't meet their needs (though neutral/third-party roles are currently not supported - only good and evil). If you have a role that you think should be available by default, and that isn't already there, feel free to let me know. Otherwise, any roles you create will be saved in your cookies, or can be exported for use later. @@ -23,16 +37,6 @@ The app prioritizes responsiveness. A key scenario would be when a group is hang Inspired by my time playing Ultimate Werewolf and by 2020's quarantine. The app is free to use, anonymous, and fully open-source under the MIT license. After a long hiatus I've rewritten a lot of the code. This was (and still is) fundamentally a learning project, so feedback or assistance is appreciated. -

-

- - - - - - -

- ## Features You can: @@ -72,14 +76,14 @@ commands defined in `package.json`. If you simply want to run the app on the default port of **5000**: -`npm run start:dev` (if developing on a linux machine)
-`npm run start:dev:windows` (if developing on a windows machine) +`npm start:dev` (if developing on a linux machine)
+`npm start:dev:windows` (if developing on a windows machine) This command uses nodemon to listen for changes to **server-side code** (Node.js modules) and automatically restart the server. If you do not want -this, run instead `npm run start:dev:no-hot-reload` or `npm run start:dev:windows:no-hot-reload`. +this, run instead `npm start:dev:no-hot-reload` or `npm start:dev:windows:no-hot-reload`. -If you are making changes to client-side javascript, in a separate terminal, execute `npm run build:dev`. This uses +If you are making changes to client-side javascript, in a separate terminal, execute `npm build:dev`. This uses Webpack to bundle javascript from the `client/src` directory and place it in the `client/dist` directory, which is ignored by Git. This command uses the `--watch` flag, which means the process will continue to run in this terminal, watching for changes within the `client/src` directory and re-bundling automatically. You @@ -127,7 +131,7 @@ Have a question that isn't covered here? Email me at Jasmine. End-to-end tests are run using Karma. -Execute all tests by running `npm test`. Execute unit tests by running `npm run test:unit`. Execute end-to-end tests by running `npm run test:e2e`. +Execute all tests by running `npm test`. Execute unit tests by running `npm test:unit`. Execute end-to-end tests by running `npm test:e2e`. Unit tests map 1:1 to the application directory structure - i.e. unit tests for `server/modules/GameManager` are found in `spec/unit/server/modules/GameManager_Spec.js`