So, previous milestone could not be completed, since we moved from MySQL to Dgraph Database. So I invested time on learning about Graph Databases, GraphQL, Cypher, Dgraph, DgraphGoClient.
This week, I am planning to map Mysql Schema to the Dgraph and start writie code for it. Having few question regarding dgraph’s query, will ask on different thread.
To keep things moving, you can skip learning about Cypher, we don’t use it. Regarding the schema, the one I’d mentioned above should mostly give you what you need. And as we need more things, we can expand on that.
We also have a pending issue that @ashwin95r is working on, to auto allocate new uids. So, my suggestion would be to start with some code and get your first PR into review – things can change considerably once people have a look, so there can be a lot of back and forth iteration, particularly on the initial PRs.
Yes, I am skipping cypher. I am finally working on schema that you have provided, made some changes to it. Updating thread. Will write code for add/modifying the question, it will help to make other features as well.
Quite a rough two weeks, got problems with dgraph response, parsing it, and debugging code for better solution.
I could not work on weekend due to unexpected travelling.
But the problem with response parsing have been fixed now, I have parsed the Dgraph response now.
Added API calls for storing basic properties for Question, Tags, Quiz. (Need to store relationship with each other)
@mrjn and @pawan have proposed to have a root for quiz and question, need to try this.
This week I’ll work for storing relationship and complete the above APIs and Candidate’s APIs for quiz.
So the milestone is completed, and done some extra work too.
What is completed: Adding quiz question, options, answers and tags (Backend + UI)
Extra Work: Wrote backend for Updating too. But got errors for deleting the relationship (Like removing tags from question). The issue is same as : “After” argument can not parse uid Bug.
Milestone for this week:
There are known bugs related to UI (Tagging, form validations, Proper URL handling, better UX/design) which needs to be done.
Updation/deletion of Quiz/Question/Tags relationship (Problems with “Delete” query)
UI pagination with data (Problems with “After argument”).
Refactor Backend code.
Candidate Facing APIs for taking Quiz (Inviting user through email, authentication) or at least think through this.
I tried this @Rahul-Sagore. I don’t think we can call adding quiz qn as complete. Show all qns to me just shows the latest questions that was added. That is it just shows one qn to me which I added most recently. Did you try adding multiple questions? Where you able to see them in the Show All page?
We need to make the CRUD on questions robust before we can move to other things.
Yes, I tried, with multiple question. It is displaying all the question that was saved.
After adding question, you need to reload the “Show all” question page, It’s Single page application that’s why on changing url it did not hit the API. After reloading it will show all. This is the problem with “Proper URL” handling mentioned in above milestone.
Fixed known bugs (Form Validation, Proper URL Handling)
Updation of Quiz and Questions, backend + UI.
Refactored Go api for updating and fetching quiz/question, restfully. Integrated Codemirror library for question text (Admin can now enter formatted text/code in question)
Candidate Invite. Listing of Candidates associated to a particular quiz. Updating Candidates information.(UI).
Login/Logout System. (User can not see admin panels without using authenticated username and password).
Refactored Angular’s code, wrote modular Angular Services for making API calls.
This Week’s Milestone:
Will fix more UI related bugs.
Need to change the “Update Question UI” due to CodeMirror textarea.
Need to implement paginaton for long lists.
Will work on Candidate Facing UI, for Quiz Taking.
Let’s deploy whatever is complete today. I will provision a instance and share details with you @Rahul-Sagore. It would definitely be useful to get some early feedback.