GithubHelp home page GithubHelp logo

psfinaki / checkyourczech Goto Github PK

View Code? Open in Web Editor NEW
19.0 2.0 1.0 25.55 MB

The service to practice Czech grammar.

Home Page: https://check-your-czech.azurewebsites.net

License: GNU General Public License v3.0

F# 94.34% HTML 0.38% JavaScript 1.76% Batchfile 0.01% SCSS 3.50%
functional-programming czech webservice hacktoberfest

checkyourczech's Introduction

Hi there 👋

  • 🔭 I’m currently working at the F# language team in Microsoft.
  • 👯 I’d be happy to collaborate on things that bring something good to this world.
  • 💬 Ask me about F#, .NET, and testing. I like to help and have an active StackOverflow profile.
  • 📫 How to reach me: LinkedIn.
  • ⚡ Fun fact: I've been writing down my dreams for about 10 years already, a lot of fun and surreal stuff there.

checkyourczech's People

Contributors

dependabot[bot] avatar psfinaki avatar reflash avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

reflash

checkyourczech's Issues

Get result server-side

The project is going to heavily rely on type providers which are not supported in Fable.
Therefore the result should be got on server and passed to client via simple web requests.

Remove outdated tests

Bookstore tests have become outdated and now they are only messing up with building routine. For the time being, they should be removed - hopefully later new ones will be written.

Parameterize getting answer

Answer now is being got from wiki and the wiki link is hardcoded.
It should be dehardcoded with the parameter - word to check in the wiki.

Clean up solution file

Likely sln file contains a lot of unnecessary stuff from the times of BookStore app and slows down working in Visual Studio.

What can help is recreating solution from the beginning and adding there all that is really used.

Dehardcode the task from init function

Instead of "panda" being hardcoded in the model init(), it should go there via the message.
Then the real fetching of the from the server will be smoother.

Update the example app

Original example app did not work properly so it makes sense to merge updates from there as it is supposed to work now.

Remove empty shared folders

Solution contains Shared folder with Client.props and Shared.props_, both containing nothing. This is referenced from both Client.fsproj and Server.fsproj which likely slows down and complicated build process.

Therefore, until there is no real shared functionality, it should be removed.

Add missing executables to the repo

For some reason these files were not cloned from BookStore repo:

  • .paket/paket.exe
  • test/UITests/chromedriver.exe
  • test/UITests/geckodriver.exe

They should be downloaded and uploaded to the correspondent repos for proper auto build & release process.

Treat warnings as errors

Take all the power of static typing by restricting code from compiling if any warnings are emitted.

Simplify file referencing

Currently file referencing in the two projects are somewhat complicated - as the result, the Server project has files that it does not have any relation to.

Pass task word from service to client

Words will be generated server side because most likely they will be got using type providers available on at the backend.

For now, just passing a value from service to client will be alright.

Remove authentication

Authentication is not needed in the project currently - this template artifact should be removed.

Remove Wishlist

Wishlist is also not needed - time to get rid of it and whatever it brings to the code base.

Add advanced SAFE app

Task

Basic app is working however without the knowledge of the stack it is quite unclear how to fill it and how to deploy it. Therefore it should be easier to start with the BookStore example.

Remove issue template

The issue template here is inherited from the copied BookStore project whereas current project does not need such complications so far.

Thus the issue template should be deleted in order not to bother whoever submits a new issue here.

Handle tasks with multiple answers

Some nouns have two (maybe more?) variants of multiple, e.g. medvěd -> medvědi / medvědové. Thus instead of returning just a string from the declension table, the list of possible answers should be returned and the input should be compared with each of them.

Test WordProvider

Before running further, it is worth stopping for a while and writing some proper tests for WordProvider.fs.

Add basic SAFE app

Let the tech stack be SAFE for this app. It gets somewhat promoted at different events devoted to functional programming and has a cute web site. The tutorial should help to build some basic thing.

Merge changes from example app

This will be handy as they have fixed the opportunity to add Nuget packages to the solution.
FSharp.Data will be required quite probably.

Ignore wiki articles with nouns without declination

Some articles, even about Czech nouns, do not have a proper declination. For example, it may be an article about a word in a non-nominative case (antilopu) or already in a multiple number (turisté).

Those look strange as tasks and cannot be easily checked at the backend. Therefore they should not appear as tasks.

Make task part of the model

Currently panda is hardcoded in the UI as a task for the user. Instead tn should be part of the model, something like Task, as are Input and Result.

Switch and rename buttons

Button "OK" will make more sense when titled "Check" and button "Repeat" can be called "Next" instead.
Let us switch them because they have it like this in Duolingo - so it has probably passed the A/B testing and also the audience (haha) may be the same.

Remove unused logging

Logging is not used currently (and will not be for a while) so it makes sense to remove it along with the whole WindowsAzure dependency.

Do not reload the page after first answer

The page and the task loads - and after a user fills the answer and presses "OK" new word appears, along with "Incorrect" (always). Then this behavior does not repeat.

This is annoying. Instead, the correct response should appear (correct/incorrect) and the page should not load the new word until user wants.

Get random Czech noun for task

Currently there is panda hardcoded as a task. Instead it should be a random word.

In the beginning the idea was to get words from here. However that site does not seem to have any proper API to do it. Thus a way to go is to look for a random article in the wiktionary and pass the first noun found.

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.