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

Need DSA problems ASAP #112

Closed
hkirat opened this issue Apr 2, 2024 · 19 comments · Fixed by #203
Closed

Need DSA problems ASAP #112

hkirat opened this issue Apr 2, 2024 · 19 comments · Fixed by #203
Labels

Comments

@hkirat
Copy link
Collaborator

hkirat commented Apr 2, 2024

There is already a code type that shows code on the right, problem statement on the left
We need

Admin dashboard

Allow admins to put in

  1. Problem statement
  2. Title
  3. Test cases

User side

User can see the problem statement on the left
Code editor on the right
Submit the code

After the code is submitted, it hits a HTTP Endpoint which runs all test cases one after the other
We can use judge0 for this, assume it is already deployed

Languages to support for now -

  1. CPP
  2. Javascript
@hkirat
Copy link
Collaborator Author

hkirat commented Apr 2, 2024

Callout we already have a code type

@Rash-Hit
Copy link

Rash-Hit commented Apr 2, 2024

On It

@Rash-Hit
Copy link

Rash-Hit commented Apr 2, 2024

@hkirat .. using piston is fine ??

code.editor.mp4

@hkirat
Copy link
Collaborator Author

hkirat commented Apr 3, 2024

piston?

@hkirat hkirat added the urgent label Apr 3, 2024
@Rash-Hit
Copy link

Rash-Hit commented Apr 4, 2024

@hkirat , so i have used piston execute for running code - https://piston.readthedocs.io/en/latest/api-v2/#execute
in the above video . please check it . dont know its a good way or not

@nimit9
Copy link
Contributor

nimit9 commented Apr 4, 2024

Have started working on this, integrating it with judge0. Might take ~2 days.

@Rash-Hit
Copy link

Rash-Hit commented Apr 4, 2024

@nimit9 right now i am working on langauge support almost done ..

@nimit9
Copy link
Contributor

nimit9 commented Apr 4, 2024

Hey @Rash-Hit please go ahead with it, this is something where I think I'll get to learn something, so just building it out of fun and curiosity. Trying to build it very robustly and with a good looking UI. Won't be stealing your bounty lol

@Rash-Hit
Copy link

Rash-Hit commented Apr 4, 2024

@hkirat , can you please confirm the schema ?? or suggestions ?? @nimit9

image

@Rash-Hit
Copy link

Rash-Hit commented Apr 4, 2024

@hkirat Progress so far ..

Progress.So.Far.mp4

@akshatarora130
Copy link

@hkirat completed DSA Admin dashboard please have a look
Step 1 - Admin Login
Step 2 - Admin enters the problem name , description , topics , difficulty and number of input argument and Types for input and output
Step 3 - Admin adds the driver code , user code , solution for the problem and the test cases (minimum 2) to publish the problem
Step 4- Admin Publish the problem only if every details are completed

adminDashboardDSA.1.1.mp4

@SujithThirumalaisamy
Copy link
Contributor

@hkirat Progress so far ..

Progress.So.Far.mp4

If this is Monaco Editor. Add a path attribute to the editor which you can keep the language name. So that it will context switch and will give you the correct format even when you switch language.

Ref:

<Editor
          heading="Editor"
          height={"100%"}
          defaultLanguage={globalState.currentLanguage.languageCode}
          value={globalState.editorCode}
          onChange={setCode}
          theme={globalState.isDarkMode ? "vs-dark" : "vs-light"}
          options={options}
          path={globalState.currentLanguage.languageCode}
        />

@siinghd
Copy link
Collaborator

siinghd commented Apr 11, 2024

Might help someone, the db might can look like something like this

enum SubmissionResult {
  PENDING
  PASS
  FAIL
  RUNTIME_ERROR
  COMPILATION_ERROR
}

model User {
  id                Int           @id @default(autoincrement())
  submissions       Submission[]
  createdProblems   ProblemStatement[]
}

model ProblemStatement {
  id              Int           @id @default(autoincrement())
  title           String        @unique
  problemText     String
  testCases       TestCase[]
  submissions     Submission[]
  passedSubmissions Int @default(0)
  failedSubmissions Int @default(0)
  creator         User          @relation(fields: [creatorId], references: [id])
  creatorId       Int
}

