{"id":15418375,"url":"https://github.com/aditya30394/self-evaluation-portal","last_synced_at":"2025-08-03T21:31:23.413Z","repository":{"id":72533806,"uuid":"151008629","full_name":"aditya30394/Self-Evaluation-Portal","owner":"aditya30394","description":"The motivation behind the CSCE 625 Self Evaluation project is to help students in assessing their preparation for the graduate-level Artificial Intelligence course. This project can assist students in understanding the course prerequisites. By using this evaluation portal, the students can make an informed decision as to whether they are sufficiently prepared to register for the class.","archived":false,"fork":false,"pushed_at":"2020-05-23T17:24:14.000Z","size":5612,"stargazers_count":0,"open_issues_count":0,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-25T22:09:13.441Z","etag":null,"topics":["cucumber-tests","rspec-rails","ruby","ruby-on-rails","webapp"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aditya30394.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-30T21:27:27.000Z","updated_at":"2020-05-27T23:48:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"30d661d3-c293-491c-a7a6-d3b04f25a728","html_url":"https://github.com/aditya30394/Self-Evaluation-Portal","commit_stats":{"total_commits":84,"total_committers":9,"mean_commits":9.333333333333334,"dds":0.7261904761904762,"last_synced_commit":"7dc9a44e7503a5bd1534a0bc992d76f8f54ac110"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya30394%2FSelf-Evaluation-Portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya30394%2FSelf-Evaluation-Portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya30394%2FSelf-Evaluation-Portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditya30394%2FSelf-Evaluation-Portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aditya30394","download_url":"https://codeload.github.com/aditya30394/Self-Evaluation-Portal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228567026,"owners_count":17937985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cucumber-tests","rspec-rails","ruby","ruby-on-rails","webapp"],"created_at":"2024-10-01T17:20:31.696Z","updated_at":"2024-12-07T05:41:53.950Z","avatar_url":"https://github.com/aditya30394.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Self Evaluation Portal\n**Application Link** : https://shielded-caverns-97668.herokuapp.com/\n\n### Application Demo\n[![Application Demo](https://raw.githubusercontent.com/aditya30394/Self-Evaluation-Portal-CSCE625/master/homepage.JPG)](https://vimeo.com/305544529)\n\n## Summary\nThe motivation behind the CSCE 625 Self Evaluation project is to help students in assessing their\npreparation for the graduate-level Artificial Intelligence course. This project can assist students in\nunderstanding the course prerequisites. By using this evaluation portal, the students can make an\ninformed decision as to whether they are sufficiently prepared to register for the class.\n\nThe requirements for the project were provided by Dr. Duncan Walker, Professor, Texas A\u0026M\nUniversity. The key stakeholders of this project are prospective students, teaching assistants, and\nthe course instructors.\n\nAs this was a legacy application, a majority of the work dealt with enhancing existing features or\nimplementing architecture/design fixes. The key customer requirements were:\n1. Implementing Multiple-Choice Questions(MCQs)\n2. Supporting Mathematical equations in questions\n3. Automating grading/evaluation\n4. Setting up a password recovery system\n\nThrough this project, all the above requirements were met. The portal now supports\nMultiple-Choice Questions on top of the basic “Short Answer” questions. The feature to support\nMathematical equations in Questions/Answers was done using the MathJax library. Automatic\ngrading has been implemented for both MCQ and Short Answer questions in the Quiz module. In\naddition, the instructors now have the opportunity to reset “Lost Password”s.\n\nInitial code is taken as it is from this repo - https://github.com/wagerpascal/team_froyo \n\n## Features\n**Instructors**:\n1. Can login and add/edit/update questions and topics\n2. Can choose between a multiple-choice question or short answer type question\n3. Can add math in the questions\n4. Can recover passwords\n\n**Students**:\n1. Can take the quiz and evaluate their performance using the feedback and remarks generated at the end\n2. Can select the topics they want be tested on\n3. Can go through the questions like flashcards\n\n\n## BDD/TDD process\nWe followed the development process which was introduced in the class itself where we wrote\ncucumber tests which were used as acceptance tests and RSpec tests which were used for function\nlevel testing. Since most of our features required making modifications to the existing product,\nmany times we just had to add extra tests pertaining to our changes instead of writing the new\nfeature/Rspec files from the start. However, many tests were missing, so during the course of\ndevelopment, we added a lot of new tests. We targeted about 1-2 user stories per iteration that\nallowed to make sure that we thoroughly test the features before deployment instead of adding tests\ntowards the end to increase coverage.\n\n## Configuration Management Approach\nTo make sure that our production environment is clean, we used branch protection rules. We\ndecided that no one should be allowed to directly push changes to “master” and hence we created\nrules that required developers to have their changes reviewed by at least two other developers. As a\nresult, each developer would raise a pull request and upon being reviewed by two other developers,\nthe changes will automatically get merged with the master branch. This process really helped us and\nmost of the time our production environment was in a deployable state. None of the developers\nfaced any major merge conflict issue too. We had a total of over 45 branches (some have been\ndeleted) and 4 releases - one for each iteration.\n\n## Issues with Production releases\nHeroku does allow automatic deployment where we can specify our production branch and upon\nevery merge/commit to that branch, Heroku will run some automatic scripts and deploy our latest\nchanges. However, this feature never worked for us. We pointed the automatic deployment to our\n“master” branch, which we tried to keep clean, but the automation script always failed. We did\nspend some time to see the issue but it appeared to come because of the ruby version that we were\nusing. Unfortunately, one of our team members had to always deploy changes manually because of\nthis one time we thought that our latest changes have been deployed but during the demo to our\ncustomer, the latest changes were missing. We showed our development changes during that time\nwhich was working fine. Had this automatic deployment worked, we could have avoided this\nmanual deployment.\n\n## Issues with AWS, Cloud9 and Github\nWe didn’t face any issues with the Development environments.\nHowever, the production instance in Heroku doesn’t provide a free SMTP service. Hence, we had to\nperform a workaround to support the Password Recovery feature.\n\n## Development Tools and Ruby Gems\nThe inline mathematical notation feature was implemented using the javascript library Mathjax. The\nchoice of this library was made considering its LaTeX markup and its extensive documentation.\nThe partial check for “Short Answer” questions was done using the fuzzy-string-match Ruby gem.\nWe used SimpleCov to generate the coverage report of our Ruby code. SimpleCov provided a\nsimple method for generating test coverage reports.\n\n## Important Links\n\n1. Final Customer Interview : https://vimeo.com/304276474\n2. Application Demo : https://vimeo.com/305544529\n3. Pivotal tracker : https://www.pivotaltracker.com/n/projects/2200809\n4. Heroku App : https://shielded-caverns-97668.herokuapp.com/\n\n## Challenges faced\n1. Even though addition of equations looked straightforward using the open-source library called MathJax, getting it to work correctly took us some time. We faced problems displaying equations during navigation between the questions.\n2. As Heroku doesn’t provide a free SMTP service, we came up with a workaround to support password recovery.\n3. The automatic deployment feature of Heroku never worked for us and we always had to perform manual deployment.\n\n\n### Customer Interview\n[![Customer Interview](https://raw.githubusercontent.com/aditya30394/Self-Evaluation-Portal-CSCE625/master/homepage.JPG)](https://vimeo.com/304276474)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya30394%2Fself-evaluation-portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faditya30394%2Fself-evaluation-portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditya30394%2Fself-evaluation-portal/lists"}