autograder-org / autoGrader-frontend

An automated assignment grading system that leverages LLMs and AI to enhance grading efficiency and reliability. It includes modules for data input, criteria definition, AI integration, consistency checks, and comprehensive reporting, aimed at improving educational outcomes.
https://autograder.dev
4 stars 5 forks source link

Designing User Entity and Persistence of user data #6

Open parthasarathydNU opened 5 months ago

parthasarathydNU commented 5 months ago

Overview

As part of the development of the AutoGrader project, a robust and scalable database schema is essential to support the dynamic features detailed in the UI design (Issue #7). The goal is to create a database schema that not only accommodates the current functionalities but is also flexible enough to handle future expansions.

Repo:

https://github.com/autograder-org/autoGrader-api

Objectives

Required Features Integration

The schema must support:

Upcoming Features Support

Prepare the database for:

Design Considerations

Feedback and Iteration

Documentation

lokvenkatesh commented 4 months ago

Designing User Entity and Persistence of user data.docx

parthasarathydNU commented 4 months ago

Designing User Entity and Persistence of user data.docx

@lokvenkatesh - the document looks good, has covered most of the aspects required for the feature implementation. I noticed that you have gone with a Relational Database implementation with Normalized data. I would like to know the rationale behind it and why not go with a NoSQL database. I want to evaluate that aspect before we start implementing this as part of an API.

techdevsynergy commented 4 months ago

@parthasarathydNU the main thing you need to think conceptually in deciding sql or nosql is if your application need select, update, delete and insert / multiple users will access the same record then you need to go with sql (RDBMS) since its ACID compliant. Most of the nosql DB's are ACID non compliant except mongodb meaning only if your application has select,insert and delete you need to roll with it if multiple user update the same record it might not update the record properly in right sequence. For your use case its better to go with rdbms since i dont think you will get terabytes of data like logs storage where nosql is really good option. Hope this helps in your decision :)

parthasarathydNU commented 4 months ago

@dharsan18 In this case, we will be isolating data per user to start off with, we don't have the concept of a team / multiple users working on the same entity yet. Later we might include features to allow students and professors to to access shared resources. The first version, would just include a user logging in, opening the app and trying out the different features - Assignment Creation, Rubric Creation and a coming soon card that talks about subsequent features. I kind of like the way you are justifying the use of RDBMS here. Further I think that given the fact all the views on the front end for this feature need normalized data ( user profile just needs user data ), Persona Tab just needs persona data, we can stick to RDBs for now. At this stage I think it's too early to sort of justify the need of a NoSQL over SQL. Also do let me know if you would like to pitch in with helping with development of the API service.

techdevsynergy commented 4 months ago

@parthasarathydNU i dont have lot of free time since i work in very early startup but would like to contribute with respect to backend design. I saw for frontend you are going with nextjs what you are thinking for backend stack ? i think python based right ?

parthasarathydNU commented 4 months ago

@dharsan18 - Since there isn't much of Machine Learning / Data manipulation required for the API service, I am thinking of going ahead with either a Node / Java based backend. I wouldn't mind going ahead with a Python based web service as well, however I have better familiarity with Node. All tasks that require LLMs will be through API calls to Open AI's service so I don't see any particular reason to pick a stack apart form familiarity with the framework / language. Open to hear your thoughts. Further since this will be a separate service, we'll have to start a separate Repo for the API. I understand you are busy with work, but if you can pitch in - in terms of doing a QC on the PRs, design decisions related to the backend. That is much appreciated as well 😄

parthasarathydNU commented 4 months ago

Created a separate REPO for the AutoGrader API: https://github.com/autograder-org/autoGrader-api

Open to feedback on the ReadmeFile: