{"id":18221196,"url":"https://github.com/thkox/uni_2024-jslearner-backend","last_synced_at":"2026-04-26T23:31:19.104Z","repository":{"id":250058561,"uuid":"802267073","full_name":"thkox/uni_2024-JSLearner-backend","owner":"thkox","description":"The JSLearner Backend is a team assignment for creating the backend infrastructure for the JSLearner Mobile App, developed as part of the \"Educational Software\" course, offered in the 8th semester of the 2023-2024 academic year at the University of Piraeus, Department of Informatics.","archived":false,"fork":false,"pushed_at":"2024-10-17T13:24:46.000Z","size":15722,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-03T06:09:14.962Z","etag":null,"topics":["8th-semester","cloud-functions","department-of-informatics","firebase","firestore","google-cloud","python","university-of-piraeus"],"latest_commit_sha":null,"homepage":"","language":"Python","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/thkox.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":"2024-05-17T21:25:07.000Z","updated_at":"2024-10-20T00:26:25.000Z","dependencies_parsed_at":"2024-11-03T21:15:37.899Z","dependency_job_id":null,"html_url":"https://github.com/thkox/uni_2024-JSLearner-backend","commit_stats":null,"previous_names":["thkox/jslearner-backend","thkox/uni_2024-jslearner-backend","thkox/educational-software_2024-jslearner-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thkox%2Funi_2024-JSLearner-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thkox%2Funi_2024-JSLearner-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thkox%2Funi_2024-JSLearner-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thkox%2Funi_2024-JSLearner-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thkox","download_url":"https://codeload.github.com/thkox/uni_2024-JSLearner-backend/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247744325,"owners_count":20988784,"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":["8th-semester","cloud-functions","department-of-informatics","firebase","firestore","google-cloud","python","university-of-piraeus"],"created_at":"2024-11-03T21:05:33.438Z","updated_at":"2026-04-26T23:31:19.075Z","avatar_url":"https://github.com/thkox.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Educational Software (2024) - JSLearner Server\n\n## Project Overview\n\nThe **JSLearner Backend** is a team assignment for creating the backend infrastructure for the [JSLearner Mobile App](https://github.com/thkox/educational-software_2024-JSLearner), developed as part of the \"Educational Software\" course, offered in the 8th semester of the 2023-2024 academic year at the University of Piraeus, Department of Informatics. This serverless backend, developed using Firebase Cloud Functions and hosted on Google Cloud, provides real-time data synchronization, experience tracking, and leaderboard management for the JSLearner app. It supports key functionalities required to monitor user progress, assess performance, and dynamically adjust content based on user experience.\n\n## Course Information\n\n- **Institution:** University of Piraeus\n- **Department:** Department of Informatics\n- **Course:** Educational Software (2024)\n- **Semester:** 8th\n\n## Technologies Used\n\n- Python\n- Firebase Authentication\n- Firebase Realtime Database\n- Firestore\n- Google Cloud\n\n## Features\n\n### 1. Cloud Functions\n\n- **Experience Score Updates:** Cloud Functions trigger events to update user scores and adjust their experience levels based on progress.\n- **Automatic Level Adjustment:** Users are promoted or demoted between experience levels based on predefined thresholds (e.g., XP scores below 300 or above 1400).\n- **Leaderboard Updates:** The leaderboard is updated dynamically as users gain or lose experience points, ensuring real-time competition.\n\n## Setup Instructions\n\n1. Clone the backend repository:\n    ```bash\n    git clone https://github.com/thkox/JSLearner-backend.git\n    ```\n\n2. Install dependencies and Firebase CLI tools:\n    ```bash\n    pip install -r requirements.txt\n    firebase login\n    firebase init\n    ```\n\n3. Deploy the functions to Firebase:\n    ```bash\n    firebase deploy --only functions\n    ```\n\n## Documentation and Resources\n\n- Full project details can be found in the [Project-documentation.pdf](./docs/Project-documentation.pdf).\n\n## Contributors\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ApostolisSiampanis\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/75365398?v=4\" width=\"100px;\" alt=\"Apostolis Siampanis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eApostolis Siampanis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/thkox\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/79880468?v=4\" width=\"100px;\" alt=\"Theodore Koxanoglou\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTheodore Koxanoglou\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/AlexanderCholis\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/66769337?v=4\" width=\"100px;\" alt=\"Alexander Cholis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexander Cholis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthkox%2Funi_2024-jslearner-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthkox%2Funi_2024-jslearner-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthkox%2Funi_2024-jslearner-backend/lists"}