Git Product home page Git Product logo

hack-n-slack's People

Contributors

sekretone avatar

Stargazers

 avatar

Watchers

 avatar  avatar

hack-n-slack's Issues

Test Suite

Add initial test suites.

๐Ÿ’ญ Test Now not Later

It is a misconception that tests slow down development. Contrary, they accelerate it. Incremental development should pair with incremental testing. Even a simple proof of concept should be able to have simple tests (to avoid simple bugs).

  • configure node test
  • establish any project patterns
  • enforce high code coverage on total / diff

Considerations

  • Linter perhaps can require tests to follow certain project patterns?

Master Branch Proection

Enable branch protection of master, even for admins.

Purpose

Change control and ensure quality gates are met through a Pull Request. Enforce intent scoping of pull requests. A pull request template adds a norm for consistency for writing / reading, and expectations.

One should enforce such measures even on a solo project of any reasonable scale. Pushing scattered commits onto master.

  • enable branch protection
  • configure Pull Request Template

Simple Map Creation

I want to create a simple map for 'player party' to navigate.

  • ye start initializes map (or reinitialize)

  • create a party entity to represent the players

  • map of 10 rooms

  • rooms are Cartesian (north south east west) connected.

  • bot responds with a crude text map. An exposed section will show viable transitions

    โ•”โ• โ•โ•—
    โ•‘    
    โ•šโ•โ•โ•โ•
    
  • map navigates by commands ye go forward/back/left/right

Add Issue Template

Configure issue templates to choose from.

Purpose

Norm for describing intents so relevant details are captured. Expedites formatting. Pattern set for future automatically created issues.

The best tools are also teaching tools. Formally creating issues for even 'basic' config setup can help future developers, as personal norms may differ. Can also be used by the self to quickly audit and compare tooling.

Establish terms so similar issue elements are described the same way.

Examples

ย  enhancement component technical workflow bug
Purpose โœ”๏ธ โœ”๏ธ โœ”๏ธ ย 
Design โœ”๏ธ โœ”๏ธ โœ”๏ธ โœ”๏ธ ย 
Expected ย  ย  ย  ย  โœ”๏ธ
Actual ย  ย  ย  ย  โœ”๏ธ
Do โœ”๏ธ โœ”๏ธ โœ”๏ธ โœ”๏ธ ย 
Don't โœ”๏ธ โœ”๏ธ โœ”๏ธ โœ”๏ธ ย 
  1. Purpose
    Why something should be done. Tone should be objective, but can include opinionated sentiments in a quote block.
  2. Design
    List of 1 or more example. Psuedo code for high level concepts, but more technical precision if the issue is targeted or technically nuanced.
  3. Expected
    How something was expected to behave
  4. Actual
    How something actually behaved (crashed, differing behavior than described).
  5. Do
    Check list of things needed to be completed (ie acceptance criteria)
  6. Don't
    Check list of 0 or more things that must not happen, to clarify scope or call out a pitfall.

Do

  • Add enhancement template
  • Add component template
  • Add technical template
  • Add workflow template
  • Add bug template
  • All template issues include at least 1 label

Pull Request Template

Configure Pull request template

Purpose

Normalize pull request format. Could make compiling release notes systematic.

consider the default format: #10 (comment)

Design

Should be a simple enough process.

  1. Summary
  2. Release notes section that can be possibly processed when creating a release?

Do

  • pull requests open with standard format
  • has release notes

Sonar Analysis

Setup automatic analysis to cloudsonar.io for coverage and quality.

Purpose

Systematically catch and resolve quality, bugs and security issues. Preemptive measures to reduce tech debt and enforce consistent behaviors.

Systematic quality gates establish a stable base. Testing and quality is a habit formed at the beginning, and not an afterthought.

Do

  • create sonar project and register
  • integrate keys/tokens
  • integrate into pull request process
  • configure branch protection to require status checks passed

Synonym based commands

Add an interpreter to use synonym detection on the commands.

  • implement synonyms
  • synonyms use ? to note as a valid token
  • parentheses mark targets
  • use a decorator pattern to mark @ye()
ye ?go ?forward
ye ?attack (entity)

Room Class

Add a simple room class to store the context of the scene.

{
  entities: [
    { type: "creature" },
    { type: "prop" },
  ]
}

Save Game (Persistence)

Add a persistence mechanism

Purpose

Games should save and serialize. If the bot is stopped the game should not be lost.

This would also be necessary to save and switch the active game being hosted by the bot in a channel.

Design

Considering a short term solution using node's fs to just save and write json.

Game data I think needs to be keyed off of server.id, while the active game is tracked under server.channel. I think the bot should maintain a single session at a time, but if a game is saved and stopped you can then switch which channel it's started back up in.

Do

  • active game saves after each change
  • active game can be stopped ye quit
  • stopped game can be started up
  • session tracks for the channel it was started in ye start

Party

Party contains the player information.

  • hold a list of players
  • JSON serializable / deserializable
  • list of all characters in the party
  • use getters and setters
class Party{
  name: 'string'

  characters: [
    {
      name: 'string'
    }
  ]

  get players();
}

Leverage Projects

Create projects to track progress and group elements.

โ“ I am unsure if Milestones are better than projects for certain feature trackings.

Purpose

Organize work in a searchable way. Establish scope of effort and its significance.

Often elements like workflow management, tech debt cleanup, etc do not get the attention they need, nor recognition when accomplished despite how essential it is.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.