Code Monkey home page Code Monkey logo

eval's Introduction

eval

Simple tool for chess players to keep track of chess games and analysis.

Give it a try right away at https://evalwebmvc.azurewebsites.net/

Background/about

For ambitious chess players, careful analysis of played games (especially defeats/draws) is an important tool in learning from past mistakes. This application is intended to serve as a platform for players to store and keep track of played games and analysis, which can serve as focal points for future improvement efforts.

Contributing

If you have suggestions for improvement/new feature, experience an error or similar, I would be grateful if you could create an issue.

Screenshot of eval in use

evalMatchIndex-cropped-second

eval's People

Contributors

mnabe avatar

Stargazers

 avatar

Watchers

 avatar  avatar

eval's Issues

Publish application on Azure

  • Publish MVC project on Azure: ✅
  • Set up with AuthDbContext: ✅
  • Rename TempContext to MatchContext: ✅
  • Publish backend/API on Azure: ✅
  • Set up with MatchDbContext: ✅

Improve API-endpoints, v2

Should be implemented after #18

Comply with REST principles

  • Implement caching
  • Implement HATEOAS (research how this should be done for a frontend client). Update: On a second thought, this may not be relevant since I don't expose the API.

Might require slight refactor in the frontend as well.

Improve properties

  • "Reason for loss or draw" should probably be renamed to "Analysis"
  • "Time control" should probably be an enum of Bullet, Blitz, Rapid and Classical instead of a text-field/string

Implement base for testing

For example:

  • Implement unit tests, integration tests, maybe benchmarking etc.
  • Afterwards, set it up with GitHub Action pipelines #4

Add optimizing properties to Match-model

As a user, I am able to:

  • register and save PGN
  • link to game on e.g. lichess or chess.com
  • specify time control
  • specify playing color
  • specify opening

Requires investigation into how to go about saving pgns, and consideration of importance of saving playing color as well as opening.

Playing color should probably be enum.

Improve API-endpoints, v1

Initially, the following is required

  • Basic error/exception handling (.e.g try-catch) and validation
  • Appropriate HTTP Status Code responses
  • Produces-annotation for control and Swagger documentation (however, Swagger-docs is only for internal use, so lower priority)

Might require slight refactor in the frontend as well.

Add model for Match

Add properties such as Date (which date was the game played), opponent (name), and reason for loss.

Port frontend from MVC-View to Angular

The MVC-View layer is going to be exchanged with Angular 2.0.

This task as a whole needs to be divided into several subtasks. As a first task, just one of the simpler pages, e.g. the page "About" or "Changelog will be ported/converted to Angular.

Loaders upon application startup

If the website hasn't been visited/used for a while, it takes extra time to load the website upon first visit (spins up MVC project) and first login (spins up API project) - maybe around 3-5 seconds for each.

It would be nice to have some loading animation or similar meanwhile, if it's possible, or figure out how to avoid the extra initial load times.

Redirect to Match/Index

  • After creating a new match (and in all cases where it doesn't happen) ✅
  • If user is logged in when going to homepage (from Home/Index) ✅

Add ServiceCollectionExtension of AutoMapper in repository-project

First of all, pros and cons of using AutoMapper should be researched a bit more. In general, it can be assumed, that it will give better performance to do manual mapping, but it will also result in more boilerplate code.

If it is decided to keep AutoMapper:

  • Investigate whether it is possible to exclusively register AutoMapper-dependencies in repository-project with ServiceCollectionExtension, so that it is possible to remove the AutoMapper NuGet-package from API-project.

  • At the same time, investigate whether the service lifetime of IMapper is appropriate or should be changed. It is not an issue in itself, which is why I attach the starting point of the following interesting discussion on this issue for now instead: AutoMapper/AutoMapper#2569

Handle API requests with CQRS

Split queries and commands etc. in accordance to CQRS. Can be supported with MediatR-library.

This is not a part of Release 1.0.0. Initially, API requests will be handled in a simpler manner to allow for faster development.

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.