GithubHelp home page GithubHelp logo

sveneisenschmidt / yay Goto Github PK

View Code? Open in Web Editor NEW
72.0 6.0 7.0 1.31 MB

Gamification made simple. Integrate gamification into your organisation incl. achievements, goals, levels and leaderboards.

License: Apache License 2.0

Makefile 1.58% PHP 95.26% Shell 0.62% HTML 2.19% Dockerfile 0.34%
gamification-engine gamification makefile yay achievements

yay's People

Contributors

leeconnelly12 avatar sveneisenschmidt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

yay's Issues

(Draft) ValidationContext

Idea ist that rather than extending AchievementValidators we generate a ValidationContext that eases custom validators including the ExpressenValidator.

I imagine the following methods:

  • hasAchievement
  • getFilteredPersonalActions
  • getPersonalActions

Plus extend the AchievementValidator next to supports with a boolean flag multiple that indicates an achievement can be granted multiple times.

Webhooks on steroids

Introduce a new webhook system that is able to process various payloads via processors. (Webhook Endpoint -> Processor(s) -> Engine)

  • Separate webhook endpoint, the used processor is specified as a route parameter
  • Processors are defined via a custom configuration but get transformed to services and registered via tags
  • Processors are chainable
  • Github Incomin Webhook Example
  • Update documentation
  • Document commands in a separate section
  • add support for dummy as webhook type

Improve containerisation setup

  • Do not create/purge database schema on every install
  • Remove obsolete files from image
  • Squash image
  • Compress image
  • Do not build unnecessary tags
  • Build latest tag on stable
  • Build branch tag on dev

Improvements for multiple achievements

  • If an achievement can be granted multiple times it is not possible to achieve them in one request
  • Personal achievement, even if multiple are only display as a single resource not array
  • Personal statistics endpoint should show what achievement has been granted how many times -> #124

Add developer documentation

To ease development for project newcomers we need to add even more developer documentation. The documentation should cover the following points:

  • Documentation on how to create custom integrations
  • Documentation of tech stack

(Test) Serialized entities

Yay entities are serialized and deserialzed in the ApiBundle. Different views/serialization groups are supported. Therefore all serializable entities need to be tested with their respective views.

Reduce code smell

  • Remove docblocks
  • Add return types
  • Move annotations to configuration files
  • replace @test annocations with test_prefix

Rework Integrations

  • Create IntegrationBundle
  • Move Install, Uninstall Commands to new Bundle
  • Define new integration configuration format and transform it
  • Use symfony configuration builder to validate integration confoguration file
  • Test integration
  • Update documentation
  • Validate integration command
  • Add tags to validators

Send mail on events

  • Add mail catcher for local development
  • Send mail when a new action is recorded
  • Send mail when a new achievement is granted
  • Send welcome mail when a new player is created

Add pagination and filters to API

  • API endpoints should support filters
  • API endpoints should support sorting
  • API endpoints should support pagination

Use Criteria on collection level.

Implement continous integration tools

After every push the project needs to run against the tests via make test.

  • StyleCI: Connect repository to StyleCI
  • StyleCI: Fix reported issues
  • Travis CI: Connect repository to Travis CI
  • Travis CI: Make tests run against PHP 7.1, PHP 7.2 RC

(Test) JsonFieldConverter

Write unit test for src/Yay/Component/HttpFoundation/Request/ParamConverter/JsonFieldConverter is missing.

Add separate webhook section including examples

With #20 the engine now supports simple webhooks. The idea is to extend the documentation with a new chapter about (incoming & outgoing - not ready) webhooks. Examples for usage with systems like TravisCI or Github should be shown.

(Test) Write tests for commands

  • Yay\Bundle\IntegrationBundle\Command\EnableCommand
  • Yay\Bundle\IntegrationBundle\Command\DisableCommand
  • Yay\Bundle\IntegrationBundle\Command\ValidateCommand
  • Yay\Bundle\ApiBundle\Command\RecalculateCommand

(Draft) Outgoing webhooks

Based on the solution in #21 it will be possible to listen to internal events. Which these events a outgoing webhook could be executed and send payloads to third party systems.

Installation is broken

The build target calls the .application-build-docs target. The .application-build-docs target has a dependency on packages that are installed via install.

Solution:

  • remove the .application-build-docs target from build
  • add the .application-build-docs target to a new target build-docs

Introduce event system

  • Add events to engine
  • log to database
  • apply KISS
  • Add Controller in API bundle to display events.

Improve documentation

  • Restructure documentation
  • Add developer documentation #26
  • Add command documentation #104
  • Add custom documentation for API endpoints, filters, pagination and ordering
  • Frontpage (Single page)

    • Quote
    • Usage (yml + curl)
    • Get support
    • License
  • Getting Started

    • Requirements
    • Installation
    • Configuration
    • Usage / API
    • Examples
  • Customisation

    • Integration with Third-Party-Services
    • Hosting
    • Templates
  • Under the hood

    • Commands
    • Events
    • Webhook
    • Development
  • Contributing

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.