Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Technical Debt #47

Open
9 of 72 tasks
lastmjs opened this issue Sep 24, 2018 · 1 comment
Open
9 of 72 tasks

Technical Debt #47

lastmjs opened this issue Sep 24, 2018 · 1 comment

Comments

@lastmjs
Copy link
Owner

lastmjs commented Sep 24, 2018

  • Remove paper-toast and all Polymer dependencies from prendus-question-elements
  • Check status of Kharma, make sure Guesswork is completely up to date
  • Get all tests to pass for prendus-view-question
  • Think of a new name for this project
  • Rename all prendus projects
  • No TypeScript errors
  • No explicit any types
  • Basic tests
  • Continuous integration
  • Continuous delivery
  • The fade transitions between assessments sometimes doesn't work...the fade doesn't happen, it just flashes to the new question
  • Fix janky transition between exercise and solution (rendering and state issues with the solution)
  • Rendering in the assessment component and prendus-view-question needs to be seriously reconsidered. Hacks galore, implerativeness galore, evil
  • Add JS logo on initial load?
  • Make it a PWA
    • Service worker: fix Zwitterion to use self instead of window on live-reload
  • Make the menu way better
    • Make it slide out
    • Darken everything behind it
    • Ensure everything behind it keeps the same size
  • Hamburger menu bars
    • The bars don't always have the correct height...perhaps rethink em/calc (em is probably causing it)
  • It would be nice to deal more elegantly with CORS and our local lambda setup. Follow this issue: allowing requests from any origin netlify/netlify-lambda#28
  • Figure out a better bundling solution for our local lambda development, netlify-lambda's webpack setup seems to take 30-60 seconds to update
  • Zwitterion should really exit with a non-zero status code when build errors are encountered. If there is a build error, Netlify just hangs for like 30 minutes before the build finishes, and I can't manually cancel the build
  • Create a library that removes certain things from a graphql schema, so we can have one schema that can be fed into Prisma and into our application server
  • Open an issue on lit-html describing the max call stack issue you have when registering the render method and synchronously calling an action during the same queue execution. Create a minimal example
  • Once we start using shadow dom, put the jp-container css class into a component. I don't want to start using shadow dom at least until Firefox and Edge both have working implementations. FireFox will happen October 2018, I'll bet Edge support will happen sometime in 2019
  • Check answers on the server, right now users can cheat the system from the client (most probably won't, so for the MVP we're okay)
    • Figure out web workers in Node, and upgrade secure-eval for node (figure out iframe sandboxing in node)
    • Perhaps we should implement something in webassembly, this might fix most of the security issues we've been having since it is a secure sandbox by default. The problem would be all of the JavaScript that we use to execute the check answer and other functionality...
  • Add transaction/rollback support to all mutations in resolvers...there shouldn't be that many at first, but there is no transactional guarantee for some things in checkAnswer right now
  • Add transitions in all places
  • Get rid of alerts
  • Switch to AWS RDS?
    • We might not need to switch for a while, potentially during the beta we will be okay to keep everything on the simple Prisma development servers
  • Add password reset
  • Add email confirmation
  • Build our own custom stacking notification system
  • Notifications repeat the same messages over and over with paper-toast, we should perhaps not add a message if it is already in the notifiactions array, though you probably would want to do that if you were showing the user the points they are earning or losing
  • Add colors to notifications
  • Optimize GraphQL queries
    • Sometimes I just do what's easiest, instead of doing what's more efficient. Sometimes that makes sense, sometimes it doesn't
  • Eventually (not right now) if their answer is blank, we should make them attempt the question (enter text) before attempt will deduct tokens. This will kind of provide an incentive for learning I think.
  • add privacy policy #7: Eventually (not right now) we should put the solution button somewhere a bit more intuitive. Remember when you used to have a tab for the question and a tab for the solution? That worked pretty well. We should think about something like that because having solution next to the Submit, Prev, Next is a little confusing.
  • Do not repeat the types in datamodel.prisma in the file datamodel.js...we really need to talk to Prisma and get them to allow custom directives to remain when generating typedefs, and also allow custom mutations and queries in the datamodel.prisma file...I hope that they will see the way I propose as the better way...update the article, create a library if possible to work around the issue
  • Fix fragments for resolvers. Our solution will be much more elegant once this issue is resolved: Add fragments in schema directives ardatan/graphql-tools#984
  • Prepare the query resolvers, add id to all nested requests as well
  • Token price calculation will break if the token price is greater than $5.00, which is the minimum we allow a user to buy at a time
  • Store the minimum amount of tokens the user can buy at a time in the database
  • Hiding and showing the load indicator...we need to queue the shows and remove from the queue when we hide, otherwise all of the asynchrony ruins the hiding and loading
  • Add the ability to parse the user's input into an AST, and validate it. There are some questions that will only be able to be accurately checked by verifying the AST.
  • Use anchors everywhere as appropriate, page.js intercepts them
  • We might not be allowed to have a minimum purchase price of $5...we can if we only accept credit cards, but if we also accept debit cards I believe it is not allowed
    • Wait until we hear back from Stripe. The best thing to do is probably to block debit cards
  • When there is only one exercise in a concept, clicking next to the page that says there are no more concepts does not give a way to go back (the previous button is disabled because it started out disabled). In practice, there won't be concepts with only one exercise for very long, so it probably doesn't matter
  • The AuthPayloads that only return success, you should make them return just true or false directly, no selection set
  • Text editor highlighting needs to be better
  • It feels a little off that I can't scroll the exercise with the mouse positioned in the whitespace to the left/right of the exercise and code editor, and that no scroll bar is visible in the exercise section (at least on Chrome on macOS)
  • Somehow save the state of the user's inputs so that when they come back, it's all there
  • It would be nice to declaratively interact with the prendus-view-question, like not having to call showSolution() and showExercise(), and keeping certain properties in sync probably through events
  • Consider adding some kind of links or resources page, so that someone can get requisite knowledge before jumping straight in
  • Use Symbols to create a unique id for each instance of a custom element during runtime...this will easily allow us to do local state without having to depend on a unique id library
  • Study React hooks: https://reactjs.org/docs/hooks-intro.html
  • Study getting rid of classes in components, use functions
    • You'll have a function that takes the name of the element, an array of property names, and a function as parameters. The function that is the last parameter will take parameters props, constructed, connected, and instance. These correspond to the lifecycle of the custom element. With the info passed into the first function, construct a custom element with a class. Use the property names to set up setters. Call the function passed in on the lifecyce methods.
    • Return the updated property values and the lit-html template...allow the function to be asynchronous
    • Look into: https://github.com/Swiip/compo
    • https://github.com/hybridsjs/hybrids
  • Add a bunch of assessments on template string literals
  • Do not use the assessmentid for indicating states, use properties specifically for that purpose instead. We're now mixing concerns of the assessmentid and other properties
  • When saving without typing into either editor, empty strings should be set for assessml and javascript, and the exercise should still save
@8eecf0d2
Copy link

If you're interested checkout 8eecf0d2/netlify-local as an alternative to netlify/netlify-lambda which removes cors issues for Netlify sites using the Static File Server and Function features.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants