Skip to content

Commit d07b09c

Browse files
authored
Merge pull request #227 from jaydip1235/master
feat: Final blog of CircuitVerse Practise section GSoC'24
2 parents 1148b33 + 4a26e0a commit d07b09c

File tree

15 files changed

+196
-0
lines changed

15 files changed

+196
-0
lines changed
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
---
2+
title: "CircuitVerse Practice Section"
3+
date: 2024-09-13T14:22:06+05:30
4+
draft: false
5+
author: Jaydip Dey
6+
type: post
7+
---
8+
9+
This blog post is the final report for the **CircuitVerse Practice Section** , which is a part of **Google Summer of Code 2024**. The project aimed to create a practice section where user can practice circuit related problems.
10+
11+
12+
![final_report](/images/Jaydip_GSoC24/Final_Report.png)
13+
14+
15+
## Table of Contents
16+
17+
18+
{{< toc >}}
19+
20+
21+
---
22+
23+
24+
### Implemented features
25+
26+
27+
- 👥 **Moderator Role Administration**: Allowing admins to add and remove question moderators.
28+
29+
30+
- 🔧 **Question Category Management**: Allowing admins and moderators to create and delete question categories.
31+
32+
33+
- 🔍 **Question Listing**: Features including search, filtering capabilities, pagination, and view options.
34+
35+
36+
- 📝 **Question Management with Simulator Integration**: Allowing admins and moderators to add, edit, and delete questions. Users can attempt a question with circuit boilerplate.
37+
38+
39+
-**Auto Verification and Submission**: Auto-verify and submit circuits, storing users' progress.
40+
41+
42+
- 📊 **User Dashboard**: A dashboard to track submission history and progress, with the ability to toggle visibility.
43+
44+
45+
- 🚦 **Feature Access Control**: A Flipper feature flag to control access/block this entire feature.
46+
47+
---
48+
49+
### 👥 Moderator Role Administration 👥
50+
51+
From the admin dashboard, admins can add new moderator email IDs or remove existing ones.
52+
53+
![image](/images/Jaydip_GSoC24/manage-mod-2.webp)
54+
55+
56+
### 🔧 Question Category Management 🔧
57+
58+
Similar to the moderator management feature, in the dashboard there will be an option for `Add categories`. But unlike Add modertaors , Add Categories will be visible to both question bank moderators and the admins. Clicking this button will open a modal where user can add a new category or delete and existing one.
59+
60+
61+
![image](/images/Jaydip_GSoC24/categories.png)
62+
63+
64+
The below screenshot shows the placement of the above two feature buttons:
65+
66+
67+
![image](/images/Jaydip_GSoC24/mod_cat.png)
68+
![image](/images/Jaydip_GSoC24/admin-mod.png)
69+
70+
71+
### 🔍 Question Listing 🔍
72+
73+
74+
This is the page where users will be able to browse and view questions. The features implemented on this page include:
75+
76+
77+
- Search filer to search for any questions based on its title or description.
78+
- Filter by question category, difficulty level and status (attempted, unattempted or solved).
79+
- Change the view to list or grid mode. By default, all the questions are displayed in grid view.
80+
- Pagination is implemented to display a maximum of 6 questions per page.
81+
82+
83+
![image](/images/Jaydip_GSoC24/question_other.png)
84+
85+
86+
### 📝 Question Management with Simulator Integration 📝
87+
88+
89+
Moderators will be able to create/delete/edit a question.
90+
91+
92+
##### Create question
93+
94+
95+
* Moderators will be given a form where they click on `Add Question` menu in the dropdown.
96+
In that form they can add question heading, statement (**markdown supported**), question category and difficulty level.
97+
98+
99+
![image](/images/Jaydip_GSoC24/add-q.png)
100+
101+
102+
* On clicking `Create Circuit boilerplate and Test Data`, simulator page will be opened to add circuit boilerplate, which will contain input/output probes and a pre-configured testbench. Moderator needs to click on save on the top right after adding boilerplate and testbench data. This gives users a ready-made setup to start solving digital logic problems.
103+
104+
105+
![image](/images/Jaydip_GSoC24/boilerplate.png)
106+
![image](/images/Jaydip_GSoC24/add_question_flow.png)
107+
108+
109+
##### Edit and delete question
110+
111+
112+
* Moderators and admins will be able to edit and delete a questions. On the questions page, two additional buttons, `Edit` and `Delete` will be available for modifying or removing a question. When the Edit button is clicked, a form similar to the one used for creating a question will appear, pre-populated with the existing question's data.
113+
* On clicking the delete button an alert will be shown to confirm the action, and on clicking yes, questions will be deleted.
114+
115+
116+
![image](/images/Jaydip_GSoC24/edit_delete.png)
117+
118+
119+
##### Simulator Integration
120+
121+
122+
* When the user clicks on a question, then the question is displayed alongside the circuit boilerplate which the moderator has configured while creating the question.
123+
* TestBench is removed from the UI , so that user can't see hidden test cases while attempting a question.
124+
125+
126+
![image](/images/Jaydip_GSoC24/question.png)
127+
128+
129+
### ✅ Auto Verification and Submission ✅
130+
131+
132+
* When the user clicks on `Submit and Test` button, then the number of test case passed out of total number test cases (provided in the testBench while creating question) is shown as an alert.
133+
If all the test cases are passed, then it goes under `solved` category else it goes under `attempted` category.
134+
* **Progress of the user is also saved**. When the user clicks the `Submit and Test` button, their progress is saved, allowing them to resume later from the same point where they left off.
135+
136+
137+
138+
139+
### 📊 User Dashboard 📊
140+
141+
142+
* In the dashboard a separate tab named `My Questions` is added beside `Collaborated Circuits` tab. In this tab an user can see all the questions which he/she has **attempted** or **solved**. On clicking the `View` button, he/she will be able to attempt the question again and circuit will be restored from where he/she left off.
143+
144+
145+
![image](/images/Jaydip_GSoC24/my_questions.png)
146+
147+
148+
* User has also have an option to make the `My Questions` tab **public** or **private**. If a particular user makes his/her questions dashboard public, then other users will be able to see his/her submissions of a particular question in his `My Question` Tab on the url `users/:user_id` . **If he/she modifies that submission, then it will be reflected on his/her dashboard for the same question and not on other user dashboard**.
149+
150+
151+
![image](/images/Jaydip_GSoC24/question_privacy.png)
152+
![image](/images/Jaydip_GSoC24/privacy_flow.png)
153+
154+
155+
### 🚦 Feature Access Control 🚦
156+
157+
158+
A feature flag named `question_bank` has been added in flipper dashboard to enable or disable this feature. When enabled, all project features are accessible to members of the respective roles. When disabled, none of the features including administrative functions can be accessed.
159+
160+
161+
### 📅 Future work 📅
162+
163+
164+
- As of now user can see the latest submission of a partcular question and make changes on that. In future, they will be shown all list of submission of a particular question and can navigate to that submission.
165+
- Analysis of submission in the dashboard using more parameters like percentage of questions solved/attempted, highest streak etc. and on the basis of that rating can be introduced.
166+
- Currently teachers add assignments and those are checked manually, but this feature can be integrated with that to allow auto verification and assign marks.
167+
168+
169+
170+
171+
### 📥 Pull Requests 📥
172+
173+
174+
Pull request for the entire feature can be found [here](https://github.com/CircuitVerse/CircuitVerse/pull/5015)
175+
176+
177+
### 📝 Blogs 📝
178+
179+
180+
[**Phase 1 blog GSoC@24 Jaydip Dey**](https://blog.circuitverse.org/posts/jaydip_dey_phase_1_report/)
181+
182+
183+
- `week 0` - [GSoC@24 - Community Bonding](https://medium.com/@jaydipdey2807/community-bonding-period-at-circuitverse-google-summer-of-code-2024-097a13617f75)
184+
- `week 1 to 3` - [GSoC@24 - week 1 to 3 blog](https://medium.com/@jaydipdey2807/week-1-3-at-circuitverse-google-summer-of-code-2024-9accce10639dj)
185+
- `week 4` - [GSoC@24 - week 4 blog](https://medium.com/@jaydipdey2807/week-4-at-circuitverse-google-summer-of-code-2024-a134f59f05f4)
186+
- `week 5 & 6` - [GSoC@24 - week 5&6 blog](https://medium.com/@jaydipdey2807/week-5-6-at-circuitverse-google-summer-of-code-2024-87ea6f738cb4)
187+
- `week 7 & 8` - [GSoC@24 - week 7&8 blog](https://medium.com/@jaydipdey2807/week-7-8-at-circuitverse-google-summer-of-code-2024-1931cf66e654)
188+
- `week 9 & 10` - [GSoC@24 - week 9&10 blog](https://medium.com/@jaydipdey2807/week-7-8-at-circuitverse-google-summer-of-code-2024-1931cf66e654)
189+
- `week 11 & 12` - [GSoC@24 - week 11&12 blog](https://medium.com/@jaydipdey2807/week-11-12-at-circuitverse-google-summer-of-code-2024-a743d731035b)
190+
- `Extension period` - [GSoC@24 - Extension period blog](https://medium.com/@jaydipdey2807/extension-period-at-circuitverse-google-summer-of-code-2024-e858a414a202)
191+
192+
193+
194+
195+
### 📌 Conclusion 📌
196+
The project has been successfully completed, achieving all its objectives. This new `CircuitVerse Practise Section` feature is ready for integration into the main CircuitVerse repository. The past 12 weeks have been an incredible experience working on this project and collaborating with the team. I’m deeply grateful to the mentors for their unwavering support and willingness to address any doubts I had. I look forward to continuing to contribute to CircuitVerse and am always happy to assist fellow contributors in the future.
429 KB
Loading
232 KB
Loading
357 KB
Loading
55.1 KB
Loading
33.7 KB
Loading
488 KB
Loading
98.7 KB
Loading
226 KB
Loading
108 KB
Loading

0 commit comments

Comments
 (0)