Skip to content
This repository was archived by the owner on Mar 15, 2026. It is now read-only.

Commit 9497731

Browse files
OSS release preparations
1 parent 8fb7d3c commit 9497731

File tree

7 files changed

+203
-13
lines changed

7 files changed

+203
-13
lines changed

.dxclirc

Lines changed: 0 additions & 2 deletions
This file was deleted.

.mise/tasks/deploy/preprod.sh

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
11
#!/usr/bin/env bash
22
#MISE description="Deploy to preprod"
33

4+
set -euo pipefail
5+
6+
if [ -z "${DEPLOY_TARGET:-}" ]; then
7+
echo "DEPLOY_TARGET is required."
8+
echo "Example:"
9+
echo " DEPLOY_TARGET='user@host:/opt/productbuilder-webapp-preprod/' mise run deploy:preprod"
10+
echo ""
11+
echo "For Joboo-specific hosting/rollout automation, use the dedicated"
12+
echo "productbuilder-webapp-hosting-joboo repository."
13+
exit 1
14+
fi
15+
416
rsync -avc \
517
--exclude .git \
618
--exclude .productbuilder-workspaces \
719
--exclude node_modules \
820
--exclude vendor \
921
--exclude var \
1022
./ \
11-
[email protected]:/opt/productbuilder-webapp-preprod/
23+
"${DEPLOY_TARGET}"

LICENSE

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
Business Source License 1.1
2+
3+
Parameters
4+
5+
Licensor: DX·Tooling
6+
Licensed Work: productbuilder-webapp
7+
The Licensed Work is (c) 2026 DX·Tooling
8+
Additional Use Grant: None
9+
Change Date: January 31, 2030
10+
Change License: Apache License, Version 2.0
11+
12+
Terms
13+
14+
The Licensor hereby grants you the right to copy, modify, create derivative
15+
works, redistribute, and make non-production use of the Licensed Work. The
16+
Licensor may make an Additional Use Grant, above, permitting limited
17+
production use.
18+
19+
Effective on the Change Date, or the fourth anniversary of the first publicly
20+
available distribution of a specific version of the Licensed Work under this
21+
License, whichever comes first, the Licensor hereby grants you rights under
22+
the terms of the Change License, and the rights granted in the paragraph
23+
above terminate.
24+
25+
If your use of the Licensed Work does not comply with the requirements
26+
currently in effect as described in this License, you must purchase a
27+
commercial license from the Licensor, its affiliated entities, or authorized
28+
resellers, or you must refrain from using the Licensed Work.
29+
30+
All copies of the original and modified Licensed Work, and derivative works
31+
of the Licensed Work, are subject to this License. This License applies
32+
separately for each version of the Licensed Work and the Change Date may vary
33+
for each version of the Licensed Work released by Licensor.
34+
35+
You must conspicuously display this License on each original or modified copy
36+
of the Licensed Work. If you receive the Licensed Work in original or
37+
modified form from a third party, the terms and conditions set forth in this
38+
License apply to your use of that work.
39+
40+
Any use of the Licensed Work in violation of this License will automatically
41+
terminate your rights under this License for the current and all other
42+
versions of the Licensed Work.
43+
44+
This License does not grant you any right in any trademark or logo of
45+
Licensor or its affiliates (provided that you may use a trademark or logo of
46+
Licensor as expressly required by this License).
47+
48+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
49+
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
50+
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
51+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
52+
TITLE.
53+
54+
MariaDB hereby grants you permission to use this License's text to license
55+
your works, and to refer to it using the trademark "Business Source License",
56+
as long as you comply with the Coward Conditions of the MariaDB Business
57+
Source License.
58+
59+
Coward Conditions of the MariaDB Business Source License
60+
61+
The Coward Conditions are as follows:
62+
63+
You may not make production use of the Licensed Work if your use constitutes
64+
a Competing Service. A "Competing Service" means a product or service that
65+
competes with any offering made available by the Licensor.
66+
67+
A product or service is competitive with an offering made available by the
68+
Licensor if it provides substantially the same functionality and is offered
69+
to third parties on a standalone basis (regardless of payment).
70+
71+
For the avoidance of doubt, the following uses are explicitly permitted:
72+
73+
1. Internal Use: Using the Licensed Work within your organization for
74+
internal operations, regardless of whether those operations are
75+
commercial in nature.
76+
77+
2. Self-Hosting: Running the Licensed Work on your own infrastructure for
78+
your own benefit or the benefit of your organization.
79+
80+
3. Modification: Creating derivative works of the Licensed Work for any
81+
purpose permitted by this License.
82+
83+
4. Non-Production Use: Using the Licensed Work for development, testing,
84+
prototyping, or educational purposes.
85+
86+
The following use is explicitly prohibited:
87+
88+
1. Managed Service: Offering the Licensed Work, or any derivative work
89+
thereof, to third parties as a hosted or managed service, where the
90+
service provides users with access to any substantial functionality of
91+
the Licensed Work.

