{"id":164943,"name":null,"description":"EduTecX - Paving sustainable education","url":"https://github.com/caffeine-addictt/edutecx","last_synced_at":"2025-09-09T19:36:55.693Z","repository":{"id":222635544,"uuid":"671962350","full_name":"caffeine-addictt/edutecx","owner":"caffeine-addictt","description":"EduTecX - Paving sustainable education","archived":true,"fork":false,"pushed_at":"2025-01-13T01:33:30.000Z","size":6300,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-06T20:54:29.131Z","etag":null,"topics":["api","cloudinary","ebooks","education","flask","flask-application","flask-sqlalchemy","jwt-authentication","postgresql","resend","school-project","sqlalchemy-orm","website-development"],"latest_commit_sha":null,"homepage":"https://edutecx.ngjx.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caffeine-addictt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-28T14:52:55.000Z","updated_at":"2025-01-13T01:33:51.000Z","dependencies_parsed_at":"2024-04-17T03:40:47.674Z","dependency_job_id":"d3fe2216-b8b0-483a-8b88-c59f795981ef","html_url":"https://github.com/caffeine-addictt/edutecx","commit_stats":null,"previous_names":["caffeine-addictt/edutecx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/caffeine-addictt/edutecx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caffeine-addictt","download_url":"https://codeload.github.com/caffeine-addictt/edutecx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274349395,"owners_count":25268979,"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","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"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"}},"owner":{"login":"caffeine-addictt","name":"Jun Xiang (カエデ)","uuid":"104479537","kind":"user","description":"Back-end Engineer | Offensive Security Enthusiast","email":"","website":"ngjx.org","location":"Singapore","twitter":null,"company":"Hire me","icon_url":"https://avatars.githubusercontent.com/u/104479537?u=83224f4ec00eb1cb2d75d87537be42d8e8c389ca\u0026v=4","repositories_count":34,"last_synced_at":"2025-09-06T20:40:37.286Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/caffeine-addictt","funding_links":["https://github.com/sponsors/caffeine-addictt"],"total_stars":93,"followers":32,"following":22,"created_at":"2022-11-15T00:17:15.493Z","updated_at":"2025-09-06T20:40:37.286Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caffeine-addictt","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caffeine-addictt/repositories"},"packages":[],"commits":{"message":"Repository syncing started."},"issues_stats":{"full_name":"caffeine-addictt/edutecx","html_url":"https://github.com/caffeine-addictt/edutecx","last_synced_at":"2025-08-31T10:35:52.301Z","status":null,"issues_count":0,"pull_requests_count":1,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":1731737.0,"issues_closed_count":0,"pull_requests_closed_count":1,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1731737.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":1,"past_year_merged_pull_requests_count":1,"created_at":"2025-08-30T11:39:04.972Z","updated_at":"2025-09-02T15:00:47.732Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/caffeine-addictt%2Fedutecx/issues","issue_labels_count":{"priority: medium":4,"priority: low":1,"type: feature request":1},"pull_request_labels_count":{"type: dependencies":9,"type: bug":3},"issue_author_associations_count":{"COLLABORATOR":4,"OWNER":1},"pull_request_author_associations_count":{"CONTRIBUTOR":8,"OWNER":6,"NONE":1},"issue_authors":{"AndrewAce":3,"chloelkl":1,"caffeine-addictt":1},"pull_request_authors":{"dependabot[bot]":9,"caffeine-addictt":6},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-09T00:00:11.778Z","repositories_count":10197815,"issues_count":32270610,"pull_requests_count":101850497,"authors_count":10741150,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"type: dependencies":2},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":2},"past_year_issue_authors":{},"past_year_pull_request_authors":{"dependabot[bot]":2},"maintainers":[{"login":"caffeine-addictt","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/caffeine-addictt"},{"login":"AndrewAce","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AndrewAce"},{"login":"chloelkl","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/chloelkl"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":2,"PushEvent":2,"PullRequestReviewEvent":2,"PullRequestEvent":4,"CreateEvent":2},"last_year":{"DeleteEvent":2,"PushEvent":2,"PullRequestReviewEvent":2,"PullRequestEvent":4,"CreateEvent":2}},"keywords":["api","cloudinary","ebooks","education","flask","flask-application","flask-sqlalchemy","jwt-authentication","postgresql","resend","school-project","sqlalchemy-orm","website-development"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/push-prod.yml","sha":null,"kind":"manifest","created_at":"2024-02-15T11:51:17.124Z","updated_at":"2024-02-15T11:51:17.124Z","repository_link":"https://github.com/caffeine-addictt/edutecx/blob/main/.github/workflows/push-prod.yml","dependencies":[{"id":16243441512,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test-worker.yml","sha":null,"kind":"manifest","created_at":"2024-02-15T11:51:17.155Z","updated_at":"2024-02-15T11:51:17.155Z","repository_link":"https://github.com/caffeine-addictt/edutecx/blob/main/.github/workflows/test-worker.yml","dependencies":[{"id":16243441513,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16243441514,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2024-02-15T11:51:17.204Z","updated_at":"2024-02-15T11:51:17.204Z","repository_link":"https://github.com/caffeine-addictt/edutecx/blob/main/Dockerfile","dependencies":[{"id":16243441515,"package_name":"python","ecosystem":"docker","requirements":"3.11.6-alpine3.18","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2024-02-15T11:51:17.284Z","updated_at":"2024-02-15T11:51:17.284Z","repository_link":"https://github.com/caffeine-addictt/edutecx/blob/main/requirements.txt","dependencies":[{"id":16243441944,"package_name":"alembic","ecosystem":"pypi","requirements":"==1.12.0","direct":true,"kind":"runtime","optional":false},{"id":16243441945,"package_name":"bcrypt","ecosystem":"pypi","requirements":"==4.0.1","direct":true,"kind":"runtime","optional":false},{"id":16243441946,"package_name":"blinker","ecosystem":"pypi","requirements":"==1.7.0","direct":true,"kind":"runtime","optional":false},{"id":16243441947,"package_name":"certifi","ecosystem":"pypi","requirements":"==2023.11.17","direct":true,"kind":"runtime","optional":false},{"id":16243442089,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"==3.3.2","direct":true,"kind":"runtime","optional":false},{"id":16243442090,"package_name":"click","ecosystem":"pypi","requirements":"==8.1.7","direct":true,"kind":"runtime","optional":false},{"id":16243442091,"package_name":"cloudinary","ecosystem":"pypi","requirements":"==1.38.0","direct":true,"kind":"runtime","optional":false},{"id":16243442092,"package_name":"colorama","ecosystem":"pypi","requirements":"==0.4.6","direct":true,"kind":"runtime","optional":false},{"id":16243442093,"package_name":"contourpy","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"runtime","optional":false},{"id":16243442094,"package_name":"cycler","ecosystem":"pypi","requirements":"==0.12.1","direct":true,"kind":"runtime","optional":false},{"id":16243442095,"package_name":"Deprecated","ecosystem":"pypi","requirements":"==1.2.14","direct":true,"kind":"runtime","optional":false},{"id":16243442096,"package_name":"dnspython","ecosystem":"pypi","requirements":"==2.4.2","direct":true,"kind":"runtime","optional":false},{"id":16243442097,"package_name":"email-validator","ecosystem":"pypi","requirements":"==2.1.0.post1","direct":true,"kind":"runtime","optional":false},{"id":16243442098,"package_name":"Flask","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":16243442099,"package_name":"Flask-JWT-Extended","ecosystem":"pypi","requirements":"==4.5.3","direct":true,"kind":"runtime","optional":false},{"id":16243442100,"package_name":"Flask-Limiter","ecosystem":"pypi","requirements":"==3.5.0","direct":true,"kind":"runtime","optional":false},{"id":16243442101,"package_name":"Flask-SQLAlchemy","ecosystem":"pypi","requirements":"==3.1.1","direct":true,"kind":"runtime","optional":false},{"id":16243442102,"package_name":"Flask-WTF","ecosystem":"pypi","requirements":"==1.2.1","direct":true,"kind":"runtime","optional":false},{"id":16243442103,"package_name":"fonttools","ecosystem":"pypi","requirements":"==4.47.0","direct":true,"kind":"runtime","optional":false},{"id":16243442104,"package_name":"greenlet","ecosystem":"pypi","requirements":"==3.0.3","direct":true,"kind":"runtime","optional":false},{"id":16243442105,"package_name":"gunicorn","ecosystem":"pypi","requirements":"==21.2.0","direct":true,"kind":"runtime","optional":false},{"id":16243442106,"package_name":"idna","ecosystem":"pypi","requirements":"==3.6","direct":true,"kind":"runtime","optional":false},{"id":16243442107,"package_name":"importlib-resources","ecosystem":"pypi","requirements":"==6.1.1","direct":true,"kind":"runtime","optional":false},{"id":16243442108,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"runtime","optional":false},{"id":16243442109,"package_name":"itsdangerous","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"runtime","optional":false},{"id":16243442110,"package_name":"Jinja2","ecosystem":"pypi","requirements":"==3.1.3","direct":true,"kind":"runtime","optional":false},{"id":16243442111,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"==1.4.5","direct":true,"kind":"runtime","optional":false},{"id":16243442112,"package_name":"limits","ecosystem":"pypi","requirements":"==3.7.0","direct":true,"kind":"runtime","optional":false},{"id":16243442113,"package_name":"Mako","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"runtime","optional":false},{"id":16243442114,"package_name":"markdown-it-py","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"runtime","optional":false},{"id":16243442115,"package_name":"MarkupSafe","ecosystem":"pypi","requirements":"==2.1.3","direct":true,"kind":"runtime","optional":false},{"id":16243442116,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.8.2","direct":true,"kind":"runtime","optional":false},{"id":16243442117,"package_name":"mdurl","ecosystem":"pypi","requirements":"==0.1.2","direct":true,"kind":"runtime","optional":false},{"id":16243442118,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.26.2","direct":true,"kind":"runtime","optional":false},{"id":16243442119,"package_name":"ordered-set","ecosystem":"pypi","requirements":"==4.1.0","direct":true,"kind":"runtime","optional":false},{"id":16243442120,"package_name":"packaging","ecosystem":"pypi","requirements":"==23.2","direct":true,"kind":"runtime","optional":false},{"id":16243442121,"package_name":"Pillow","ecosystem":"pypi","requirements":"==10.2.0","direct":true,"kind":"runtime","optional":false},{"id":16243442122,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"runtime","optional":false},{"id":16243442123,"package_name":"psycopg2-binary","ecosystem":"pypi","requirements":"==2.9.9","direct":true,"kind":"runtime","optional":false},{"id":16243442124,"package_name":"Pygments","ecosystem":"pypi","requirements":"==2.17.2","direct":true,"kind":"runtime","optional":false},{"id":16243442125,"package_name":"PyJWT","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":16243442126,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.1.1","direct":true,"kind":"runtime","optional":false},{"id":16243442127,"package_name":"pypdf","ecosystem":"pypi","requirements":"==3.17.2","direct":true,"kind":"runtime","optional":false},{"id":16243442128,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.4.2","direct":true,"kind":"runtime","optional":false},{"id":16243442129,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":true,"kind":"runtime","optional":false},{"id":16243442130,"package_name":"python-dotenv","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":16243442131,"package_name":"pytz","ecosystem":"pypi","requirements":"==2023.3.post1","direct":true,"kind":"runtime","optional":false},{"id":16243442132,"package_name":"requests","ecosystem":"pypi","requirements":"==2.31.0","direct":true,"kind":"runtime","optional":false},{"id":16243442133,"package_name":"resend","ecosystem":"pypi","requirements":"==0.6.0","direct":true,"kind":"runtime","optional":false},{"id":16243442134,"package_name":"rich","ecosystem":"pypi","requirements":"==13.7.0","direct":true,"kind":"runtime","optional":false},{"id":16243442135,"package_name":"shellingham","ecosystem":"pypi","requirements":"==1.5.4","direct":true,"kind":"runtime","optional":false},{"id":16243442136,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":true,"kind":"runtime","optional":false},{"id":16243442137,"package_name":"SQLAlchemy","ecosystem":"pypi","requirements":"==2.0.22","direct":true,"kind":"runtime","optional":false},{"id":16243442138,"package_name":"stripe","ecosystem":"pypi","requirements":"==7.6.0","direct":true,"kind":"runtime","optional":false},{"id":16243442139,"package_name":"thread","ecosystem":"pypi","requirements":"==0.1.3","direct":true,"kind":"runtime","optional":false},{"id":16243442538,"package_name":"typer","ecosystem":"pypi","requirements":"==0.9.0","direct":true,"kind":"runtime","optional":false},{"id":16243442539,"package_name":"typing_extensions","ecosystem":"pypi","requirements":"==4.9.0","direct":true,"kind":"runtime","optional":false},{"id":16243442540,"package_name":"tzdata","ecosystem":"pypi","requirements":"==2023.3","direct":true,"kind":"runtime","optional":false},{"id":16243442541,"package_name":"urllib3","ecosystem":"pypi","requirements":"==2.1.0","direct":true,"kind":"runtime","optional":false},{"id":16243442542,"package_name":"Werkzeug","ecosystem":"pypi","requirements":"==3.0.1","direct":true,"kind":"runtime","optional":false},{"id":16243442543,"package_name":"wrapt","ecosystem":"pypi","requirements":"==1.16.0","direct":true,"kind":"runtime","optional":false},{"id":16243442544,"package_name":"WTForms","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2025-09-09T01:09:25.064Z","updated_at":"2025-10-07T08:39:07.025Z","avatar_url":"https://github.com/caffeine-addictt.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/164943","html_url":"https://science.ecosyste.ms/projects/164943"}