Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* @buildwithhussain

/.github/ @buildwithhussain
/frontend/ @buildwithhussain
/forms_pro/ @buildwithhussain
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Bug report
description: Report a reproducible problem in Forms Pro
title: "bug: "
labels:
- bug
body:
- type: textarea
id: summary
attributes:
label: Summary
description: What happened, and what did you expect to happen instead?
placeholder: A clear description of the bug and the expected behavior.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Provide the smallest set of steps needed to reproduce the issue.
placeholder: |
1. Go to ...
2. Click ...
3. See error ...
validations:
required: false
- type: textarea
id: environment
attributes:
label: Environment
description: Share the app, Frappe, browser, and deployment details that matter.
placeholder: Forms Pro version, Frappe version, browser, site setup, and any relevant logs.
validations:
required: false
- type: textarea
id: additional_context
attributes:
label: Additional context
description: Add screenshots, tracebacks, or anything else that helps.
validations:
required: false
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Feature request
description: Suggest an improvement or new capability for Forms Pro
title: "feat: "
labels:
- enhancement
body:
- type: textarea
id: problem
attributes:
label: Problem or opportunity
description: What problem are you trying to solve?
placeholder: Describe the workflow gap, limitation, or use case.
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe the change you would like to see.
placeholder: Explain the feature, expected behavior, and any UX details that matter.
validations:
required: false
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Describe any workarounds or alternative approaches you have tried.
validations:
required: false
- type: textarea
id: additional_context
attributes:
label: Additional context
description: Add mockups, links, screenshots, or other supporting details.
validations:
required: false
24 changes: 24 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: 2
updates:
- package-ecosystem: pip
directory: /
schedule:
interval: weekly
labels:
- dependencies

- package-ecosystem: yarn
directory: /frontend
schedule:
interval: weekly
labels:
- dependencies
- frontend

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
labels:
- dependencies
- ci
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## Summary

- Describe the change and the reason for it.

## Testing

- [ ] `pre-commit run --all-files`
- [ ] `cd frontend && yarn typecheck`
- [ ] `bench --site <site> run-tests --app forms_pro`

## Checklist

- [ ] PR title follows the conventional format used by this repo
- [ ] Documentation updated if behavior or setup changed
- [ ] Screenshots attached for UI changes when useful
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ on:
push:
branches:
- develop
paths-ignore:
- ".github/**"
pull_request:
paths-ignore:
- ".github/**"

concurrency:
group: develop-forms_pro-${{ github.event.number }}
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ name: Linters

on:
pull_request:
paths-ignore:
- ".github/**"
workflow_dispatch:

permissions:
Expand All @@ -23,7 +21,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.14'
cache: pip
- uses: pre-commit/action@v3.0.0

Expand All @@ -42,7 +40,7 @@ jobs:
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.14'

- uses: actions/checkout@v4

Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ MANIFEST

# Environments
.env
.env.*
!.env.example
!.env.sample
.venv
env/
venv/
Expand Down Expand Up @@ -54,6 +57,9 @@ jspm_packages/
# Aider AI Chat
.aider*

# Local AI tooling settings
.claude/settings.local.json

/forms_pro/public/frontend
/forms_pro/www/forms.html
/forms_pro/www/frontend.html
Expand Down
18 changes: 8 additions & 10 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,11 @@ repos:
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
forms_pro/frontend/components.d.ts|
forms_pro/public/dist/.*|
frontend/components.d.ts|
frontend/auto-imports.d.ts|
forms_pro/public/frontend/.*|
.*node_modules.*|
.*boilerplate.*|
forms_pro/templates/includes/.*|
forms_pro/public/js/lib/.*
.*boilerplate.*
)$

- repo: https://github.com/pre-commit/mirrors-eslint
Expand All @@ -51,13 +50,12 @@ repos:
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
forms_pro/frontend/components.d.ts|
forms_pro/public/dist/.*|
frontend/components.d.ts|
frontend/auto-imports.d.ts|
forms_pro/public/frontend/.*|
cypress/.*|
.*node_modules.*|
.*boilerplate.*|
forms_pro/templates/includes/.*|
forms_pro/public/js/lib/.*
.*boilerplate.*
)$

ci:
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ When a form is saved, its fields are synced to the linked DocType as `CustomFiel

## Key Conventions

- **Python target**: 3.10+; formatted with `ruff`
- **Python target**: 3.14+; formatted with `ruff`
- **TypeScript**: strict mode; `vue-tsc` enforced in CI
- **Frappe patterns**: use `frappe.get_doc`, `frappe.get_all`, `frappe.db.*`; avoid raw SQL unless necessary
- **PR titles**: validated by CI workflow (conventional commit format expected)
Expand Down
34 changes: 34 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Contributing to Forms Pro

Thanks for contributing to `forms_pro`.

## Getting Started

1. Fork the repository and create a branch from `develop`.
2. Install the app in your Bench environment.
3. Install local checks:

```bash
pre-commit install
```

## Local Checks

Run the checks relevant to your change before opening a pull request.

```bash
pre-commit run --all-files
cd frontend && yarn typecheck
bench --site <site> run-tests --app forms_pro
```
Comment on lines +19 to +23
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Run checks without changing cwd for later commands.

After Line 21, the shell remains in frontend, so Line 22 may fail or run in the wrong location. Wrap the frontend check in a subshell (or add cd ..) so bench runs from the expected root context.

Suggested doc fix
 ```bash
 pre-commit run --all-files
