BaryoDev / BaryoDev/barakoCMS

Forms: a module so a public visitor can submit a form

Closed
#720 2 comments 0 reactions 0 assignees View on GitHub
client-sites
Dominant language
C#
Stars
6
Forks
7
Avg merge
4h 21m
Merged PRs (30d)
307

Description

There is no way for a visitor to submit anything. `Features/Requests` is outbound HTTP through
connectors, and the only anonymous writes in the API are registration and the PWA report endpoint.

A business site without a contact form is a brochure, so the claim that these four products ship
the boring 80 per cent of a client site is not honest until this exists.

`BarakoCMS.Forms`:

- `POST /api/public/forms/{slug}` validates the body against a content type marked as accepting
public submissions, and stores it as an ordinary entry of that type.
- Document sensitivity is Sensitive, so the delivery API can never serve submissions back out.
This is the part to get right first.
- Rate limited per client, the way the PWA report endpoint already is.
- A honeypot field, and an optional Turnstile or similar check.

Notification is not this module's job. A workflow on Created for that type with an Email action
already does it, through the Email modules that exist.

A contact form and an appointment request are then two definitions, not two features.

Contributor guide

Open the contributing guide

Research direction

Start with the existing PWA report endpoint to understand its rate limiting, then trace the delivery API's Sensitive handling and the content-type entry path. Check how the Email modules and Created workflows represent existing behavior. Done means a public slug-based submission endpoint validates eligible types, stores submissions as Sensitive entries, applies abuse protections, and keeps them out of delivery.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
api, backend, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.