README.md

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,88 @@
1-
# ProductBuilder — Web Application
1+
# ProductBuilder Webapp
2+
3+
[![Build image](https://img.shields.io/github/actions/workflow/status/dx-tooling/productbuilder-webapp/ci.yml?branch=main&label=Build%20image)](https://github.com/dx-tooling/productbuilder-webapp/actions/workflows/ci.yml)
4+
[![Frontend build](https://img.shields.io/github/actions/workflow/status/dx-tooling/productbuilder-webapp/ci.yml?branch=main&label=Frontend%20build)](https://github.com/dx-tooling/productbuilder-webapp/actions/workflows/ci.yml)
5+
[![Frontend tests](https://img.shields.io/github/actions/workflow/status/dx-tooling/productbuilder-webapp/ci.yml?branch=main&label=Frontend%20tests)](https://github.com/dx-tooling/productbuilder-webapp/actions/workflows/ci.yml)
6+
[![PHP tests](https://img.shields.io/github/actions/workflow/status/dx-tooling/productbuilder-webapp/ci.yml?branch=main&label=PHP%20tests)](https://github.com/dx-tooling/productbuilder-webapp/actions/workflows/ci.yml)
7+
[![Quality](https://img.shields.io/github/actions/workflow/status/dx-tooling/productbuilder-webapp/ci.yml?branch=main&label=Quality)](https://github.com/dx-tooling/productbuilder-webapp/actions/workflows/ci.yml)
8+
9+
ProductBuilder is a Symfony web application for AI-assisted product delivery with GitHub as the operator interface. It coordinates planning and implementation agents against GitHub issues and pull requests, and executes work inside persistent local workspaces.
10+
11+
It is a [DX·Tooling](https://dx-tooling.org) project, sponsored by <a href="https://www.joboo.de"><img src="https://webassets.cdn.www.joboo.de/assets/images/joboo-inverted.png" alt="JOBOO! GmbH" height="18" /></a>
12+
13+
## What this repository contains
14+
15+
- A Symfony 7.4 backend that coordinates issue-driven planning and implementation workflows
16+
- A Stimulus + TypeScript frontend for app UI and interactions
17+
- Persistent workspace orchestration for agent execution against product repositories
18+
- A vertical architecture with strict boundaries between features
19+
20+
## Tech stack
21+
22+
- PHP 8.4, Symfony 7.4, Doctrine ORM
23+
- MariaDB 12
24+
- TypeScript, Stimulus, Tailwind CSS, AssetMapper
25+
- Docker + Docker Compose
26+
- Mise for tool and task orchestration
27+
28+
## Architecture overview
29+
30+
The codebase is organized into verticals under `src/`. Each vertical has its own layers (`Domain`, `Facade`, `Infrastructure`, `Api`, `Presentation`). Cross-vertical communication goes through Facades and DTOs.
31+
32+
For details, see:
33+
- `docs/archbook.md`
34+
- `src/Workflow/docs/workflow.md`
35+
- `docs/frontendbook.md`
36+
37+
## Getting started (local development)
38+
39+
### Prerequisites
40+
41+
- Docker Desktop
42+
- Mise (https://mise.jdx.dev)
43+
- an unixoid system like Linux, macOS, or Windows Subsystem for Linux
44+
45+
### Setup
46+
47+
```bash
48+
# 1) Trust mise in this repo
49+
mise trust
50+
51+
# 2) Bootstrap local environment
52+
mise run setup
53+
```
54+
55+
`mise run setup` installs dependencies, starts containers, prepares the database, builds frontend assets, runs checks/tests, and opens the app.
56+
57+
## Common development tasks
58+
59+
All commands should be run via `mise run` so they execute in the expected containerized environment.
60+
61+
- Quality checks: `mise run quality`
62+
- PHP tests: `mise run tests`
63+
- Frontend tests (Vitest): `mise run tests:frontend`
64+
- Build frontend assets: `mise run frontend`
65+
- Symfony console: `mise run console <command>`
66+
- Database shell: `mise run db`
67+
68+
## Product config bootstrap
69+
70+
You can create/update a `ProductConfig` from YAML:
71+
72+
```bash
73+
mise run console app:product-config:domain:create-product-config product-config.sample.yaml
74+
```
75+
76+
`product-config.sample.yaml` is an example template and must be adapted with your own credentials.
77+
78+
## Hosting and deployment
79+
80+
This repository is intentionally focused on application code and local development. Company-specific deployment and rollout automation lives in a dedicated hosting repository.
81+
82+
## Additional docs
83+
84+
- `docs/archbook.md` — architecture and boundaries
85+
- `docs/devbook.md` — recurring dev tasks
86+
- `docs/setupbook.md` — setup guide
87+
- `docs/frontendbook.md` — frontend conventions
88+
- `docs/runbook.md` — runtime/operations notes

docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ services:
8282
image: mariadb:12.1.2
8383
container_name: etfs_${ETFS_PROJECT_NAME}_mariadb
8484
environment:
85+
# Local development defaults only. Do not reuse in production.
8586
MYSQL_ROOT_PASSWORD: secret
8687
MYSQL_DATABASE: etfs_${ETFS_PROJECT_NAME}_dev
8788
MYSQL_USER: root

docs/setupbook.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ The setup script will check these settings and warn you if they're not optimal.
2424

2525
```bash
2626
# Clone the repository
27-
git clone [email protected]:dx-tooling/etfs-app-starter-kit.git
28-
cd etfs-app-starter-kit
27+
git clone [email protected]:dx-tooling/productbuilder-webapp.git
28+
cd productbuilder-webapp
2929

3030
# Trust mise configuration
3131
mise trust

product-config.sample.yaml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
config:
2-
name: FooBar
3-
github_url: https://github.com/acme-inc/foo-bar.git
4-
account_email: [email protected]
5-
account_password: s3cr3t
6-
cursor_agent_api_key: key_698b...3cd2
7-
github_token: gh_pat_123...abc
8-
anthropic_api_key: sk-ant-api03-...
2+
# Sample only. Replace all placeholder values before use.
3+
name: your-product-name
4+
github_url: https://github.com/your-org/your-product-repo.git
5+
account_email: [email protected]
6+
account_password: CHANGE_ME_STRONG_PASSWORD
7+
cursor_agent_api_key: YOUR_CURSOR_AGENT_API_KEY_HERE
8+
github_token: YOUR_GITHUB_TOKEN_HERE
9+
anthropic_api_key: YOUR_ANTHROPIC_API_KEY_HERE

0 commit comments

Comments
 (0)