{"id":19248788,"url":"https://github.com/kevinkoech357/kemistry","last_synced_at":"2026-04-11T07:03:52.394Z","repository":{"id":230280949,"uuid":"701047560","full_name":"kevinkoech357/kemistry","owner":"kevinkoech357","description":"A blog web app built for chemists. Has a Jenkins pipeline configured that has OWASP and Sonar Scans for DevSecOps best practices. Also includes 2-Factor Authentication for enhanced security.","archived":false,"fork":false,"pushed_at":"2024-10-04T08:06:10.000Z","size":3779,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T05:41:40.930Z","etag":null,"topics":["2-factor-authentication","docker","flask","flask-security-too","flask-sqlalchemy","gunicorn","jenkins","nginx","supabase-db","ubuntu"],"latest_commit_sha":null,"homepage":"https://kemistry.kevinkoech.site","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/kevinkoech357.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":"2023-10-05T19:58:35.000Z","updated_at":"2024-10-29T09:40:26.000Z","dependencies_parsed_at":"2024-04-02T21:24:03.995Z","dependency_job_id":"9e2e4c6c-ae49-426a-bc50-86182df16a91","html_url":"https://github.com/kevinkoech357/kemistry","commit_stats":null,"previous_names":["kevinkoech357/kemistry"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinkoech357%2Fkemistry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinkoech357%2Fkemistry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinkoech357%2Fkemistry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinkoech357%2Fkemistry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevinkoech357","download_url":"https://codeload.github.com/kevinkoech357/kemistry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240339582,"owners_count":19785957,"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":["2-factor-authentication","docker","flask","flask-security-too","flask-sqlalchemy","gunicorn","jenkins","nginx","supabase-db","ubuntu"],"created_at":"2024-11-09T18:10:36.422Z","updated_at":"2025-11-17T07:01:12.036Z","avatar_url":"https://github.com/kevinkoech357.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kemistry\n\n![blog_image](https://github.com/kevinkoech357/kemistry/assets/102515005/7ce9b8c6-310f-481d-806a-3616a00fd816)\n\n\nKemistry is a full-stack blog web app designed exclusively for chemists, including professionals, students, and enthusiasts alike. Users can create posts covering various branches of chemistry, such as organic, physical, inorganic, medicinal, or general chemistry. Additionally, users have the ability to comment on posts. The app comes with 2-Factor Authentication, either by email or authenticator app, enabled by default.\n\n\n## Table of Contents\n\n- [Required to Run](#required-to-run)\n- [Installation](#installation)\n- [Setting up Environment Variables](#setting-up-environment-variables)\n- [Building Docker Image](#building-docker-image)\n- [Run the App on Localhost](#run-the-app-on-localhost)\n- [Usage](#usage)\n\n## Required to Run\n\nBefore running Kemistry, ensure you have the following prerequisites installed:\n\n- Python 3.8+\n- Docker\n- uv\n\n## Installation\n\n1. Clone the repository:\n\n    ```bash\n    git clone https://github.com/kevinkoech357/kemistry\n    ```\n\n2. Navigate to the project and set it up:\n\n    ```bash\n    cd kemistry\n    # Create virtualenv using uv\n    uv venv\n    source .venv/bin/activate\n    # Install extensions\n    uv pip install -r requirements.txt\n    # Running tests\n    pytest\n    ```\n\n## Setting up Environment Variables\n\nCreate a `.env` file in the project directory and add the following variables:\n\n```plaintext\nSQLALCHEMY_DATABASE_URI=\nSECRET_KEY=\nSECURITY_PASSWORD_SALT=\nSECURITY_TOTP_SECRETS=\nMAIL_SERVER=\nMAIL_USERNAME=\nMAIL_PASSWORD=\nMAIL_DEFAULT_SENDER=\nADMIN_EMAIL=\nADMIN_PASSWORD=\nADMIN_USERNAME=\n```\n\n## Building Docker Image\nYou can also build a Docker image to run Kemistry:\n\nEnsure [Docker](https://docs.docker.com/engine/install/) is installed on your machine.\n\n```bash\n# Build Image\ndocker build -t kemistry .\n```\n\n## Run the App on Localhost\nTo run the app on your local machine, follow these steps:\n\nEnsure you are in the project directory.\n\nRun the app:\n\n```bash\npython run.py\nor\ngunicorn -c gunicorn_config.py run:app\n```\nOr, if you prefer Docker:\n\n```bash\ndocker run -p 8007:8007 --env-file .env kemistry\n```\n\nThis will run the Kemistry app inside a Docker container.\n\n## Usage\nOnce the app is running, you can access it by navigating to ```http://localhost:8000``` 0r ```http://localhost:8007``` in your web browser. From there, you can create posts on various branches of chemistry and engage with other users through comments. \n\nEnjoy using Kemistry!\n\nPS: DB Schema\n![Screenshot from 2024-04-05 10-39-39](https://github.com/kevinkoech357/kemistry/assets/102515005/ef2f3e90-99b1-495a-9f0a-c1b946970ea0)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinkoech357%2Fkemistry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinkoech357%2Fkemistry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinkoech357%2Fkemistry/lists"}