{"id":19360245,"url":"https://github.com/pythonfreecourse/calendar","last_synced_at":"2025-04-23T12:32:23.913Z","repository":{"id":53612504,"uuid":"327383803","full_name":"PythonFreeCourse/calendar","owner":"PythonFreeCourse","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-22T14:02:32.000Z","size":22989,"stargazers_count":34,"open_issues_count":117,"forks_count":52,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T15:03:48.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PythonFreeCourse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-06T17:30:44.000Z","updated_at":"2024-01-18T12:01:16.000Z","dependencies_parsed_at":"2022-09-19T06:01:44.087Z","dependency_job_id":null,"html_url":"https://github.com/PythonFreeCourse/calendar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PythonFreeCourse%2Fcalendar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PythonFreeCourse%2Fcalendar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PythonFreeCourse%2Fcalendar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PythonFreeCourse%2Fcalendar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PythonFreeCourse","download_url":"https://codeload.github.com/PythonFreeCourse/calendar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250435068,"owners_count":21430212,"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":[],"created_at":"2024-11-10T07:17:32.202Z","updated_at":"2025-04-23T12:32:22.590Z","avatar_url":"https://github.com/PythonFreeCourse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyLander\n\n\u003cp style=\"text-align:center\"\u003e\n  \u003cimg title=\"Apache-2.0\" alt=\"License Apache-2.0 icon\" src=\"https://img.shields.io/github/license/PythonFreeCourse/calendar.svg\"\u003e\n\u003c/p\u003e\n\n👋 Welcome to Open Source Calendar built with Python. 🐍\n\n* [Project's objectives](#Project's-objectives)\n* [Creating development environment](#creating-development-environment)\n* [Contributing](#contributing)\n### Project's objectives\n1. Develop open source calendar tool using new technics while trying new things.\n2. Using Python as main programming language and plain HTML/JS for GUI.\n3. Create bonding in our community.\n\n## Creating development environment\n### Prerequisites\n1. Windows or Linux based system - either [WSL on windows](https://docs.microsoft.com/en-us/windows/wsl/install-win10) or full blown linux.\n2. [Python](https://www.python.org/downloads/release/python-385/)\n3. Install python's requirements:\n```shell\npip install -r requirements.txt\n```\n4. Install pre-commit hooks:\n```shell\npre-commit install\n```\n\n### Running on Windows\n\n```shell\nvirtualenv env\n.\\env\\Scripts\\activate.bat\npip install -r requirements.txt\n# Copy app\\config.py.example to app\\config.py.\n# Edit the variables' values.\n# Rendering JWT_KEY:\npython -c \"import secrets; from pathlib import Path; f = Path('app/config.py'); f.write_text(f.read_text().replace('JWT_KEY_PLACEHOLDER', secrets.token_hex(32), 1));\"\nuvicorn app.main:app --reload\n```\n\n### Running on Linux\n```shell\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\ncp app/config.py.example app/config.py\n# Edit the variables' values.\n# Rendering JWT_KEY:\npython -c \"import secrets; from pathlib import Path; f = Path('app/config.py'); f.write_text(f.read_text().replace('JWT_KEY_PLACEHOLDER', secrets.token_hex(32), 1));\"\n\n### Running tox\n```shell\n# Standard tests: 'coverage' and 'flake8'\ntox\n# Only flake8 tests\ntox -e flake8\n# Coverage with html reports\ntox -e rep\n```\n\n## Contributing\nView [contributing guidelines](https://github.com/PythonFreeCourse/calendar/blob/master/CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonfreecourse%2Fcalendar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpythonfreecourse%2Fcalendar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythonfreecourse%2Fcalendar/lists"}