├── .github ├── ISSUE_TEMPLATE │ └── new_submission.yml ├── frappe-framework-logo.svg ├── helper │ ├── approval.py │ ├── record_sorter.py │ └── update.py └── workflows │ └── contribute.yml ├── .mergify.yml ├── .pre-commit-config.yaml ├── CNAME ├── LICENSE ├── README.md ├── _config.yml └── _includes └── analytics /.github/ISSUE_TEMPLATE/new_submission.yml: -------------------------------------------------------------------------------- 1 | name: Submission Form 2 | description: Submit a new Frappe App or Resource to the Awesome Frappe list 3 | title: "[Submission] - " 4 | labels: ["new-submission"] 5 | body: 6 | - type: dropdown 7 | id: category 8 | attributes: 9 | label: Category 10 | multiple: false 11 | options: 12 | - Apps 13 | - Developer Tooling 14 | - Other Tooling 15 | - Deployment Tools 16 | - Resources 17 | - Hosting 18 | validations: 19 | required: true 20 | - type: dropdown 21 | id: sub_category 22 | attributes: 23 | label: Sub Category 24 | options: 25 | # Apps 26 | - Business Apps 27 | - Utility Apps 28 | - Plugins 29 | - Integrations 30 | - Themes 31 | - Regional Apps 32 | - Other Apps 33 | # Developer Tooling 34 | - SDKs & Libraries 35 | - Templates 36 | - type: input 37 | attributes: 38 | label: App or Resource URL 39 | validations: 40 | required: true 41 | - type: input 42 | attributes: 43 | label: App or Resource Name 44 | validations: 45 | required: true 46 | - type: textarea 47 | attributes: 48 | label: App or Resource Description 49 | placeholder: A short description of the app or resource 50 | validations: 51 | required: true 52 | -------------------------------------------------------------------------------- /.github/frappe-framework-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.github/helper/approval.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import requests 4 | 5 | ISSUE_NUMBER = os.environ.get("ISSUE_NUMBER") # "1200" 6 | GITHUB_REPOSITORY = os.environ.get("GITHUB_REPOSITORY") # "octocat/Hello-World" 7 | GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN") # "1234567890" 8 | 9 | if __name__ == "__main__": 10 | ENDPOINT_URL = f"https://api.github.com/repos/{GITHUB_REPOSITORY}/issues/{ISSUE_NUMBER}/comments" 11 | COLLABORATOR_URL = f"https://api.github.com/repos/{GITHUB_REPOSITORY}/collaborators/{{username}}" 12 | ISSUE_COMMENTS = requests.get(ENDPOINT_URL).json() 13 | 14 | for comment in ISSUE_COMMENTS: 15 | username = comment["user"]["login"] 16 | comment_body = comment["body"] 17 | 18 | if "LGTM" not in comment_body: 19 | continue 20 | print(f"LGTM found by {username}") 21 | 22 | is_collaborator = requests.get(COLLABORATOR_URL.format(username=username), headers={"Authorization": f"token {GITHUB_TOKEN}"}).ok 23 | 24 | if is_collaborator: 25 | print(f"{username} is a collaborator and issue is approved") 26 | sys.exit(0) # exit with success code if a collaborator has dropped a LGTM comment 27 | 28 | print("No one has dropped a LGTM comment") 29 | sys.exit(1) # exit with error code if no collaborator has approved the affirmation 30 | -------------------------------------------------------------------------------- /.github/helper/record_sorter.py: -------------------------------------------------------------------------------- 1 | SECTIONS_TO_SORT = ["Apps", "Developer Tooling", "Deployment Tools", "Other Clients"] 2 | NEWLINE = "\n" 3 | 4 | def sort_section(lines: list[str]) -> list[str]: 5 | sorted_lines = [] 6 | heading_buffer = [] 7 | 8 | for line in lines: 9 | is_heading = line.startswith("#") 10 | is_list = line.startswith("-") 11 | 12 | if line == NEWLINE: 13 | continue 14 | 15 | if is_heading: 16 | heading_buffer.sort(key=str.casefold) 17 | sorted_lines.extend(heading_buffer + [NEWLINE]) 18 | sorted_lines.append(line) 19 | heading_buffer = [NEWLINE] 20 | 21 | elif is_list: 22 | heading_buffer.append(line) 23 | 24 | else: 25 | if sorted_lines[-1] != NEWLINE: 26 | sorted_lines.append(NEWLINE) 27 | sorted_lines.append(line) 28 | 29 | if heading_buffer: 30 | heading_buffer.sort(key=str.casefold) 31 | sorted_lines.extend(heading_buffer + [NEWLINE]) 32 | 33 | return sorted_lines 34 | 35 | 36 | if __name__ == "__main__": 37 | README = open("README.md").readlines() 38 | README_sorted = README.copy() 39 | 40 | for section in SECTIONS_TO_SORT: 41 | section_start = README_sorted.index(f"### {section}\n") 42 | section_end = next(i for i in range(section_start + 1, len(README_sorted) + 1) if README_sorted[i].startswith("### ")) 43 | README_sorted[section_start - 1:section_end] = sort_section(README_sorted[section_start:section_end]) 44 | 45 | if README != README_sorted: 46 | open("README.md", "w").writelines(README_sorted) 47 | -------------------------------------------------------------------------------- /.github/helper/update.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | 4 | 5 | if __name__ == "__main__": 6 | WORKSPACE = os.environ.get("GITHUB_WORKSPACE") 7 | AWESOME_FILE = f"{WORKSPACE}/README.md" 8 | 9 | FILE_ENTRIES_BY_LINE = open(AWESOME_FILE).readlines() 10 | USER_SUBMISSION: dict = json.loads(os.environ.get("submission_entry") or"{}") 11 | 12 | # add user submission to affirmations file 13 | category_index = FILE_ENTRIES_BY_LINE.index(f"### {USER_SUBMISSION['category']}\n") 14 | insert_at_index = category_index + 1 15 | 16 | if sub_category := USER_SUBMISSION['sub_category']: 17 | sub_category_index = FILE_ENTRIES_BY_LINE.index(f"#### {USER_SUBMISSION['sub_category']}\n", category_index) 18 | insert_at_index = sub_category_index + 1 19 | 20 | FILE_ENTRIES_BY_LINE.insert(insert_at_index, f"- [{USER_SUBMISSION['app_or_resource_name']}]({USER_SUBMISSION['app_or_resource_url']}) - {USER_SUBMISSION['app_or_resource_description']}\n") 21 | 22 | # update affirmations file 23 | with open(AWESOME_FILE, "w") as f: 24 | f.writelines(FILE_ENTRIES_BY_LINE) 25 | 26 | print(f"Updated {AWESOME_FILE} with {USER_SUBMISSION}") 27 | -------------------------------------------------------------------------------- /.github/workflows/contribute.yml: -------------------------------------------------------------------------------- 1 | name: Submissions via Issues 2 | on: 3 | issue_comment: 4 | types: [created, edited] 5 | 6 | jobs: 7 | approval: 8 | # this job only runs for issue comments 9 | name: Check if submission is approved 10 | runs-on: ubuntu-latest 11 | if: ${{ github.event.issue.number }} 12 | steps: 13 | - uses: actions/checkout@v4 14 | with: 15 | token: ${{ secrets.PAT }} 16 | - uses: actions/setup-python@v5 17 | with: 18 | python-version: '3.13' 19 | - name: Check if authorized member has approved submission 20 | run: | 21 | pip install requests 22 | python ${GITHUB_WORKSPACE}/.github/helper/approval.py 23 | env: 24 | ISSUE_NUMBER: ${{ github.event.issue.number }} 25 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 26 | 27 | contribution: 28 | name: Extract, Commit & Push submission to default branch 29 | runs-on: ubuntu-latest 30 | needs: approval 31 | steps: 32 | - uses: actions/checkout@v4 33 | - uses: actions/setup-python@v5 34 | with: 35 | python-version: '3.13' 36 | 37 | - uses: stefanbuck/github-issue-parser@v3 38 | id: issue-parser 39 | with: 40 | template-path: ${GITHUB_WORKSPACE}/.github/ISSUE_TEMPLATE/new_submission.yml 41 | 42 | - name: Update submissions file 43 | run: python ${GITHUB_WORKSPACE}/.github/helper/update.py 44 | env: 45 | submission_entry: ${{ steps.issue-parser.outputs.jsonString }} 46 | 47 | - name: Record Sorter 48 | run: python ${GITHUB_WORKSPACE}/.github/helper/record_sorter.py 49 | 50 | - name: Commit + Push changes 51 | uses: EndBug/add-and-commit@v9 52 | with: 53 | message: 'docs: New Submission via Issue' 54 | 55 | cleanup: 56 | name: Close Issue thread after successful contribution 57 | runs-on: ubuntu-latest 58 | needs: contribution 59 | steps: 60 | - name: Close Issue 61 | uses: peter-evans/close-issue@v3 62 | with: 63 | issue-number: ${{ github.event.issue.number }} 64 | comment: Auto-closing issue since commit has been pushed to main branch 65 | -------------------------------------------------------------------------------- /.mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | - name: Automatic merge on approval 3 | conditions: 4 | - "#approved-reviews-by>=1" 5 | actions: 6 | merge: 7 | method: merge 8 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | default_stages: [pre-commit] 2 | fail_fast: false 3 | 4 | repos: 5 | - repo: https://github.com/pre-commit/pre-commit-hooks 6 | rev: v5.0.0 7 | hooks: 8 | - id: trailing-whitespace 9 | - id: check-yaml 10 | - id: check-merge-conflict 11 | - id: check-ast 12 | 13 | - repo: local 14 | hooks: 15 | - id: records-sorter 16 | name: Sort README 17 | entry: python .github/helper/record_sorter.py 18 | language: system 19 | types: [markdown] 20 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | awesome-frappe.gavv.in -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Frappe [![Awesome](https://awesome.re/badge-flat.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | > A curated list of awesome things related to the Frappe Framework. Maintained by [Gavin D'souza](https://github.com/gavindsouza). 4 | 5 |
6 | Frappe logo 7 |
8 | 9 | Inspired by [awesome-django](https://github.com/wsvincent/awesome-django). 10 | 11 | > **Disclaimer:** Projects listed may be third-party community packages. They may not vetted nor endorsed by the contributors. Check each project's compatibility information before using. Use them at your own volition. 12 | 13 | Know of a project that should be here? Make a submission using [this form](https://github.com/gavindsouza/awesome-frappe/issues/new?assignees=&labels=new-submission&projects=&template=new_submission.yml&title=Add%20this%20cool%20App+-+)! 😄 14 | 15 | ## Introduction 16 | 17 | Frappe, pronounced fra-pay, is a full stack, batteries-included, web framework written in Python and Javascript with MariaDB (and Postgres too) as the database. It is the framework which powers ERPNext, is pretty generic and can be used to build database driven apps. 18 | 19 | 20 | 22 | 23 | ## Contents 24 | 25 | - [Apps](#apps) 26 | - [Business Apps](#business-apps) 27 | - [Utility Apps](#utility-apps) 28 | - [Plugins](#plugins) 29 | - [Integrations](#integrations) 30 | - [Themes](#themes) 31 | - [Regional Apps](#regional-apps) 32 | - [Other Apps](#other-apps) 33 | - [Developer Tooling](#developer-tooling) 34 | - [SDKs & Libraries](#sdks--libraries) 35 | - [Templates](#templates) 36 | - [Other Tooling](#other-tooling) 37 | - [Deployment Tools](#deployment-tools) 38 | - [Resources](#resources) 39 | - [Hosting](#hosting) 40 | 41 | 42 | ### Apps 43 | 44 | _Apps that showcase the power of the Frappe Framework_ 45 | 46 | 47 | #### Business Apps 48 | 49 | - [Apparelo](https://github.com/aerele/apparelo) - Manufacturing Workflow Management for the garment industry. 50 | - [Cargo Management](https://github.com/AgileShift/cargo_management) - Package Management App for ERPNext. 51 | - [ERPNext](https://erpnext.com) - Open source full-featured business management system. 52 | - [Expenses](https://github.com/kid1194/erpnext_expenses) - An expenses management module for ERPNext. 53 | - [FiMax](https://github.com/YefriTavarez/fimax) - Loan Management and Repayment Scheduling for ERPNext. 54 | - [Frappe Desk](https://frappedesk.com/) - Well designed, open-source ticketing system. 55 | - [Frappe HR](http://frappehr.com/) - An Open Source HRMS for Frappe Ecosystem. 56 | - [Frappe Insights](https://github.com/frappe/insights) - Free and Open Source Data Analytics Tool for your Frappe Apps 57 | - [Gameplan](https://github.com/frappe/gameplan/) - Delightful, open-source, work communication tool for remote teams. 58 | - [Healthcare](https://github.com/frappe/healthcare) - An open source management system crafted for the medical industry. 59 | - [POS Awesome](https://github.com/yrestom/POS-Awesome) - An open-source Point of Sale for ERPNext using Vue.js and Vuetify. 60 | - [POS-Awesome-V15](https://github.com/defendicon/POS-Awesome-V15) - the enhance version with more bugs fixed and multiple currency add thanks to @defendicon 61 | - [PropMS](https://github.com/aakvatech/PropMS) - Property Management Solution Powered on ERPNext by Aakvatech. 62 | - [Restaurant](https://github.com/quantumbitcore/erpnext-restaurant) - Restaurant App for ERPNext. 63 | - [School](https://github.com/frappe/school) - The Learning Management System (LMS) that powers [mon.school](https://mon.school) & [frappe.school](https://frappe.school). 64 | - [ServiceMS](https://github.com/aakvatech/servicems) - Service Management System for ERPNext by Aakvatech. 65 | - [Stone Warehouse](https://github.com/finbyz/stonewarehouse) - Manage batch wise balance, especially setup for a ceramic tiles vendor. 66 | - [TailPOS](https://github.com/bailabs/tailpos) - Offline First Open Source POS for ERPNext. 67 | - [URY - Open Source Restaurant Management System](https://github.com/ury-erp/ury) - URY is an open-source ERP designed to simplify and streamline restaurant operations, built over ERPNext. 68 | - [Webshop](https://github.com/frappe/webshop) - eCommerce Platform for ERPNext 69 | 70 | #### Utility Apps 71 | 72 | - [Alerts](https://github.com/kid1194/frappe_alerts) - Displays custom alerts to specific recipients after login. 73 | - [Background Tasks Unleashed](https://github.com/Datahenge/btu) - A Frappe Task Scheduling and Automation. 74 | - [Bulk Webhook](https://github.com/aakvatech/Bulk-Webhook) - Bulk Webhook allows creating webhook that sends multiple records and also reports from ERPNext, and has support for Apache Kafka. 75 | - [Chat](https://github.com/frappe/chat) - Modern chat for your Frappe deployments. 76 | - [ERPNext OCR](https://github.com/Monogramm/erpnext_ocr) - Optical Character Recognition using Tesseract within Frappe. 77 | - [ERPNext POS Hardware Integrations](https://github.com/aisenyi/pasigono) - Weigh scale integration, Stripe Terminal integration, and Raw printing via QZ Tray 78 | - [ERPNext Quota](https://github.com/ahmadpak/erpnext_quota) - App to manage ERPNext Site, User, Company and Space limitations. 79 | - [Frappe ReST API Wrapper](https://github.com/pifabs/restipie) - Build custom ReST api's on top of Frappe. 80 | - [Frappe System Monitor](https://github.com/mymi14s/frappe_system_monitor) - Web interface for webserver running processes and system utilization (RAM, CPU, Disk) 81 | - [Go1 CMS](https://github.com/TridotsTech/go1cms) - Advanced Content Management System built on Frappe. 82 | - [Photos](https://github.com/gavindsouza/photos) - AI powered Image classification & labelling similar to Google Photos in Desk. 83 | - [Pibicut](https://github.com/pibico/pibicut) - URL Shortener with QR Code Generator. 84 | - [PibiDAV](https://github.com/pibico/pibiDAV) - Integrate webDAV, calDAV and cardDAV (Future) with a NextCloud Server, used as (DMS), for a copy of Frappe Files uploaded and tagged to NextCloud while uploading files to Frappe. 85 | - [Print Designer](https://github.com/frappe/print_designer) - Frappe app to design print formats using interactive UI. 86 | - [Private Comment](https://github.com/rtCamp/frappe-private-comment.git) - App that allows controlling comment visibility for tagged user and user-groups with three modes: Private, Public & Mentioned 87 | - [Raven](https://github.com/The-Commit-Company/Raven) - Simple, open source team messaging platform built for Frappe. 88 | - [Release](https://github.com/frappe/release) - Manage releases for Frappe and Frappe Applications. 89 | - [Sentry](https://github.com/ParsimonyGit/frappe-sentry) - Send error logs to [Sentry](https://sentry.io/) for debugging. 90 | - [Sheets](https://sheets.gavv.in/) - Effortless synchronization between your online SpreadSheet Apps & ERPNext. 91 | - [SmartConnect Mobile Application](https://github.com/Midocean-Technologies/mtpl_api) - Interactive Mobile Application (Pre-release Alpha Version) 92 | - [Temporal](https://github.com/Datahenge/temporal) - An ERPNext App that integrates with Redis to rapidly provide calendar information. 93 | - [ToolBox](https://toolbox.gavv.in/) - Automate your Site Maintenance with ToolBox. 94 | - [Wiki](https://github.com/frappe/wiki) - Wiki for serving dynamic data along with a built-in review system. 95 | 96 | #### Plugins 97 | 98 | - [Active User Lister](https://github.com/kid1194/frappe-active-users) - App that displays a list of current active users. 99 | - [Attachment Control extended](https://github.com/kid1194/frappe-better-attach-control) - Plugin that gives you more control over the attachments at field level. 100 | - [Database Console](https://github.com/mymi14s/database_console) - Execute SQL queries directly from Frappe/ERPNext desk just like 'bench mariadb'. 101 | - [Desk Navbar Extended](https://github.com/gavindsouza/desk-navbar-extended) - Frappe's Navbar, slightly salted. 102 | - [DFP External Storage](https://github.com/developmentforpeople/dfp_external_storage) - S3 compatible external storages per folder management app for Frappe and ERPNext. 103 | - [ERPNext: Fiscal Year](https://github.com/kid1194/ERPNext-Fiscal-Year-Based-Date-Related-Fields) - Desk plugin that makes date related fields respect the start and end dates of default fiscal year. 104 | - [ERPNext: POS Restrictions](https://github.com/kid1194/erpnext_pos_controller) - ERPNext plugin that helps in adding some restrictions over default POS. 105 | - [Export Setting](https://github.com/zaid2229/Export-Settings.git) - This app allows you to predefine the fields you want to export from any given doctype in Frappe. 106 | - [Frappe Msdoc Template](https://github.com/rareMaxim/frappe_msdoc_template) - Generate documents from MS Docs templates (.docx and .xlsx) 107 | - [Frappe tinyMCE](https://github.com/shridarpatil/frappe_tinymce) - Replace frappe's Quill Text Editor with tinyMCE Text Editor. 108 | - [Jodit HTML Editor](https://github.com/ashish-greycube/jodit_html_editor) - Replace Quill Text Editor With [Jodit](https://github.com/xdan/jodit) HTML Editor on WebPage and WebForm for Frappe/ERPNext Version 11 & 12. 109 | - [Language Toggle](https://github.com/zaid2229/language-toggle) - Button on navbar to toggle language in ERPNext. 110 | - [Language Translator](https://github.com/mymi14s/language_translator) - Automatic language translator on Frappe Desk and website. 111 | - [List View extended](https://github.com/kid1194/frappe-better-list-view) - List view plugin with more customization sugar. 112 | - [List View: Unassign From](https://github.com/kid1194/frappe-list-unassign-from) - A Frappe plugin that adds the support of unassign from for multiple selection in Desk's List View. 113 | - [Numeric Control extended](https://github.com/kid1194/frappe-better-numerical-controls) - Allows for more control over numeric fields on Website & Desk. 114 | - [OIDC Extended](https://github.com/MohammedNoureldin/frappe-oidc-extended) - An extension to the ERPNext Social Login authentication method (OIDC) that incorporates new features designed to meet the needs of enterprises. 115 | - [S3 Attachments](https://github.com/zerodha/frappe-attachments-s3) - Plug an S3 bucket for storing and fetching files in Frappe. 116 | - [Select Control extended](https://github.com/kid1194/frappe-better-select-control) - Plugin that adds the support of options group to the select control. 117 | - [Sidebar Collapsed Default](https://github.com/Nasr-Systems/sidebar_collapsed_default) - Collapses Sidebar by default on all desk pages. Helps use screen real-estate better on small screens. 118 | - [Silent Print](https://github.com/roquegv/Silent-Print-ERPNext) - Utility App for printing documents silently, that is, without having to interact with browser's print dialog and send the printing order directly to the printer(s). 119 | - [Strict Session Defaults](https://github.com/kid1194/frappe-strict-session-defaults) - Enforces and manages the session defaults popup. 120 | 121 | #### Integrations 122 | 123 | - [Banking API Integration](https://github.com/aerele/bank_api_integration) - Bank API Integration for ERPNext. 124 | - [Dash Integration](https://github.com/pipech/frappe-plotly-dash) - Build analytical web apps through the Desk with @plotly's [Dash](https://github.com/plotly/dash). 125 | - [DATEV Integration](https://github.com/alyf-de/erpnext_datev) - Integration between ERPNext and DATEV. 126 | - [Discourse SSO Integration](https://github.com/shridarpatil/frappe_discourse) - Simple frappe app to setup Single sign-on for Discourse. 127 | - [DocuSign Integration](https://frappecloud.com/marketplace/apps/dsc_erpnext) - DocuSign integration for Frappe Apps. 128 | - [ERPNext Shipping](https://github.com/frappe/erpnext-shipping) - Shipping Integration for ERPNext with Packlink, LetMeShip & SendCloud. 129 | - [ERPNextFinTS](https://github.com/jHetzer/erpnextfints) - FinTS Connector for ERPNext. 130 | - [EWB API Integration](https://github.com/aerele/ewb_api_integration) - Implementing E-WayBill API integration for India. 131 | - [FCM Notification for ERPNext](https://github.com/tridz-dev/erpnext_fcm) - Send notifications created in Frappe or ERPNext as push notication via Firebase Cloud Message. 132 | - [Frepple Integration](https://github.com/msf4-0/ERPNext-Frepple-Integration) - Frepple Production Scheduling Tool. 133 | - [HDFC Bank Integration](https://github.com/resilient-tech/bank_integration) - Unofficial API to handle bank transactions using ERPNext. 134 | - [Mandrill Integration](https://github.com/frappe/mandrill_integration) - Mandrill Integration for Frappe. 135 | - [Mautic Integration](https://github.com/dokos-io/mautic) - Mautic Integration for ERPNext. 136 | - [Meta Integration](https://github.com/efeone/frappe_meta_integration) - Meta Cloud API Integration for Frappe. 137 | - [Metabase Integration](https://github.com/pipech/frappe-metabase) - Access your Metabase instance from Desk. 138 | - [Microsoft 365 Groups](https://github.com/Aptitudetech/frappe-m365) - Microsoft 365 Groups Integration for Frappe. 139 | - [Nextcloud Integration](https://github.com/frappe/nextcloud-integration) - Nextcloud + Frappe = ❤️ 140 | - [Paystack Integration](https://github.com/mymi14s/frappe_paystack) - Paystack Payment Gateway Integration for Frappe. 141 | - [Pibiapp](https://github.com/doloresjuliana/pibiapp) - Connect with Nextcloud to store the attachments on your Nextcloud server, integrate with external data from Excel, CSV, JSON or XML files, and view Redash dashboards in Frappe. 142 | - [PostGrid Integration](https://github.com/Avunu/postgrid_integration) - Direct Mail Documents within Frappe via PostGrid Print & Mail API 143 | - [Razorpay Integration](https://github.com/frappe/razorpay_integration) - Razorpay Integration for Frappe. 144 | - [RClone Integration](https://github.com/Muzzy73/rclone_integration) - Frappe integration with Rclone. 145 | - [Shipstation Integration](https://github.com/ParsimonyGit/shipstation_integration) - Shipstation Integration for ERPNext. 146 | - [Shopify Integration](https://github.com/frappe/ecommerce_integrations) - Shopify Integration for ERPNext. 147 | - [Telegram Integration](https://github.com/yrestom/erpnext_telegram) - Telegram Integration app for more productivity. 148 | - [Twilio Integration](https://github.com/frappe/twilio-integration) - Twilio Integration for Frappe. 149 | - [Unicommerce Integration](https://github.com/frappe/ecommerce_integrations) - Unicommerce Integration for ERPNext. 150 | - [WhatsApp Integration](https://github.com/shridarpatil/frappe_whatsapp) - WhatsApp Cloud Integration for Frappe. 151 | - [WooCommerceConnector](https://github.com/libracore/WooCommerceConnector) - Integration App for ERPNext to connect to WooCommerce. 152 | - [Zenoti Integration](https://github.com/frappe/ecommerce_integrations) - Zenoti Integration for ERPNext. 153 | 154 | #### Themes 155 | 156 | - [Business Theme](https://github.com/Midocean-Technologies/business_theme_v14.git) - Business Theme for your Frappe v14 Apps. 157 | - [Classic White](https://github.com/hashirluv/whitetheme-v13) - Classic White theme for your Frappe v13 Apps. 158 | - [Material Blue](https://github.com/hashirluv/bluetheme) - Material Blue Theme for your Frappe v12 Apps. 159 | - [Material UI](https://github.com/michaelkaraz/kimstheme) - kims Theme Material UI for ERPNext. 160 | - [Owl](https://github.com/zaqouttahir/owl_theme) - @zaqouttahir's Owl theme for your Frappe v15 Apps. 161 | - [Pink](https://github.com/Muhammad-shaalan/pink-theme) - @Muhammad-shaalan's Pink theme. 162 | - [Red](https://github.com/hashirluv/redtheme_v13b) - @hashirluv's Red theme for your Frappe v13-beta Apps. 163 | 164 | #### Regional Apps 165 | 166 | - [CSF_TZ](https://github.com/aakvatech/CSF_TZ) - Regional App for Tanzania. 167 | - [ERPNext France](https://github.com/scopen-coop/erpnext_france.git) - Regional code for France, built on top of ERPNext. 168 | - [ERPNext Germany](https://github.com/alyf-de/erpnext_germany) - Regional code for Germany, built on top of ERPNext. 169 | - [Grynn Swiss QR Bill](https://github.com/Grynn-GmbH/Swiss-QR-Bill-ERPNext) - Swiss QR Bill Generator app for ERPNext. 170 | - [GSTR 2B Reconciler](https://github.com/aerele/reconciler) - Reconciliation tool for GSTR 2B and Purchase Register. 171 | - [India Compliance](https://github.com/resilient-tech/india-compliance) - Simple, yet powerful compliance solutions for Indian businesses. 172 | - [KSA](https://github.com/8848digital/KSA) - Regional Compliance for the Kingdom of Saudi Arabia 173 | - [Pakistan Workspace](https://github.com/ParaLogicTech/erpnext_pk) - Regional App for Pakistan with NIC, NTN, and STRN numbers, and reports for FBR tax compliance. 174 | - [Payware](https://github.com/aakvatech/Payware) - ERPNext Payroll enhancements specific for functionality required in Tanzania. 175 | - [Swiss Accounting Integration](https://github.com/phamos-eu/Swiss-Accounting-Integration) - Extend ERPNext with Swiss QR Integration and Abacus Export. 176 | - [Swiss Factur X E Invoicing](https://github.com/Grynn-GmbH/Swiss-E-invoicing-ERPNext) - For E-Invoice Hybrid PDF based on Factur-X and ZugFerd (EN 16931 Standards). 177 | - [Thai Tax](https://github.com/kittiu/thai_tax) - Thailand Taxation (VAT, WHT) for ERPNext. 178 | 179 | #### Other Apps 180 | 181 | 182 | 183 | - [Contract Payment](https://github.com/morghim/contract-payment) - Link between contract with sales invoice and purchase invoice and make dues. 184 | - [Digistore](https://github.com/NagariaHussain/digistore) - Digital Asset Distribution Platform built on Frappe. 185 | - [Digital Signage](https://github.com/one-highflyer/frappe-signage-display-app) - A lightweight digital signage solution made with Frappe. (Desinged for Single Board Computers (SBC) eg: Raspberry Pi. 186 | - [ERPNext Whitelabel](https://github.com/bhavesh95863/whitelabel) - White label ERPNext for your own brand from a single setting. 187 | - [Expense Entry](https://github.com/the-bantoo/expense_request) - Expense Entry for easy capture of non-item expenses without using the Journal Entry. 188 | - [IT Management](https://github.com/phamos-eu/it_management) - Manage your IT landscape from ERPNext. 189 | - [Mail Reminder](https://github.com/scopen-coop/frappe-mail-reminder.git) - ERPNext automatic mail to Contact for Sales invoices, Purchase Orders , ... 190 | - [PDF on Submit](https://github.com/alyf-de/erpnext_pdf-on-submit) - Automatically generate and attach a PDF when a sales document gets submitted. 191 | - [Recod ERPNext Design](https://github.com/Monogramm/recod_erpnext_design) - Provides new sample print formats and design for ERPNext. 192 | - [Robinhood](https://github.com/shridarpatil/robinhood) - System that powers [robinhoodarmy.com](https://checkin.robinhoodarmy.com/) 193 | - [Special Item Accountancy Code](https://github.com/scopen-coop/special_item_accountancy_code) - ERPNext Special Item accountancy code according customer settings. 194 | - [Stock Reconciliation Per Item Group](https://github.com/scopen-coop/stock_reconcialiation_per_item_group) - ERPNext Stock reconciliation per item group 195 | - [Telegram Bot Manager](https://github.com/leam-tech/frappe_telegram) - Telegram Bot support for Frappe. 196 | - [Workspace Permissions](https://github.com/pstuhlmueller/workspaceperms) - Manage the availability of workspaces within Frappe/ ERPNext (sidebar) based on user-roles. 197 | 198 | ### Developer Tooling 199 | 200 | - [Barista](https://github.com/ElasticRun/barista) - Automate functional testing of your Frappe Apps. 201 | - [Console](https://github.com/yrestom/Console) - Powerful Console for Frappe Backend 202 | - [DocType Model Generator](https://github.com/assemmarwan/model_generator) - Generate models to different languages based on Doctype. 203 | - [Doppio](https://github.com/NagariaHussain/doppio) - Magically setup single page applications on your Frappe Apps. 204 | - [Frappe Diff Custom](https://github.com/scopen-coop/scopen-frappe-diff) - Easy way to compare Custom Fields and Property Setters between the git version of an App 205 | - [Frappe GraphQL](https://github.com/leam-tech/frappe_graphql) - GraphQL API Layer for Frappe Framework. 206 | - [Frappe Schema JSON Diff](https://github.com/Robproject/fsjd) - CI tool for showing any schema changes between commits. 207 | - [Frappe Test Runner](https://marketplace.visualstudio.com/items?itemName=AnkushMenat.frappe-test-runner) - VS Code extension to run Frappe tests with single keybind. 208 | - [Frappe UI](https://github.com/frappe/frappe-ui) - A set of components and utilities for rapid UI development. 209 | - [frappe_test.vim](https://github.com/ankush/frappe_test.vim) - Running Frappe unit tests at speed of thought. 210 | - [Frappeviz](https://github.com/yemikudaisi/frappeviz) - Visualize class diagrams of a Frappe App's doctypes using PlantUML. 211 | - [Fsocket](https://github.com/pifabs/fsocket) - Extend frappe's websocket server using socket.io and redis. 212 | - [Intellisense](https://github.com/frappe/intellisense) - VSCode Extension and Language Server for Frappe Framework. 213 | - [Semgrep Rules](https://github.com/frappe/semgrep-rules) - Semgrep Rules for following the best practices while building your Frappe Apps. 214 | - [TypeScript Type generator](https://github.com/nikkothari22/frappe-types) - Typescript type definition generator for Frappe DocTypes. 215 | 216 | #### SDKs & Libraries 217 | 218 | - [Frappe JS SDK](https://github.com/nikkothari22/frappe-js-sdk) - TypeScript/JavaScript library for Frappe REST API 219 | - [Frappe React SDK SDK](https://github.com/nikkothari22/frappe-react-sdk) - React hooks for Frappe 220 | - [Frappe Straw](https://github.com/ssiyad/frappe-straw) - Developer focused React/TypeScript hooks and utilities for Frappe. 221 | - [Frappe-Request.js](https://github.com/bailabs/frappe-request) - A Frappe-Client made with JavaScript and Needle. 222 | - [FrappeClient.php](https://github.com/hizbul25/frappe-client) - a PHP client for making requests to your Frappe Server. 223 | - [FrappeClient.py](https://github.com/zerodha/py-frappe-client) - @zerodha's Python client for making requests to your Frappe Server. 224 | - [FrappeAPI](https://github.com/0xsirsaif/frappeapi) - Provides FastAPI-style API development for Frappe, enabling modern path-based routing and leveraging FastAPI's familiar interface and semantics for a streamlined development experience. 225 | - [FrappeRestClient.Net](https://github.com/yemikudaisi/FrappeRestClient.Net) - Frappe Framework REST client for .Net 226 | - [Renovation](https://github.com/leam-tech/renovation_core) - Renovation is a Frappe Front End TS/JS SDK. 227 | - [renovation_core.dart](https://github.com/leam-tech/renovation_core.dart) - The Frappe Dart/Flutter Front End SDK. 228 | 229 | #### Templates 230 | 231 | - [App Template](https://github.com/Monogramm/erpnext_template) - @Monogramm's supercharged GitHub template for building ERPNext/Frappe Apps. 232 | - [Doppio Bot](https://github.com/NagariaHussain/doppio_bot) - AI ChatBot Template, built into Frappe's Desk Interface. 233 | - [Doppio FrappeUI Starter](https://github.com/NagariaHussain/doppio_frappeui_starter) - A Vite + Vue 3 + TailwindCSS + Frappe UI starter template for building frontends for Frappe Apps. 234 | 235 | ### Other Tooling 236 | 237 | - [Smart Weighing Scale & Inventory](https://github.com/msf4-0/SWSI) - A wireless & portable smart weighing scale embedded system that interfaces with Node-Red for IoT connectivity and ERPNext for inventory & stock tracking. 238 | - [Biometric Attendance Sync Tool](https://github.com/frappe/biometric-attendance-sync-tool) - Python Scripts to poll your biometric attendance system (BAS) for logs and sync with your ERPNext instance. 239 | - [Frappe Chrome Dev Utils](https://github.com/ascorbic-acid/frappe_chrome_dev_utils) - A simple Browser Extension that help you work & develop in Frappe/ERPNext Framework. 240 | - [Frappe MCP Server](https://github.com/appliedrelevance/frappe_mcp_server) - A server that implements the Anthropic Model Control Protocol (MCP) to enable controlled access to Frappe sites. 241 | 242 | ### Deployment Tools 243 | 244 | _Resources allowing you to deploy Frappe apps with your favourite toolset_ 245 | 246 | - [Bench](https://frappe.io/bench) - CLI to Manage Frappe Deployments 247 | - [Benchless](https://github.com/castlecraft/benchless) - CLI tool to manage Frappe deployments without bench. 248 | - [Docker Hub](https://hub.docker.com/u/frappe) - Container images for Frappe & ERPNext releases. 249 | - [ERPNextFailOver](https://github.com/martinhbramwell/ERPNextFailOver) - Tool to automate setting up Database Replication for ERPNext. 250 | - [Frappe Docker](https://github.com/frappe/frappe_docker) - Official docker images for Frappe. 251 | - [Helm Chart](https://helm.erpnext.com/) - Kubernetes Helm Chart for ERPNext. 252 | - [Nethserver](https://github.com/geniusdynamics/ns8-erp-next) - @geniusdynamics's configuration for NS8 with backup/restore, server to server node migration, Ldap & Active directory integration and more. [[read more here](https://community.nethserver.org/t/erpnext-the-most-agile-erp-on-the-planet-in-ns8/24240)] 253 | 254 | ### Other Clients 255 | 256 | _Clients built for the Frappe Framework, other than the standard browser view Desk_ 257 | 258 | - [AdminLTE](https://github.com/mymi14s/frappevue_adminlte) - Vue-based AdminLTE dashboard for Frappe and ERPNext. 259 | - [Mobile](https://github.com/frappe/mobile) - Mobile App for Frappe built on Dart. _[Version 13+]_ 260 | 261 | ### Resources 262 | 263 | _Resources that can help you harness the power of the Frappe Framework_ 264 | 265 | - [frappeframework.com](https://frappeframework.com) - Official documentation of the Frappe Framework. 266 | - [frappe.school](https://frappe.school) - Pick from the various courses by the maintainers or from the community. 267 | 268 | _Community Channels_ 269 | 270 | - [discuss.frappe.io](https://discuss.erpnext.com) - Forum for Frappe and ERPNext community. 271 | - [Telegram](https://t.me/frappeframework) - Public Telegram group for the Frappe Framework. 272 | - [Stackoverflow](https://stackoverflow.com/questions/tagged/frappe) - Post questions with the `frappe` tag. 273 | 274 | _YouTube Channels_ 275 | 276 | - [@frappetech](https://www.youtube.com/@frappetech) - Frappe Technologies' official Youtube channel. 277 | - [@buildwithhussain](https://www.youtube.com/@buildwithhussain) - Watch Frappe Framework used live to build world-class web apps. 278 | 279 | 280 | ### Hosting 281 | 282 | _Providers that are catered to hosting of Frappe and Frappe Apps_ 283 | 284 | - [Frappe Cloud](https://frappecloud.com) - Managed hosting platform for Frappe Apps. 285 | 286 | 287 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Awesome Frappe 2 | description: A curated list of awesome things related to the Frappe Framework. Maintained by Gavin D'souza 3 | email: me@gavv.in 4 | url: https://awesome-frappe.gavv.in 5 | author: 6 | name: Gavin D'souza 7 | url: https://gavv.in/ 8 | 9 | remote_theme: pages-themes/cayman@v0.2.0 10 | plugins: 11 | - jekyll-remote-theme 12 | - jekyll-seo-tag 13 | 14 | include: ["_includes"] 15 | -------------------------------------------------------------------------------- /_includes/analytics: -------------------------------------------------------------------------------- 1 | --> 2 | 3 | 6 | 7 |