{"id":13660001,"url":"https://github.com/bigeyex/python-adminui","last_synced_at":"2025-09-09T03:02:16.454Z","repository":{"id":38085937,"uuid":"228301013","full_name":"bigeyex/python-adminui","owner":"bigeyex","description":"Write professional web interfaces with Python.","archived":false,"fork":false,"pushed_at":"2024-04-17T02:20:28.000Z","size":598,"stargazers_count":128,"open_issues_count":27,"forks_count":29,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-09-04T17:55:51.434Z","etag":null,"topics":["flask","frontend","python","ui"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/bigeyex.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":"2019-12-16T04:15:38.000Z","updated_at":"2025-08-27T12:21:52.000Z","dependencies_parsed_at":"2024-04-09T18:55:12.588Z","dependency_job_id":"4ff1c67e-fc09-46e0-8b55-9ed9fd543512","html_url":"https://github.com/bigeyex/python-adminui","commit_stats":{"total_commits":78,"total_committers":5,"mean_commits":15.6,"dds":0.08974358974358976,"last_synced_commit":"1e012aa8e9b8a9bd91b7b6c70bcbef1419527e5f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bigeyex/python-adminui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigeyex%2Fpython-adminui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigeyex%2Fpython-adminui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigeyex%2Fpython-adminui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigeyex%2Fpython-adminui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigeyex","download_url":"https://codeload.github.com/bigeyex/python-adminui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigeyex%2Fpython-adminui/sbom","scorecard":{"id":237452,"data":{"date":"2025-08-11","repo":{"name":"github.com/bigeyex/python-adminui","commit":"322df4d427e803818fe25fd81c1a988ed7f64a4e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 3/25 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-66 / GHSA-562c-5r94-xh97","Warn: Project is vulnerable to: PYSEC-2019-179 / GHSA-5wv5-4vpf-pj6m","Warn: Project is vulnerable to: PYSEC-2023-62 / GHSA-m2qf-hxjv-5gpq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T06:00:23.477Z","repository_id":38085937,"created_at":"2025-08-17T06:00:23.478Z","updated_at":"2025-08-17T06:00:23.478Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273685596,"owners_count":25149722,"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-04T02:00:08.968Z","response_time":61,"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":["flask","frontend","python","ui"],"created_at":"2024-08-02T05:01:14.787Z","updated_at":"2025-09-09T03:02:16.412Z","avatar_url":"https://github.com/bigeyex.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Python AdminUI\n\n[Documentation](https://python-adminui.readthedocs.io/en/latest/index.html)\n[中文文档](https://python-adminui.readthedocs.io/zh_CN/latest/index.html)\n\n**If you need to add component to this library, or have other suggestions, please raise an issue**\n\nWrite professional web interface with Python.\n\nIf you need a simple web interface and you don't want to mess around with\nHTML, CSS, React, Angular, Webpack or other fancy Javascript frontend stuff, \nthis project is for you. Now you can write web pages, forms, charts and dashboards with only Python.\n\nThis library is good for: data projects, tools and scripts, small IT systems and management systems,\nHacker or Hackathon projects. Basically if you need an interface for your system and you don't \ncare much about customizing the style or performance for large traffic, consider this package.\n\nThis project is based on Flask/FastApi and Ant Design Pro.\n\n![Screen Shot](./screenshot.png)\n\n## Features\n- No HTML, CSS, JS needed\n- Database agnostic: feed content at your own, no matter it's MySql, Sqlite, Excel tables, Firebase or some IoT hardware\n- JWT based authentication/login system with a neat login page\n- Forms and detail pages \n- Line and Bar Chart\n- Create decent looking menus\n- Data tables with pagination\n- Adaptive to small screens and mobile devices\n- Support both Flask and FastApi\n\n# Installation and quick start\n\ninstall the package with pip: \n\n```\npip install adminui\n```\n\nThe basic \"form page\" example:\n\n```\n# example_form.py\nfrom adminui import *\n\napp = AdminApp()\n\ndef on_submit(form_data):\n    print(form_data)\n\n@app.page('/', 'form')\ndef form_page():\n    return [\n        Form(on_submit = on_submit, content = [\n            TextField('Title', required_message=\"The title is required!\"),\n            TextArea('Description'),\n            FormActions(content = [\n                SubmitButton('Submit')\n            ])\n        ])\n    ]\n\nif __name__ == '__main__':\n    app.run()\n```\n\nRun the Python file:\n\n```\npython example_form.py\n```\n\nThen visit http://127.0.0.1:5000/ to see the result.\n\n## Use FastApi instead of Flask\n\nSet `use_fastapi=True` when creating the `app`; and `prepare()` instead of `run()` to expose the app to uvicorn. See python/example_fastapi.py for details\n\n```\n# instead of app = AdminApp(), use\napp = AdminApp(use_fastapi=True)\n\n# ... other stuff you do with adminui app\n\n# in the end of the main file, use\nfastapi_app = app.prepare()\n\n# in command line, run:\n# uvicorn example_fastapi:fastapi_app\n```\n\n# Documentation\n\nHosted on [Read the Docs](https://python-adminui.readthedocs.io/en/latest/index.html)\n\n\n# Contributing and Development\n\nThis is a personal project. So please create issues to tell me what you need from this project.\n\nYou may also give stars to let me know if this project is worthy to invest more time on.\n\nTo work with the source code:\n\nThis project has a Typescript front-end and a Python backend.  \nThe front-end is in the `/src` folder.  \nThe back-end is in the `/python` folder.  \nTo start developing:\n\n- cd into `/python` folder and run `pip install -r requirements.txt` to install requirements\n- run one of the example_xxx.py file in the `/python` folder\n- Open another terminal, run `npm install` \u0026 `npm start` at the root folder to start the frontend; \n\nUnder this development mode, requests from front-end will forward to the backend.\n\nWhen you are done with developing: \n- run `npm run build` will build the project. \n\nThe front-end is based on the amazing [Ant Design Pro](https://pro.ant.design/docs/getting-started) library, you may consult their documentation during the development.\n\nThe Python backend is located in `/python/adminui`. It is Flask based. There are some examples in the `/python` folder.\n\n# Release log \n\n- 1.5.2: Merge PR #72 and fixed asynio problem in Windows\n- 1.5.1: Scroll x/y for DataTable, reset some css within RawHTML\n- 1.5.0: Tooltip and pie chart title (pr #57 by harry3689)\n- 1.4.9: [shared app](https://python-adminui.readthedocs.io/en/latest/organize_app.html) for project structuring; adding Popconfirm\n- 1.4.8: customer colors in charts (thanks harry3689's pr #56), fixes #52 and #51\n- 1.4.7: fixes placeholder text on login, labels in ModelForms; added badge for tables\n- 1.4.6: render links in table columns\n- 1.4.5: icon, Notification types, custom favicon\n- 1.4.4: Added Empty and Result status, buttons are not linkable\n- 1.4.3: New ScatterPlot, added password field\n- 1.4.2: Image tag, timer, tabs, and Spin(loading) element\n- 1.4.1: allow changing Signup link / forget password link. Add `size` attribute to DataTable\n- 1.4.0: new chart api(old ones still work), supports pie chart and progress bar/circle\n- 1.3.0: allow serving additional static folders and multiple parameters\n- 1.2.3: allow changing footer text, footer links and logo","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigeyex%2Fpython-adminui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigeyex%2Fpython-adminui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigeyex%2Fpython-adminui/lists"}