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
9 changes: 4 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@
"esbenp.prettier-vscode",
"streetsidesoftware.code-spell-checker",
"ms-vscode.remote-explorer",
"usernamehw.errorlens"
"usernamehw.errorlens",
"Trunk.io"
]
}
},
"forwardPorts": [
3000
],
"forwardPorts": [3000],
"containerUser": "vscode",
"postCreateCommand": "yarn install",
"postCreateCommand": "yarn install && curl -fsSL https://get.trunk.io -o install.sh && chmod +x install.sh && ./install.sh",
"waitFor": "postCreateCommand", // otherwise automated jest tests fail
"features": {
"node": {
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: Lint Check (pre-commit)

permissions:
contents: read
checks: write
issues: write
pull-requests: write

on: [push]

jobs:
pre-commit:
uses: bemanproject/infra-workflows/.github/workflows/[email protected]
27 changes: 27 additions & 0 deletions .github/workflows/trunk-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Trunk Check
on: [push, pull_request, workflow_dispatch]
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true

permissions: read-all

jobs:
trunk_check:
name: Trunk Check Runner
runs-on: ubuntu-latest
permissions:
checks: write # For trunk to post annotations
contents: read # For repo checkout

steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true

- name: Trunk Check
uses: trunk-io/trunk-action@v1
with:
check-mode: all
post-annotations: true
37 changes: 37 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files

- repo: https://github.com/psf/black
rev: 23.9.1 # Use the latest stable version
hooks:
- id: black

- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.50.0 # Use the latest stable version
hooks:
- id: eslint

- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.0.0 # Use the latest stable version
hooks:
- id: prettier

- repo: https://github.com/markdownlint/markdownlint
rev: v0.12.0 # Use the latest stable version
hooks:
- id: markdownlint

- repo: https://github.com/zricethezav/gitleaks
rev: v8.17.0 # Use the latest stable version
hooks:
- id: gitleaks

exclude: |
^static/.*
^node_modules/.*
9 changes: 9 additions & 0 deletions .trunk/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*out
*logs
*actions
*notifications
*tools
plugins
user_trunk.yaml
user.yaml
tmp
2 changes: 2 additions & 0 deletions .trunk/configs/.isort.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[settings]
profile=black
2 changes: 2 additions & 0 deletions .trunk/configs/.markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Prettier friendly markdownlint config (all formatting rules disabled)
extends: markdownlint/style/prettier
7 changes: 7 additions & 0 deletions .trunk/configs/.shellcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
enable=all
source-path=SCRIPTDIR
disable=SC2154

# If you're having issues with shellcheck following source, disable the errors via:
# disable=SC1090
# disable=SC1091
7 changes: 7 additions & 0 deletions .trunk/configs/.yamllint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
rules:
quoted-strings:
required: only-when-needed
extra-allowed: ["{|}"]
key-duplicates: {}
octal-values:
forbid-implicit-octal: true
5 changes: 5 additions & 0 deletions .trunk/configs/ruff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Generic, formatter-friendly config.
select = ["B", "D3", "E", "F"]

# Never enforce `E501` (line length violations). This should be handled by formatters.
ignore = ["E501"]
14 changes: 14 additions & 0 deletions .trunk/configs/svgo.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export default {
plugins: [
{
name: "preset-default",
params: {
overrides: {
removeViewBox: false, // https://github.com/svg/svgo/issues/1128
sortAttrs: true,
removeOffCanvasPaths: true,
},
},
},
],
};
42 changes: 42 additions & 0 deletions .trunk/trunk.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# This file controls the behavior of Trunk: https://docs.trunk.io/cli
# To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml
version: 0.1
cli:
version: 1.25.0
# Trunk provides extensibility via plugins. (https://docs.trunk.io/plugins)
plugins:
sources:
- id: trunk
ref: v1.7.4
uri: https://github.com/trunk-io/plugins
# Many linters and tools depend on runtimes - configure them here. (https://docs.trunk.io/runtimes)
runtimes:
enabled:
- [email protected]
- [email protected]
- [email protected]
# This is the section where you manage your linters. (https://docs.trunk.io/check/configuration)
lint:
enabled:
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- git-diff-check
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
actions:
enabled:
- trunk-announce
- trunk-check-pre-push
- trunk-fmt-pre-commit
- trunk-upgrade-available
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: all install build start
.PHONY: all install build start trunk-check

all: install start

Expand All @@ -10,3 +10,6 @@ start: # Start local development server

build: # Generate static content for GitHub Pages deployment
yarn build

lint: # Run code quality checks
trunk check
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ blog/2000-10-30-my-blog-example/
3. Add your full Markdown blog post content inside the `index.md` file.

Example

```shell
$ cat blog/2000-10-30-my-blog-example/index.md
---
Expand Down Expand Up @@ -66,33 +67,32 @@ socials: # [optional] Include your socials (like your Github, X, Linkedin

> Note: The Discourse comments plugin only works for production website (a.k.a. https://bemanproject.org/). You cannot test it locally or on preview deployments. Check [Integrate Discourse comment feature for blog posts](https://github.com/bemanproject/website/issues/25) for more details.


4. Open a `DRAFT PR` and `wait` up to one minute for a preview deployment of your blog post.

* Draft PR example: [Add blog post: My Blog Example #54](https://github.com/bemanproject/website/pull/54/).
- Draft PR example: [Add blog post: My Blog Example #54](https://github.com/bemanproject/website/pull/54/).

* Click on the `Deploy Preview` URL (format `https://deploy-preview-${PR NUMBER}--bemanproject.netlify.app/`).
- Click on the `Deploy Preview` URL (format `https://deploy-preview-${PR NUMBER}--bemanproject.netlify.app/`).

* Successful CI preview deployment example:
- Successful CI preview deployment example:

![CI preview deployment success message](./images/tutorial/add-a-blog/ci-preview-deployment-success-message.gif)

* Test your deployment.
- Test your deployment.

<details>
<summary> [DEBUG] Inspect CI preview deployment error logs. </summary>

The CI preview deployment logs should be public. Please ping a codeowner otherwise.

* `DRAFT` PR example with CI preview deployment error - [#49](https://github.com/bemanproject/website/pull/49).
- `DRAFT` PR example with CI preview deployment error - [#49](https://github.com/bemanproject/website/pull/49).

* Click on the `Latest deploy log` URL - e.g., https://app.netlify.com/sites/bemanproject/deploys/6809108974fd910008633aa9.
- Click on the `Latest deploy log` URL - e.g., https://app.netlify.com/sites/bemanproject/deploys/6809108974fd910008633aa9.

* Logs inspect example:
- Logs inspect example:

![](./images/tutorial/add-a-blog/ci-preview-deployment-failure-message.gif)

* Fix the error, commit and push the changes. Wait for new deployment.
- Fix the error, commit and push the changes. Wait for new deployment.

> If you need to browse through more recent CI preview deployments logs use https://app.netlify.com/sites/bemanproject/deploys/. Note: netlify provides a single a single CI preview deployment for each PR - latest commit, but stores logs for multiple ones.

Expand All @@ -101,7 +101,7 @@ The CI preview deployment logs should be public. Please ping a codeowner otherwi
<details>
<summary> [DEBUG] Inspect local deployment error logs. </summary>

* On local setup, run `make` (see [Local development](#local-development)) and check if there is any error in the console - example:
- On local setup, run `make` (see [Local development](#local-development)) and check if there is any error in the console - example:

```shell
$ make
Expand All @@ -120,9 +120,9 @@ $ make
- DavidSankel
```

* Fix the error, re-deploy the local website.
- Fix the error, re-deploy the local website.

* Commit and push the changes. Wait for a new CI preview deployment.
- Commit and push the changes. Wait for a new CI preview deployment.

</details>

Expand All @@ -131,6 +131,7 @@ $ make
6. Apply the review feedback. Get approval. Merge the PR.

<!-- TODO: Replace with https://www.bemanproject.org/ after the website deployment switch. -->

7. The updates are automatically deployed to the production website after a few minutes - check https://bemanproject.github.io/website/.

## Local development
Expand Down Expand Up @@ -204,11 +205,10 @@ To start a local development server, run:
$ make start
```

If everything is properly installed, the command should open a browser window on http://localhost:3000/.
If everything is properly installed, the command should open a browser window on http://localhost:3000/.

Most changes are reflected live without having to restart the server.


### Generate static content for GitHub Pages deployment

To generate static from the project that can be served using any static contents hosting service (like `gh-pages`).
Expand Down
4 changes: 2 additions & 2 deletions blog/2025-01-13-beman-intro/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ comments: true

# Beman Project Introduction Online

David Sankel’s talk on Beman at 2024 CppCon is now online!
The presentation answers many questions about the project purpose and policies.
David Sankel’s talk on Beman at 2024 CppCon is now online!
The presentation answers many questions about the project purpose and policies.

https://youtu.be/f4JinCpcQOg

Expand Down
3 changes: 2 additions & 1 deletion blog/2025-01-29-nyc-hackathon/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ comments: true

Adobe hosted an exciting and intense half-day Beman hackathon where we worked on
adding new Beman libraries, addressed infrastructure issues, and brainstormed
designs for the Beman website.
designs for the Beman website.

<!-- truncate -->

It was awesome to collaborate in person. Here's
Expand Down
Binary file modified blog/2025-07-06-sofia-hackathon/images/beman-tidy-board.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 3 additions & 4 deletions blog/2025-07-06-sofia-hackathon/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@ comments: true

![intro](./images/intro-v2.png)


During the ISO WG21 C++ Meeting in [Sofia, June 2025](https://wg21.link/N5004), we hosted an in-person Beman - Evening Session — a mix of short presentations, a hands-on hackathon, and plenty of big ideas for the future of C++. What started as a relaxed gathering quickly turned into a productive (and caffeinated) brainstorming hub, where we explored potential C++29 library proposals, shared early-stage experiments, and even wrote code live. It was part workshop, part jam session, and fully in the spirit of what makes the C++ community so unique: collaboration, creativity, and a shared passion for pushing the language forward.

<!-- truncate -->

Since November 2024, we have been organizing Beman presentations at ISO WG21 C++ meetings (Warsaw 2024 - Poland, Hagenberg 2025 - Austria). Since we have been receiving positive feedback, we decided to organize another one in Sofia, June 2025 - Bulgaria. (Note that our next session will be at CppCon in September in Colorado - stay tuned for more details!)
Since November 2024, we have been organizing Beman presentations at ISO WG21 C++ meetings (Warsaw 2024 - Poland, Hagenberg 2025 - Austria). Since we have been receiving positive feedback, we decided to organize another one in Sofia, June 2025 - Bulgaria. (Note that our next session will be at CppCon in September in Colorado - stay tuned for more details!)

![intro](./images/intro-v1.png)

We had a great turnout, with 25 participants. The evening started with a great discussion about The Beman Project and where it is going, especially considering the C++26 is closed and the design cycle for C++29 is starting.
We had a great turnout, with 25 participants. The evening started with a great discussion about The Beman Project and where it is going, especially considering the C++26 is closed and the design cycle for C++29 is starting.

We presented our first [Production ready. API may undergo changes.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#production-ready-api-may-undergo-changes) library, which is the [beman.optional](https://github.com/bemanproject/optional) library, hoping to get it into the C++26 standard and become [Production ready. Stable API.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#production-ready-stable-api). We counted a total of 10 [Under development and not yet ready for production use.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#production-ready-stable-api) Beman libraries.

Expand All @@ -34,7 +33,7 @@ The implication during the hackathon was substantial, with 10 participants worki

We were very happy with the impact of that evening (Wednesday evening, in the middle of the ISO WG21 C++ Meeting), but surprises continued ...

After Friday's LEWG session, [P3655R1: std::zstring_view](https://wg21.link/P3655R1) was presented and got feedback to continue the proposed direction. As an immediate consequence of this event, a new author created the [beman.cstring_view](https://github.com/bemanproject/cstring_view) library, to pursue the C++29 proposal.
After Friday's LEWG session, [P3655R1: std::zstring_view](https://wg21.link/P3655R1) was presented and got feedback to continue the proposed direction. As an immediate consequence of this event, a new author created the [beman.cstring_view](https://github.com/bemanproject/cstring_view) library, to pursue the C++29 proposal.

The cherry on the cake was the Saturday's plenary! Lots and lots of great news for Beman folks!

Expand Down
Loading
Loading