-cd frontend && yarn typecheck
+(cd frontend && yarn typecheck)
 bench --site <site> run-tests --app forms_pro
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CONTRIBUTING.md` around lines 19 - 23, The documented checklist leaves the
shell in the frontend directory after running "cd frontend && yarn typecheck",
causing the subsequent "bench --site <site> run-tests --app forms_pro" to run
from the wrong cwd; change the frontend step to run in a subshell (replace "cd
frontend && yarn typecheck" with "(cd frontend && yarn typecheck)") so the
working directory is preserved for the later "bench" command and subsequent
steps.


## Pull Requests

- Keep changes focused and easy to review.
- Include a short summary of what changed and why.
- Add screenshots for UI changes when helpful.
- Use a conventional PR title such as `fix: handle empty submission state`.

## Security

If you find a security issue, do not open a public issue. Follow the process in [`SECURITY.md`](SECURITY.md).
File renamed without changes.
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
A powerful, modern form builder built on the Frappe Framework. Forms Pro takes Frappe web forms to the next level with an intuitive drag-and-drop interface, advanced field types, and seamless integration.

[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://opensource.org/licenses/AGPL-3.0)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Python 3.14+](https://img.shields.io/badge/python-3.14+-blue.svg)](https://www.python.org/downloads/)
[![Vue 3](https://img.shields.io/badge/Vue-3-4FC08D?logo=vue.js)](https://vuejs.org/)

<img src=".github/preview/logo_300.png" alt="Forms Pro Logo" width="100" style="border-radius: 16px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);"/>
Expand Down Expand Up @@ -47,7 +47,7 @@ Forms Pro is a Frappe app and can be installed using the [bench](https://github.
### Prerequisites

- Frappe Framework installed via bench
- Python 3.10 or higher
- Python 3.14 or higher
- Node.js and npm/yarn (for frontend development)

### Install via Bench
Expand Down Expand Up @@ -86,7 +86,7 @@ yarn build # For production build

## 🛠️ Tech Stack

- **Backend**: Python 3.10+, Frappe Framework
- **Backend**: Python 3.14+, Frappe Framework
- **Frontend**: Vue 3, TypeScript, Vite
- **UI Components**: Frappe UI, Tailwind CSS
- **Form Builder**: Vue Draggable
Expand All @@ -96,6 +96,7 @@ yarn build # For production build
## 🤝 Contributing

We welcome contributions! Forms Pro uses `pre-commit` for code formatting and linting.
Please review [`CONTRIBUTING.md`](CONTRIBUTING.md) for the contribution workflow and [`SECURITY.md`](SECURITY.md) for responsible disclosure.

### Setup for Contribution

Expand Down Expand Up @@ -135,7 +136,7 @@ This project uses the following tools for code quality:

The project includes automated testing via GitHub Actions:

- **CI**: Installs the app and runs unit tests on every push to `develop` branch
- **CI**: Installs the app and runs unit tests on pull requests and pushes to `develop`
- **Linters**: Runs [Frappe Semgrep Rules](https://github.com/frappe/semgrep-rules) and [pip-audit](https://pypi.org/project/pip-audit/) on every pull request

## 📄 License
Expand Down
17 changes: 17 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Security Policy

## Supported Versions

Security fixes are currently targeted at the active `develop` branch.

| Version | Supported |
| --- | --- |
| `develop` | Yes |

## Reporting a Vulnerability

Please report vulnerabilities privately to [developers@buildwithhussain.com](mailto:developers@buildwithhussain.com).

- Do not open a public GitHub issue for security reports.
- Include clear reproduction steps, impact, and any suggested mitigations if you have them.
- We will review the report, confirm the issue, and coordinate a fix and disclosure timeline with you.
1 change: 0 additions & 1 deletion frontend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@ dist
dist-ssr
*.local
coverage
../<app-name>
sites
src/types/frappe-ui.d.ts
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ authors = [
{ name = "BWH Studios", email = "developers@buildwithhussain.com" },
]
description = "Web Forms on steroids!"
requires-python = ">=3.10"
requires-python = ">=3.14"
readme = "README.md"
dynamic = ["version"]
dependencies = [
Expand All @@ -31,7 +31,7 @@ frappe = ">=16.0.0-dev,<18.0.0"

[tool.ruff]
line-length = 110
target-version = "py310"
target-version = "py313"

[tool.ruff.lint]
select = ["F", "E", "W", "I", "UP", "B", "RUF"]
Expand Down
Loading