{"id":19927435,"url":"https://github.com/alexander784/moringapair","last_synced_at":"2026-04-12T11:40:11.740Z","repository":{"id":225476093,"uuid":"757891237","full_name":"alexander784/MoringaPair","owner":"alexander784","description":"A system that randomly pairs up students, keeps track of each pair and changes weekly.","archived":false,"fork":false,"pushed_at":"2024-03-01T10:45:07.000Z","size":3369,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-01T10:46:15.006Z","etag":null,"topics":["apis","flask-restful","reactjs","sqlalchemy","usecontext-hook"],"latest_commit_sha":null,"homepage":"https://moringa-pair-beta.vercel.app/","language":"JavaScript","has_issues":false,"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/alexander784.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}},"created_at":"2024-02-15T07:45:06.000Z","updated_at":"2024-03-18T05:12:34.000Z","dependencies_parsed_at":"2024-03-02T11:41:56.897Z","dependency_job_id":null,"html_url":"https://github.com/alexander784/MoringaPair","commit_stats":null,"previous_names":["alexander784/moringapair"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexander784/MoringaPair","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexander784%2FMoringaPair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexander784%2FMoringaPair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexander784%2FMoringaPair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexander784%2FMoringaPair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexander784","download_url":"https://codeload.github.com/alexander784/MoringaPair/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexander784%2FMoringaPair/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31713876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["apis","flask-restful","reactjs","sqlalchemy","usecontext-hook"],"created_at":"2024-11-12T22:33:32.567Z","updated_at":"2026-04-12T11:40:11.713Z","avatar_url":"https://github.com/alexander784.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# MoringaPair\n\n\u003cp\u003eA system that randomly pairs up students, keeps track of each pair and changes weekly.\n\u003c/p\u003e\n\nProblem statement: \n\nPairing students and keeping track of each pair is cumbersome and laborious. At the moment, the Technical mentor has to manually pair students based on his intuition and other factors like student performance. The Technical mentor keeps track of these pairs ensuring that there are no duplications unless necessary.\n\nSolution: \n\nThe system that randomly pairs up students, keeps track of each pair and changes weekly.\n\n\n\n## Authors\n\n- [@alexander784](https://github.com/alexander784)\n- [@burhan9520](https://github.com/burhan9520)\n- [@Johnronnie254](https://github.com/Johnronnie254)\n- [@githinjisamson1](https://www.github.com/githinjisamson1)\n\n\n## Contributing\n\nContributions are always welcome!\n\n\n\n\n## Environment Variables\n\nTo run this project, you will need to add the following environment variables to your .env file\n\n`SECRET_KEY`\n`SQLALCHEMY_DATABASE_URI`\n`SQLALCHEMY_TRACK_MODIFICATIONS`\n`SQLALCHEMY_ECHO`\n`JWT_SECRET_KEY`\n## Features\n\n- Login\n- Create an account\n- The random pairing of students. \n- Does this without any sort of metrics but ensures that there’s no duplication of pairs i.e. keep track of each pair per week\n- Data visualization and filters of the pairs spread over the weeks such that I am able to filter out and know on this week, who was paired with who\n- TMs can see history of pairings\n\n\n## Feedback\n\nIf you have any feedback, please reach out to us at githinjisamson148@gmail.com\n\n\n## Run Locally\n\nInstall MoringaPair:\n\n```bash\nclone this repository\ncd server\npipenv install \u0026\u0026 pipenv shell\nexport FLASK_APP=app.py\nexport FLASK_RUN_PORT=5555\nexport FLASK_DEBUG=1\nflask db init\nflask db upgrade head\nflask run\n\nnavigate to root directory\ncd client\nnpm install\nnpm start\n\n```\n    \n## Lessons Learned\n\n- Core Components of Python Web Applications\n- Application Programming Interfaces (APIs)\n- Retrieving Data from APIs\n- Building APIs with Flask\n- Representative State Transfer (REST)\n- Forms and Validations\n- Client-Server Communication\n- Serialization\n- Full-Stack Development with Flask and React\n- Responsive Web Design\n- Deployment\n\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n\n## Hooks applied\n\n- useState: simple state management\n- useEffect: side effects\n- useCallback: optimization\n- useReducer: complex state management\n- useNavigate: navigation\n- useContext: context API/avoid unecessary prop driling\n\n## Support\n\nFor support, email githinjisamson148@gmail.com.\n\n\n## Tech Stack\n\n**Client:** ```HTML | CSS | JS | REACT```\n\n**Server:** ```Python | Flask```\n\n**Database:** ```SQLite```\n\n**Version Control:** ```Git```\n\n**Package Management:** ```npm```\n\n**Deployment:** ```Vercel, Render```\n\n\n## Used By\n\nMoringa School Final Phase Project :)\n\n## Running Tests\n\nTo run frontend tests, run the following command\n\n```bash\n  npm test\n```\n\n\n## API Reference\n\nhttps://documenter.getpostman.com/view/23804775/2sA2rFTLQ5\n\n\n## Live\nThe site is live at:\n\nhttps://moringa-pair-beta.vercel.app/\n\n\n## Server Tree\n\n```\nserver\n├── ERD.jpg\n├── Pipfile\n├── Pipfile.lock\n├── app.py\n├── config.py\n├── controllers\n│   ├── __init__.py\n│   ├── auth_controllers.py\n│   ├── pair_controllers.py\n│   ├── student_controllers.py\n│   └── user_controllers.py\n├── marshmallow_schemas.py\n├── migrations\n│   ├── README\n│   ├── alembic.ini\n│   ├── env.py\n│   ├── script.py.mako\n│   └── versions\n│       └── dab2bff76e1f_create_tables_users_students_pairs.py\n├── models.py\n├── requirements.txt\n└── seed.py\n```\n\n\n## Client src folder\n\n```\nclient/src\n├── App.jsx\n├── __tests__\n│   ├── Home.test.jsx\n│   └── NavBar.test.jsx\n├── assets\n│   ├── banner.jpg\n│   └── studentsImage.jpg\n├── components\n│   ├── AddNewStudentModal.jsx\n│   ├── DeleteStudentModal.jsx\n│   ├── Footer.jsx\n│   ├── LinearProgress.jsx\n│   ├── NavBar.jsx\n│   ├── OffCanvas.jsx\n│   ├── Pair.jsx\n│   ├── Profile.jsx\n│   ├── Toast.jsx\n│   ├── UpdateStudentModal.jsx\n│   └── UpdateUserModal.jsx\n├── context\n│   ├── authContext.js\n│   ├── pairsContext.js\n│   └── studentsContext.js\n├── index.jsx\n├── pages\n│   ├── Error.jsx\n│   ├── Home.jsx\n│   ├── Login.jsx\n│   ├── MyAccount.jsx\n│   ├── Pairs.jsx\n│   ├── SignUp.jsx\n│   └── StudentsDataGrid.jsx\n└── styles.css\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexander784%2Fmoringapair","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexander784%2Fmoringapair","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexander784%2Fmoringapair/lists"}