-
Notifications
You must be signed in to change notification settings - Fork 62
feat: Final blog of CircuitVerse Practise section GSoC'24 #227
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
Merged
Merged
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
9775ecd
phase-1 blog
jaydip1236 5d5d2c8
phase-1 blog
jaydip1236 d00a9e6
phase-1 blog
jaydip1236 05cd5bc
phase-1 blog
jaydip1236 5b60ecd
phase-1 blog
jaydip1236 bab091c
phase-1 blog
jaydip1236 039e90b
fix: changes on the basis of review comments
jaydip1236 a96b8d2
fix: changes on the basis of review comments
jaydip1236 e47e358
Merge branch 'CircuitVerse:master' into master
jaydip1236 e4e9ce4
final blog
jaydip1236 4857c45
final blog
jaydip1236 b54ad4a
final blog
jaydip1236 1da3e84
fix: changes based on review comments
jaydip1236 02a9e85
fix: spelling
jaydip1236 e27124b
fix: heading changes
jaydip1236 4a26e0a
fix: title changes
jaydip1236 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,196 @@ | ||
| --- | ||
| title: "CircuitVerse Practice Section" | ||
| date: 2024-09-13T14:22:06+05:30 | ||
| draft: false | ||
| author: Jaydip Dey | ||
| type: post | ||
| --- | ||
|
|
||
| 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. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| ## Table of Contents | ||
|
|
||
|
|
||
| {{< toc >}} | ||
|
|
||
|
|
||
| --- | ||
|
|
||
|
|
||
| ### Implemented features | ||
|
|
||
|
|
||
| - 👥 **Moderator Role Administration**: Allowing admins to add and remove question moderators. | ||
|
|
||
|
|
||
| - 🔧 **Question Category Management**: Allowing admins and moderators to create and delete question categories. | ||
|
|
||
|
|
||
| - 🔍 **Question Listing**: Features including search, filtering capabilities, pagination, and view options. | ||
|
|
||
|
|
||
| - 📝 **Question Management with Simulator Integration**: Allowing admins and moderators to add, edit, and delete questions. Users can attempt a question with circuit boilerplate. | ||
|
|
||
|
|
||
| - ✅ **Auto Verification and Submission**: Auto-verify and submit circuits, storing users' progress. | ||
|
|
||
|
|
||
| - 📊 **User Dashboard**: A dashboard to track submission history and progress, with the ability to toggle visibility. | ||
|
|
||
|
|
||
| - 🚦 **Feature Access Control**: A Flipper feature flag to control access/block this entire feature. | ||
|
|
||
| --- | ||
|
|
||
| ### 👥 Moderator Role Administration 👥 | ||
|
|
||
| From the admin dashboard, admins can add new moderator email IDs or remove existing ones. | ||
|
|
||
|  | ||
|
|
||
|
|
||
| ### 🔧 Question Category Management 🔧 | ||
|
|
||
| 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. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| The below screenshot shows the placement of the above two feature buttons: | ||
|
|
||
|
|
||
|  | ||
|  | ||
|
|
||
|
|
||
| ### 🔍 Question Listing 🔍 | ||
|
|
||
|
|
||
| This is the page where users will be able to browse and view questions. The features implemented on this page include: | ||
|
|
||
|
|
||
| - Search filer to search for any questions based on its title or description. | ||
| - Filter by question category, difficulty level and status (attempted, unattempted or solved). | ||
| - Change the view to list or grid mode. By default, all the questions are displayed in grid view. | ||
| - Pagination is implemented to display a maximum of 6 questions per page. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| ### 📝 Question Management with Simulator Integration 📝 | ||
|
|
||
|
|
||
| Moderators will be able to create/delete/edit a question. | ||
|
|
||
|
|
||
| ##### Create question | ||
|
|
||
|
|
||
| * Moderators will be given a form where they click on `Add Question` menu in the dropdown. | ||
| In that form they can add question heading, statement (**markdown supported**), question category and difficulty level. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| * 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. | ||
|
|
||
|
|
||
|  | ||
|  | ||
|
|
||
|
|
||
| ##### Edit and delete question | ||
|
|
||
|
|
||
| * 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. | ||
| * On clicking the delete button an alert will be shown to confirm the action, and on clicking yes, questions will be deleted. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| ##### Simulator Integration | ||
|
|
||
|
|
||
| * 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. | ||
| * TestBench is removed from the UI , so that user can't see hidden test cases while attempting a question. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| ### ✅ Auto Verification and Submission ✅ | ||
|
|
||
|
|
||
| * 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. | ||
| If all the test cases are passed, then it goes under `solved` category else it goes under `attempted` category. | ||
| * **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. | ||
|
|
||
|
|
||
|
|
||
|
|
||
| ### 📊 User Dashboard 📊 | ||
|
|
||
|
|
||
| * 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. | ||
|
|
||
|
|
||
|  | ||
|
|
||
|
|
||
| * 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**. | ||
|
|
||
|
|
||
|  | ||
|  | ||
|
|
||
|
|
||
| ### 🚦 Feature Access Control 🚦 | ||
|
|
||
|
|
||
| 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. | ||
|
|
||
|
|
||
| ### 📅 Future work 📅 | ||
|
|
||
|
|
||
| - 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. | ||
| - 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. | ||
| - Currently teachers add assignments and those are checked manually, but this feature can be integrated with that to allow auto verification and assign marks. | ||
|
|
||
|
|
||
|
|
||
|
|
||
| ### 📥 Pull Requests 📥 | ||
|
|
||
|
|
||
| Pull request for the entire feature can be found [here](https://github.com/CircuitVerse/CircuitVerse/pull/5015) | ||
|
|
||
|
|
||
| ### 📝 Blogs 📝 | ||
|
|
||
|
|
||
| [**Phase 1 blog GSoC@24 Jaydip Dey**](https://blog.circuitverse.org/posts/jaydip_dey_phase_1_report/) | ||
|
|
||
|
|
||
| - `week 0` - [GSoC@24 - Community Bonding](https://medium.com/@jaydipdey2807/community-bonding-period-at-circuitverse-google-summer-of-code-2024-097a13617f75) | ||
| - `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) | ||
| - `week 4` - [GSoC@24 - week 4 blog](https://medium.com/@jaydipdey2807/week-4-at-circuitverse-google-summer-of-code-2024-a134f59f05f4) | ||
| - `week 5 & 6` - [GSoC@24 - week 5&6 blog](https://medium.com/@jaydipdey2807/week-5-6-at-circuitverse-google-summer-of-code-2024-87ea6f738cb4) | ||
| - `week 7 & 8` - [GSoC@24 - week 7&8 blog](https://medium.com/@jaydipdey2807/week-7-8-at-circuitverse-google-summer-of-code-2024-1931cf66e654) | ||
| - `week 9 & 10` - [GSoC@24 - week 9&10 blog](https://medium.com/@jaydipdey2807/week-7-8-at-circuitverse-google-summer-of-code-2024-1931cf66e654) | ||
| - `week 11 & 12` - [GSoC@24 - week 11&12 blog](https://medium.com/@jaydipdey2807/week-11-12-at-circuitverse-google-summer-of-code-2024-a743d731035b) | ||
jaydip1235 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| - `Extension period` - [GSoC@24 - Extension period blog](https://medium.com/@jaydipdey2807/extension-period-at-circuitverse-google-summer-of-code-2024-e858a414a202) | ||
|
|
||
|
|
||
|
|
||
|
|
||
| ### 📌 Conclusion 📌 | ||
| 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. | ||
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.