{"id":30685956,"url":"https://github.com/janduplessis883/streamlit-cal","last_synced_at":"2025-09-01T22:12:34.014Z","repository":{"id":305761707,"uuid":"1023859154","full_name":"janduplessis883/streamlit-cal","owner":"janduplessis883","description":"Streamlit Pharmacist Booking calendar for Brompton Health PCN","archived":false,"fork":false,"pushed_at":"2025-08-25T17:28:43.000Z","size":11167,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-25T19:27:22.645Z","etag":null,"topics":["booking","gp","pcn","pharmacist","sessional"],"latest_commit_sha":null,"homepage":"https://pharm-cal.streamlit.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janduplessis883.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2025-07-21T20:05:15.000Z","updated_at":"2025-08-25T17:28:46.000Z","dependencies_parsed_at":"2025-07-21T22:31:51.100Z","dependency_job_id":"2f08bd16-4995-471a-9e10-cde7b6b51975","html_url":"https://github.com/janduplessis883/streamlit-cal","commit_stats":null,"previous_names":["janduplessis883/streamlit-cal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/janduplessis883/streamlit-cal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janduplessis883%2Fstreamlit-cal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janduplessis883%2Fstreamlit-cal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janduplessis883%2Fstreamlit-cal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janduplessis883%2Fstreamlit-cal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janduplessis883","download_url":"https://codeload.github.com/janduplessis883/streamlit-cal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janduplessis883%2Fstreamlit-cal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273198080,"owners_count":25062416,"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-01T02:00:09.058Z","response_time":120,"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":["booking","gp","pcn","pharmacist","sessional"],"created_at":"2025-09-01T22:12:32.605Z","updated_at":"2025-09-01T22:12:34.007Z","avatar_url":"https://github.com/janduplessis883.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Streamlit Pharmacist Booking Calendar\n\nThis is a Streamlit web application that provides a simple and interactive calendar system for booking pharmacist sessions. The application uses Google Sheets as a backend to store and manage availability, bookings, and related data like surgeries and pharmacists.\n\n![Pharm-cal](images/admin.png)\n\n## Features\n\n- **Interactive Calendar View**: Displays available pharmacist sessions for the next two months.\n- **Booking System**: Users can click on an available slot to book a session.\n- **Dynamic Booking Form**: A dialog appears to enter booking details, including selecting an existing surgery or adding a new one.\n- **Admin Panel**: A password-protected admin section to manage the application's data.\n- **Availability Management**: Admins can update pharmacist availability for AM/PM shifts.\n- **Surgery Management**: Admins can add and delete surgery locations and their contact emails.\n- **Pharmacist Management**: Admins can add and delete pharmacists from the system.\n- **Google Sheets Backend**: All data is stored and read from a Google Sheet, making it easy to view and manage data outside the app.\n\n## How to Run\n\n1.  **Clone the repository:**\n    ```bash\n    git clone \u003crepository-url\u003e\n    cd streamlit-cal\n    ```\n\n2.  **Install dependencies:**\n    Make sure you have Python installed. Then, install the required packages using the `requirements.txt` file.\n    ```bash\n    pip install -r requirements.txt\n    ```\n\n3.  **Set up Google Sheets API credentials:**\n    - Follow the instructions [here](https://docs.streamlit.io/knowledge-base/tutorials/databases/gsheets) to get your Google Sheets API credentials JSON file.\n    - Create a `.streamlit` directory if it doesn't exist.\n    - Create a `secrets.toml` file inside the `.streamlit` directory.\n    - Add your Google Sheets credentials to the `secrets.toml` file in the following format:\n      ```toml\n      # .streamlit/secrets.toml\n      [gsheets]\n      type = \"service_account\"\n      project_id = \"your-project-id\"\n      private_key_id = \"your-private-key-id\"\n      private_key = \"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\"\n      client_email = \"your-service-account-email@your-project-id.iam.gserviceaccount.com\"\n      client_id = \"your-client-id\"\n      auth_uri = \"https://accounts.google.com/o/oauth2/auth\"\n      token_uri = \"https://oauth2.googleapis.com/token\"\n      auth_provider_x509_cert_url = \"https://www.googleapis.com/oauth2/v1/certs\"\n      client_x509_cert_url = \"https://www.googleapis.com/robot/v1/metadata/x509/your-service-account-email%40your-project-id.iam.gserviceaccount.com\"\n      ```\n\n4.  **Set up the Google Sheet:**\n    - Create a new Google Sheet.\n    - Get the Spreadsheet ID from the URL (`https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit`).\n    - Update the `SPREADSHEET_ID` constant in `app.py` with your ID.\n    - Share the Google Sheet with the `client_email` from your credentials file.\n    - The application will automatically create the necessary sheets (`Sheet1`, `Sheet2`, `Sheet3`) and headers if they don't exist.\n\n5.  **Run the Streamlit app:**\n    ```bash\n    streamlit run app.py\n    ```\n\n## Admin Access\n\nTo access the admin panel, use the password.\n\n## Dependencies\n\n- `streamlit`\n- `pandas`\n- `gspread`\n- `google-oauth2-service-account`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanduplessis883%2Fstreamlit-cal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanduplessis883%2Fstreamlit-cal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanduplessis883%2Fstreamlit-cal/lists"}