model TestCase {
  id                Int           @id @default(autoincrement())
  input             String
  expectedOutput    String
  problemStatement  ProblemStatement @relation(fields: [problemStatementId], references: [id])
  problemStatementId Int
}

model Submission {
  id              Int           @id @default(autoincrement())
  code            String
  language        String
  result          SubmissionResult @default(PENDING)
  runtime         Int             // in milliseconds
  memoryUsage     Int             // in bytes
  errorMessage    String
  createdAt       DateTime      @default(now())
  problemStatement   ProblemStatement   @relation(fields: [problemStatementId], references: [id])
  problemStatementId Int
  user            User          @relation(fields: [userId], references: [id])
  userId          Int
}

This is for prisma but can be replicated :0

Hope it helps someone

@SujithThirumalaisamy
Copy link
Contributor

@hkirat Progress so far ..

Progress.So.Far.mp4

How is the current progress of this? Intrested in working on this! Feel free to add me with you.

@akshatarora130
Copy link

@hkirat completed DSA Admin dashboard please have a look Step 1 - Admin Login Step 2 - Admin enters the problem name , description , topics , difficulty and number of input argument and Types for input and output Step 3 - Admin adds the driver code , user code , solution for the problem and the test cases (minimum 2) to publish the problem Step 4- Admin Publish the problem only if every details are completed

adminDashboardDSA.1.1.mp4

@hkirat

UserDashboard.mp4

User Dashboard
More things that can be added

  • Submission Page
  • Solution page
  • Making the running time faster
  • UI can be enhanced

@akshatarora130
Copy link

@hkirat completed DSA Admin dashboard please have a look Step 1 - Admin Login Step 2 - Admin enters the problem name , description , topics , difficulty and number of input argument and Types for input and output Step 3 - Admin adds the driver code , user code , solution for the problem and the test cases (minimum 2) to publish the problem Step 4- Admin Publish the problem only if every details are completed
adminDashboardDSA.1.1.mp4

@hkirat

UserDashboard.mp4
User Dashboard More things that can be added

  • Submission Page
  • Solution page
  • Making the running time faster
  • UI can be enhanced

@hkirat If you like the prototype for both Admin and userDashboard I can create the pull request else if you want me to add some other features please tell

@nimit9
Copy link
Contributor

nimit9 commented Apr 12, 2024

@hkirat Completed ~60-70% of this

Pending Things:

  • Admin Dashboard FOrm to Create the PS, Test Cases
  • adding Runtime Error info in the test run section (right bottom panel)
  • Auth flow to submit the code with rate limiting
  • Improving the code structure.
  • UI Improvements (someone else can work on this, otherwise I'll take it up)

Below is the video with things already done, Using judge0 self hosted on local.
Please assign the issue to me, so that I can finish the pending work, and let me know if you'd need any changes in this.

Code.Submit.webm
Code-Exec.Test.Run.webm

@nimit9 nimit9 mentioned this issue Apr 13, 2024
7 tasks
@Prontent11
Copy link

I have created a similar project can i try to integrate that to this project
link of the project that i have created ->Video https://youtu.be/hTsJoKkY07U?si=NCNFPIsDKqcKypop
Codesubmission using Judege0 and Build using Nextjs

@SujithThirumalaisamy
Copy link
Contributor

@hkirat Completed ~60-70% of this

Pending Things:

  • Admin Dashboard FOrm to Create the PS, Test Cases
  • adding Runtime Error info in the test run section (right bottom panel)
  • Auth flow to submit the code with rate limiting
  • Improving the code structure.
  • UI Improvements (someone else can work on this, otherwise I'll take it up)

Below is the video with things already done, Using judge0 self hosted on local. Please assign the issue to me, so that I can finish the pending work, and let me know if you'd need any changes in this.

Code.Submit.webm
Code-Exec.Test.Run.webm

Nimit can you please update with the latest completed and pending things? I am ready to work on any of this mentioned.

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

Successfully merging a pull request may close this issue.

7 participants