{"id":21359924,"url":"https://github.com/ujstor/streamlit-working-hours","last_synced_at":"2026-05-06T03:33:45.941Z","repository":{"id":187089719,"uuid":"676286111","full_name":"Ujstor/streamlit-working-hours","owner":"Ujstor","description":"The analysis pipeline involves combining the data forms, performing data cleaning, and starning streamlit server for statistical analysis.","archived":false,"fork":false,"pushed_at":"2023-11-04T15:43:40.000Z","size":1137,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T01:44:12.963Z","etag":null,"topics":["data-pipeline","numpy","pandas","statistics","streamlit"],"latest_commit_sha":null,"homepage":"https://working-hours.astipan.com/","language":"Jupyter Notebook","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/Ujstor.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}},"created_at":"2023-08-08T21:26:25.000Z","updated_at":"2023-12-09T15:55:24.000Z","dependencies_parsed_at":"2023-08-08T23:38:49.660Z","dependency_job_id":"b357cfeb-870b-4c85-8eed-c5ab369e84a7","html_url":"https://github.com/Ujstor/streamlit-working-hours","commit_stats":null,"previous_names":["ujstor/streamlit-working-hours"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ujstor/streamlit-working-hours","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujstor%2Fstreamlit-working-hours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujstor%2Fstreamlit-working-hours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujstor%2Fstreamlit-working-hours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujstor%2Fstreamlit-working-hours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ujstor","download_url":"https://codeload.github.com/Ujstor/streamlit-working-hours/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ujstor%2Fstreamlit-working-hours/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32677928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"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":["data-pipeline","numpy","pandas","statistics","streamlit"],"created_at":"2024-11-22T05:30:47.280Z","updated_at":"2026-05-06T03:33:45.919Z","avatar_url":"https://github.com/Ujstor.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Working Hours Data Set Analysis\n\nThis repository contains data sets and analysis scripts for working hours data spanning multiple years. The raw data is divided into three forms and stored in separate Excel files for each month. The analysis pipeline involves combining the data forms, performing data cleaning, and starning streamlit server for statistical analysis. The final analysis includes various visualizations, statistical measures, and insights into the working hours data.\n\n![](https://i.imgur.com/dGrBO6Q.png)\n\n![](https://i.imgur.com/kFDfezx.png)\n\u003cbr\u003e\n\n\n## Data\n\nThe raw data is organized as follows:\n\n`./raw_data`: Contains the three forms of raw data, each stored in separate folders:\n\n  -`data_form1`: Contains the raw data for form 1. (5.2021-9.2022)\n\n  -`data_form2`: Contains the raw data for form 2. (10.2022-present)\n\n  -`data_form3`: Contains the raw data for form 3. (1.2021-4.2021)\n\n  After running `run_data_procsing.bat`, the combined data sets for each form are stored in the following files:\n\n- `./data/combined_dataform2.csv`\n- `./data/combined_dataform1.csv`\n- `./data/combined_dataform3.csv`\n\nThe cleaning process involves extracting relevant columns, handling missing values, and ensuring data consistency.\n\nThe cleaned and combined data sets from each form are merged into a single CSV file:\n\n- `./data/final_data.csv`\n\n You can now view your Streamlit app in your browser.\n\n  Local URL: http://localhost:8501\n\nQuit app `ctrl-c`\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Python Environment Setup and Dependency Installation\n\nrun `install_python.bat` script automates the setup process for a Python project by performing the following steps:\n\n1. Checks if Python is installed. If not, it installs Python using the \"winget\" package manager.\n2. Checks if a virtual environment folder named 'env' exists. If not, it creates one.\n3. Activates the virtual environment.\n4. Installs Python dependencies listed in the `requirements.txt` file using the \"pip\" package manager.\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Docker\n\nTo build the Docker image from the code, run:\n\n```\ndocker compose -f .\\docker-compose-dev.yml up\n```\n\nIf you want to pull the image from the Docker repository instead, use:\n\n```\ndocker compose -f .\\docker-compose-prod.yml up\n```\n\nImage is automatically built and deployed through the Jenkins pipeline after tests have passed and are merged into the master branch.\n\n\u003cbr/\u003e\n\n![](https://i.imgur.com/s9vVzFo.png)\n\n# Jenkins Pipeline\nPipeline is designed to automate the build, test and deployment process for a project. It includes several stages that are executed when the pipeline is triggered. The pipeline assumes the main development branch is named \"master\" and tailors its actions accordingly.\n\n### Pipeline Stages\n\n1. **Checkout Code**: This stage fetches the project's source code from a specified Git repository and branch (assumes \"master\" branch by default).\n\n2. **Test**: Runs tests on the code to ensure its correctness.\n\n3. **Generate Docker Image Tag**: Generates a Docker image tag if the pipeline is running on the \"master\" branch. The image tag format is determined by the version part specified (Patch, Minor, Major).\n\n4. **Build**: Builds a Docker image using the generated tag. This stage also requires the \"master\" branch to execute.\n\n5. **Deploy**: Pushes the Docker image to a Docker Hub repository. It is executed only on the \"master\" branch.\n\n6. **Environment Cleanup**: Cleans up the Docker image. Like the previous stages, it runs exclusively on the \"master\" branch.\n\n### Skipping Stages\n\nIf the branch is not \"master,\" the stages related to Docker image generation, build, deployment, and cleanup will be skipped, ensuring the pipeline continues without failure.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fujstor%2Fstreamlit-working-hours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fujstor%2Fstreamlit-working-hours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fujstor%2Fstreamlit-working-hours/lists"}