{"id":16615536,"url":"https://github.com/domiii/self-asssessment-app","last_synced_at":"2026-04-27T03:32:22.212Z","repository":{"id":137713288,"uuid":"76349176","full_name":"Domiii/self-asssessment-app","owner":"Domiii","description":null,"archived":false,"fork":false,"pushed_at":"2018-01-29T04:52:34.000Z","size":2915,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-26T15:10:53.770Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Domiii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2016-12-13T10:36:35.000Z","updated_at":"2017-01-30T12:07:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"f3d5db0a-cc99-4b0f-a5db-e5db358ff572","html_url":"https://github.com/Domiii/self-asssessment-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Domiii/self-asssessment-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Domiii%2Fself-asssessment-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Domiii%2Fself-asssessment-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Domiii%2Fself-asssessment-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Domiii%2Fself-asssessment-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Domiii","download_url":"https://codeload.github.com/Domiii/self-asssessment-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Domiii%2Fself-asssessment-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32321461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-10-12T02:09:43.771Z","updated_at":"2026-04-27T03:32:22.178Z","avatar_url":"https://github.com/Domiii.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Simple Self-Assessment App\nBuilt with React, Redux, Firebase and [redux-react-firebase](https://github.com/tiberiuc/redux-react-firebase).\n\n## Get Ready #1: Install the app\n  1. `git submodule update --init --recursive`\n  1. `cd local_modules/react-redux-firebase`\n  1. (`git remote set-url --push origin git@github.com:Domiii/react-redux-firebase.git`)\n  1. `git checkout master`\n  1. `npm update` # (see [NPM issue #9707](https://github.com/npm/npm/issues/9707))\n  1. `cd ../..`\n  1. `npm update`\n\n## Get Ready #2: Setup firebase\n  1. `npm install -g firebase-tools`\n  1. `firebase login`\n  1. `firebase init` (with default settings)\n\n## Deployment\n  1. `npm run deploy` (requires full privileges for the firebase account)\n\n\n## Technology Stack\n  1. NodeJs\n  1. Bable (for [ES6](http://es6-features.org/) + ES7 support) ([a brief history of JS](https://benmccormick.org/2015/09/14/es5-es6-es2016-es-next-whats-going-on-with-javascript-versioning/), [一看就懂的 React ES5、ES6+ 常見用法對照表](http://blog.techbridge.cc/2016/04/04/react-react-native-es5-es6-cheat-sheet/))\n  1. React (front-end)\n  1. Redux (front-end data model)\n  1. Firebase (database)\n  1. redux-react-firebase (glues it all together)\n  1. Other libraries (Bootstrap)\n  1. Other tools: `npm` + `git`\n\n\n\n## TODO\n* User \"groups\"\n* self-assessment system\n* skill trees\n* assign students to group\n* setup explicitIndices for many-to-many relationships\n* setup group\u003c-\u003euser many-to-many relationship\n* let students of same group create + edit teams\n* create + edit learnerCheckListTemplates\n* create learnerCheckLists from learnerCheckListTemplates\n* add students/teams/groups to learnerCheckLists\n* be able to work through learnerCheckLists\n\n* layout: change layout of \"done\" items: background = grey-ish, change button color (red -\u003e green)\n* bug: Safari layouting is broken!!!!\n* bug: percentage summation is broken\n* safety switch: Don't be able to delete concepts that have children\n* safety switch: Don't display trash can when adding stuff\n\n* Notifications\n** create a parameter -\u003e path mapping for notification-related data\n** create a batch request for all notification-related data, possibly using simpler syntax\n** render notifications properly\n\n\n* feedback system\n** teacher/admin can give written feedback on all submissions\n** add notification for feedback entry\n** can see all feedback given to self on one page\n\n\n* Better submission + progress overview\n** submission progress bar\n*** three-colored bar: A x (not done), B x (submitted + unchecked), C x (submitted + checked)\n** need single (admin-only?) view over everyone's current submission status (of a specific concept + child concepts)\n** submission: simple YSIWYG MD editor\n** add new symbols to markdown: link, google drive/slides, youtube video, scratch project (can easily choose: embed mode and/or code)\n\n* proper error handling\n\n* stats + \"evaluation system\"\n** Visualize data and evaluate first results, after Wed class\n** See stats/comparisons related to every concept/conceptCheck?\n\n* all kinds of small things\n** Navigation: Add \"left\" , \"right\" + \"up\" buttons to quickly navigate to previous and next siblings, and parent\n** Editor: Add \"move up\" + \"move down\" buttons to child concepts edit tools (changes order)\n** Add preview to concept display + editor\n** Move editor save button to the top\n\n* User overview\n** See all users\n\n* notification system\n\n* Add buttons to evaluate a concept: good/bad/requests/\"add to short list\"?\n\n* Add optional written feedback option to concept check response (automatically opens up when selecting report-type checks)\n* make the interface more exploratory\n** Hide advanced concepts\n** Boss level unlocks advanced concepts\n\n* Test new users + un-privileged users\n* bug: Safari layouting is broken!!!!\n\n* Data cleaning + verification: Add methods to view + easily remove duplicate children on pre-defined indices\n\n\n## More TODO\n* bug: move ensureUserInitialized to componentWillMount, use onAuthStateChanged event\n* bug: language buttons appear only after user is updated the first time?\n* bug: Scratch embed craps out?\n* firebase rule replacer utility: make it nice and easy to write aliases for rule checks\n* firebase index validation utility: make it nice and easy to check/verify/update all indices through commandline\n* firebase cache validation utility: make it nice and easy to check/verify/update all kinds of cached info through commandline\n* Add system for \"check progress caching\", reduce load requirements\n* Add auto-screenshot preview feature (use [html2canvas](http://html2canvas.hertzen.com/examples.html))\n* Show orphaned concepts, checks and other orphaned data\n* Add Google Slides to markdown\n* Versioning system (disable most of client functionality when client and DB version don't match)\n* Notifications\n* Groups + Grouping\n* More Submission features\n** Backend for viewing, checking off and working with submissions\n** Peer assessment\n\n* Data refactoring\n** separate progress updates from other check responses, separate into different paths, instead of using `selected` child\n** change checkResponse key to match `uid_checkId` index\n\n* Filter: Finished, Unfinished, Untried\n* Filters: Checkboxes of response types\n* Display statistics\n* Add 小筆記 feature\n* Activity logging\n* Fancy features\n** Handle invalid urls + 404s properly\n\n### Research TODO\n* Produce rules for self-evaluating whether we know non-concrete answers or not\n* Estimate size of a question in the \"learning space\" relative to one another (broader, more general questions are bigger than more specific questions)\n* Estimate size of entire \"learning space\"\n\n\n# Some component design strategies\n* make sure, all queries are executed on page level (for now)\n* pass down modifier actions to let children make changes to query parameters\n* actions and accessors can be on lower (but not too often used) components\n* components that are created a lot should not define their own data accessors (because they are not performance-optimizied, for now)\n\n\n\n# More References\n* https://github.com/vacuumlabs/firebase-transactions/blob/master/wiki/tutorial.md\n\n\n\ngroup plan:\n\n\n* get all paths from group ref wrapper entries\n  if (groupBy) {\n    paths = children.map(getVariables(groupBy))...\n  }\n\n* paths of children of groups should all feed from group variables\n\n* func of group has no pathTemplate or path argument, but needs to act as a path argument propagater\n  * When calling child func of group, need to pull arguments from group","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomiii%2Fself-asssessment-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomiii%2Fself-asssessment-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomiii%2Fself-asssessment-app/lists"}