Code Monkey home page Code Monkey logo

kncli's Introduction

kncli's People

Contributors

overanalytcl avatar

Stargazers

 avatar Alex avatar Rares Stefan Dobre avatar Răzvan Matei Dedu avatar

Watchers

Rares Stefan Dobre avatar  avatar

kncli's Issues

Design the CLI UX

Description

This issue is dedicated to tracking the process of designing the command line user experience.

Tasks

  • Authentication
    • Log in
    • Log out
    • Check auth status
    • Switch accounts
      • This means I need to have the ability to add and delete users which need their own subcommands.
    • Refresh stored auth credentials
      • This would probably mean logging out (if the user is logged in) and then create a new session and log in transparently.
    • See session ID (token)
      • Could be useful for scripting where you need to see the session ID. This isn't necessary (I believe), since one should use the CLI directly instead of calling the API (why would you choose that path?).
  • Interacting with contests
    • Joining a contest
    • Seeing the leaderboard
      • I'd need to find a way to display said leaderboard (so I'll do research into available libraries for drawing tables), along with offering support for showing only certain fields or sort by one or more fields.
    • Creating contests
      • Is this something users can do?
    • Accept invitations (which would mean getting them, although this is more of an UI thing)
    • Getting the problems on a contest
    • I'll update things later here
  • Interacting with problems
    • Get problems by name or ID
    • Display the statement
      • I am interested in Glamour for this task, since it is a native Go library and it's just so wonderful for the job.
      • I can't display $\LaTeX$, but that's expected.
    • Search for problems
    • Get statistics for a given problem
      • The research on the leaderboard display also applies here.
    • See the tags of a problem (this could be under a flag instead of a separate subcommand)
  • Submissions
    • Create submission
    • Get submission (by ID)
    • Maybe delete your own submission?
    • Reevaluate a submission (self or admin)
  • Admin-specific things
    • Set admins and proposers
    • Various maintenance tasks (TBD, probably not for 0.1.0)
    • Get all users
  • Proposer- and editor-specific things
    • Create problems
    • Import problems from archive
      • Maybe make an interactive way of creating an archive if the directory is in a certain format?
    • View tests for a problem
      • Adding tests
      • Deleting tests
      • Updating test info
    • Add and update subtasks
    • Add attachments
    • Add editors and viewers (is this on the admin side?)
    • Delete a problem
    • Toggle visibility of problem
    • Create problem lists
  • Problem lists
    • Filter them
    • Get by name
    • Get problem list
    • Updating and deleting
      • This feels like something that users shouldn't do
  • Users
    • Get info about an user
      • Name
      • Solved problems
      • Bio
    • Deauth all sessions (either self or by an admin)
    • Find by name or ID
    • Set bio
    • Set preferred language or theme
      • This seems more useful for the UI than the CLI, but I'll consider localization later if Cobra lets me do it
    • Change email
    • Change password
    • Change name
  • Other things I didn't consider at this moment.

This issue will obviously change, it's mostly a discussion. Feedback welcome.

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.