Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
711a9cb
fix: get watch mode to work
AntDavidLima Oct 17, 2025
d110e46
chore: update dependencies
AntDavidLima Oct 17, 2025
02ca58c
chore: remove unused dependency and unify styles on scss dir
AntDavidLima Oct 18, 2025
9a571ea
wip: update header
AntDavidLima Oct 20, 2025
60a4d39
feat: enhance header navigation with language selector and submenu fu…
AntDavidLima Oct 21, 2025
7e78397
feat: update footer layout
AntDavidLima Oct 22, 2025
8cd44a9
feat: improve header resposiveness
AntDavidLima Oct 24, 2025
828e21c
feat: enhance header accessibility
AntDavidLima Oct 24, 2025
ac0a0c7
feat: enhance footer accessibility
AntDavidLima Oct 24, 2025
1ef1a26
wip: update homepage
AntDavidLima Oct 24, 2025
5239c50
style: update styles to use CSS variables for consistency and maintai…
AntDavidLima Oct 27, 2025
960d527
wip: update index
AntDavidLima Oct 28, 2025
e50f1bd
feat(home): update features section
AntDavidLima Oct 30, 2025
0438af5
chore: trigger CI
henmohr Dec 10, 2025
9407d0e
feat: new layout
henmohr Dec 18, 2025
e6123ea
chore: add pending images
vitormattos Dec 24, 2025
02f9648
chore: WIP - hero
vitormattos Apr 6, 2026
7a0e19a
chore: broaden BrowserSync build watch glob
vitormattos May 7, 2026
cf8e4fd
fix(build): use available lineicons web-font stylesheet
vitormattos May 7, 2026
5c8d001
chore: color sessions and image
samuelsonbrito May 11, 2026
d538867
feat: add segment cards and update hero images
Any97Cris May 13, 2026
58137e7
add button to wpp
henmohr May 13, 2026
da8ccaa
fix image not displaying on big screens
henmohr May 13, 2026
292dd62
fix image not showing
henmohr May 13, 2026
6aac2c0
reduce navbar size
henmohr May 13, 2026
8a310df
fix white space
henmohr May 13, 2026
3027f92
fix(ci): sync composer.lock with sitemap constraint
vitormattos Jun 1, 2026
05ba982
fix(ci): sync package-lock.json with package.json
vitormattos Jun 1, 2026
4295410
fix: point Mix to existing manifest path
vitormattos Jun 2, 2026
18053ed
Fix card responsiveness with adjusted breakpoints
vitormattos Jun 2, 2026
da14a3d
Add responsive card styling and color variations
vitormattos Jun 2, 2026
15b8f10
Fix button text wrapping and responsive sizing
vitormattos Jun 2, 2026
30615a8
Update compiled assets from latest style changes
vitormattos Jun 2, 2026
c672115
Adjust isolated home styles and update feature icons
vitormattos Jun 2, 2026
6af2df7
Refine solutions section styles and update solution icons
vitormattos Jun 2, 2026
111b9d3
Refine clients section highlight rendering and color alignment
vitormattos Jun 2, 2026
e1a9503
style(home): align first challenges block with design
vitormattos Jun 2, 2026
0d21ca2
feat(home): move video demo section after features
vitormattos Jun 2, 2026
76875f4
feat(home): move blog section after solutions
vitormattos Jun 2, 2026
31eb4fd
chore(assets): move compiled output to source/assets/compiled and unt…
vitormattos Jun 2, 2026
8ad0572
Refine blog card badge styling
vitormattos Jun 2, 2026
2366ee8
Replace homepage sections with CTA
vitormattos Jun 2, 2026
9dc1d4a
Replace blog thumbnails with clean images without embedded overlays
vitormattos Jun 2, 2026
c493cda
Implement dynamic blog posts with real authors and categories on home…
vitormattos Jun 2, 2026
093f69b
Revert manual changes to lang folder - managed by weblate only
vitormattos Jun 2, 2026
be5759d
Remove unused images added in this PR
vitormattos Jun 2, 2026
27ccfa6
Add virtual keyboard to mobile application screenshot
vitormattos Jun 2, 2026
58a914a
Add realistic QWERTY keyboard to mobile application screenshot
vitormattos Jun 2, 2026
66ad139
Update hero secondary button hover color to match design (#195458)
vitormattos Jun 2, 2026
524dd27
Fix video-demo background image path for preview environments
vitormattos Jun 2, 2026
bf32759
Fix background image path in video demo section for preview compatibi…
vitormattos Jun 2, 2026
cd9f263
Fix background image path to work in both local and preview environments
vitormattos Jun 2, 2026
6979df0
refactor: isolate hero CSS scoping to prevent style leaks
vitormattos Jun 2, 2026
36ea825
refactor: remove redundant inline styles from hero section
vitormattos Jun 2, 2026
7163d23
feat: derive language menu from localization keys instead of hardcode…
vitormattos Jun 2, 2026
0a41b10
feat: restore animate.css for X Million signatures section
vitormattos Jun 3, 2026
d64f86f
feat: add AOS (Animate On Scroll) to home page sections
vitormattos Jun 3, 2026
9e86212
chore: update lock file and sync header styling
vitormattos Jun 3, 2026
3ec3120
chore: upgrade Bootstrap from 5.3.3 to 5.3.8
vitormattos Jun 3, 2026
8fe86a2
chore: update PHP dependencies
vitormattos Jun 3, 2026
4f4e6ba
build: migrate from laravel-mix to Vite
vitormattos Jun 3, 2026
218be77
refactor: move locale helpers to jigsaw-localization package
vitormattos Jun 3, 2026
97d166e
build: update for Vite migration and symfony/intl
vitormattos Jun 3, 2026
e31c962
build: use Sass modern-compiler API in Vite config
vitormattos Jun 3, 2026
868eae1
build(scss): migrate @import to @use and remove silenced Sass depreca…
vitormattos Jun 3, 2026
ce7e2c7
build(docker): add intl PHP extension, use override for local build
vitormattos Jun 3, 2026
95b2c64
build(docker): use one-time Vite build for develop startup
vitormattos Jun 3, 2026
a7850c7
build(docker): prevent bash history in project root
vitormattos Jun 3, 2026
42030ff
build(vite): restore official Jigsaw plugin setup
vitormattos Jun 3, 2026
98631cf
build(docker): regenerate build_local in develop mode
vitormattos Jun 3, 2026
e07d957
build(docker): keep php container alive in develop mode
vitormattos Jun 3, 2026
362a4dd
fix(vite): set base to /assets/build/ to fix font URLs in CSS
vitormattos Jun 3, 2026
0386357
docs: add local development workflow to README
vitormattos Jun 3, 2026
7a2cba2
docs: mention Vite dev server port mapping in README
vitormattos Jun 3, 2026
a90dfe9
fix: ignore and clean up build_staging generated by staging asset build
vitormattos Jun 3, 2026
614ccc3
fix: replace staging+rm hack with build-assets script (NODE_ENV=local)
vitormattos Jun 3, 2026
6855523
chore: remove stale comment from .gitignore
vitormattos Jun 3, 2026
3d1d58f
chore(deps): update lineicons 1.0.3→1.3.2 and sass 1.93.2→1.100.0
vitormattos Jun 3, 2026
947cc61
refactor: reorganize home section styles
vitormattos Jun 6, 2026
115c8ef
feat(nav): add Solutions dropdown menu with four sub-pages
vitormattos Jun 6, 2026
9dc79a1
feat(public-sector): add Public Sector solution landing page
vitormattos Jun 6, 2026
9056d1e
fix(public-sector): fix icon names and hero primary button style
vitormattos Jun 6, 2026
10385d4
refactor(public-sector): align page copy and sections with SVG content
vitormattos Jun 6, 2026
fa8630a
fix(public-sector): use provided artwork and align hero asset rendering
vitormattos Jun 6, 2026
728edc4
fix(public-sector): render faithful svg version with home palette
vitormattos Jun 6, 2026
f79326a
refactor(site): reuse home sections in public sector page
vitormattos Jun 6, 2026
ec1e1e4
refactor(hero): share homepage layout with public sector
vitormattos Jun 6, 2026
2db4e27
fix(public-sector): use provided hero background artwork
vitormattos Jun 6, 2026
9095e87
fix(public-sector): remove hero text absent from svg
vitormattos Jun 6, 2026
3f1c355
fix(public-sector): restore svg call-to-action button
vitormattos Jun 6, 2026
cf06313
fix(public-sector): match process section to svg
vitormattos Jun 6, 2026
33ad29f
fix(public-sector): align challenges section with svg
vitormattos Jun 6, 2026
5a2a5a2
refactor(hero): move background image to blade, simplify modifier
vitormattos Jun 6, 2026
e318b99
refactor(hero): unify typography into base class, drop modifier overr…
vitormattos Jun 6, 2026
34e74fb
refactor(hero): remove modifier, standardize background in base class
vitormattos Jun 6, 2026
1a2105f
refactor(hero): remove unused parameters from shared partial
vitormattos Jun 6, 2026
8897fc0
refactor(public-sector): remove unused and duplicate section styles
vitormattos Jun 6, 2026
428d501
fix(public-sector): translate english page content
vitormattos Jun 6, 2026
383f2fe
feat(companies): implement company solutions page from svg reference
vitormattos Jun 6, 2026
ba3414f
feat(companies): extract icons from svg and set hero background
vitormattos Jun 6, 2026
db44faf
fix(companies): use corrected icon svgs and restore orange circle bac…
vitormattos Jun 6, 2026
de85dc0
fix(companies): extract testimonial photos from svg and replace place…
vitormattos Jun 6, 2026
7643881
refactor(companies): source testimonials from config
vitormattos Jun 6, 2026
4818f80
fix(companies): translate page content to english
vitormattos Jun 6, 2026
f55fcb7
refactor(testimonials): keep a single testimonials collection
vitormattos Jun 6, 2026
8a216ac
feat: implement new solution pages and align about/contact layouts
vitormattos Jun 7, 2026
98713e9
refactor: unify solution cards into shared ud-home-card component
vitormattos Jun 7, 2026
039c94b
refactor: unify all site cards into single ud-card component
vitormattos Jun 7, 2026
b0b18c3
refactor: add card variants and page-section helpers, strip per-page …
vitormattos Jun 7, 2026
a8bd053
refactor: unify button system using Bootstrap base classes
vitormattos Jun 7, 2026
dc90d66
refactor: rename button classes to visual style→color hierarchy
vitormattos Jun 7, 2026
c8e8e55
fix(contact): align typography scale with design spec
vitormattos Jun 7, 2026
5b82cf3
fix(blog): fill avatar circle with object-fit: cover
vitormattos Jun 7, 2026
15fa6b4
fix(blog): make avatar anchor block-level to fill circle container
vitormattos Jun 7, 2026
6f9397f
refactor(pricing): rebuild layout with existing patterns and Bootstrap
vitormattos Jun 7, 2026
f607856
fix(home): link benefits cards to matching blog posts
vitormattos Jun 7, 2026
0fd2c7f
feat(home): drive benefits cards from post front matter via category …
vitormattos Jun 7, 2026
e8ae0ae
refactor(home): extract blog section to reusable partial
vitormattos Jun 7, 2026
648e809
refactor(posts): unified parametric post-list system
vitormattos Jun 7, 2026
f2ce730
refactor(card-layouts): rename folder and expand abbreviated variables
vitormattos Jun 7, 2026
d4576c5
feat(features): drive features page from posts + nav dropdown
vitormattos Jun 7, 2026
15d2630
fix(nav): fix Features split dropdown UX
vitormattos Jun 7, 2026
5709f17
fix(features): filter by features-nav to show only the 4 main feature…
vitormattos Jun 7, 2026
413ef20
fix(nav): open Features submenu on tap in mobile
vitormattos Jun 7, 2026
8924435
refactor(nav): unify Features dropdown with Solutions mechanism
vitormattos Jun 7, 2026
c5c90f1
refactor(categories): replace home-benefits+features-nav with single …
vitormattos Jun 7, 2026
df22dd1
refactor(categories): rename destaque -> featured
vitormattos Jun 7, 2026
57ed39a
feat(nav): add Weblate CTA to language dropdown
vitormattos Jun 7, 2026
9679301
fix(hero): fix mobile responsive layout
vitormattos Jun 7, 2026
dc4c1a5
fix(hero): keep image as absolute background on all breakpoints
vitormattos Jun 7, 2026
b0f21fb
feat(stats): fetch total GitHub release downloads at build time
vitormattos Jun 7, 2026
650dcd7
feat(stats): round downloads to nearest thousand and add weekly rebuild
vitormattos Jun 7, 2026
e355037
refactor(stats): format download count as scaled shorthand (174K+, 2M+)
vitormattos Jun 7, 2026
3bd39a8
refactor(stats): spell out download scale in full via t() for transla…
vitormattos Jun 7, 2026
37c1a49
copy(stats): change 'downloads' to 'installations worldwide'
vitormattos Jun 7, 2026
c9bff3f
copy(stats): 'Trusted worldwide, with over 174,000 downloads'
vitormattos Jun 7, 2026
ca52b39
feat(ci): skip scheduled deploy when download count has not increased
vitormattos Jun 7, 2026
43d8913
refactor(ci): simplify download-check job using gh cli and git-auto-c…
vitormattos Jun 7, 2026
c688be3
refactor(ci): merge fetch+compare into one step, strip redundant name…
vitormattos Jun 7, 2026
5128efc
revert(ci): simplify deploy — remove schedule, check job and cache file
vitormattos Jun 7, 2026
7100a9b
fix(a11y): add id=top to html element so back-to-top href=#top resolv…
vitormattos Jun 7, 2026
4c9fad8
fix(preview): patch vite base URL so assets load from correct preview…
vitormattos Jun 7, 2026
0f5eaed
revert(a11y): revert id=top on html element
vitormattos Jun 7, 2026
eba1bf8
feat(seo): improve SEO, GEO, accessibility and semantic HTML
vitormattos Jun 7, 2026
91269de
refactor(seo): move About and FAQ sections from home to dedicated /fa…
vitormattos Jun 8, 2026
6aa84dc
create frequently questions page
Any97Cris Oct 4, 2024
b90b241
more questions
Any97Cris Oct 7, 2024
e987452
more questions to faq
Any97Cris Oct 8, 2024
aa2b153
adjustment frequently_question page to faq page
Any97Cris Oct 9, 2024
254766d
correct the teste to FAQ
Any97Cris Oct 9, 2024
ef7e20e
adjustment phrases in portuguese, remove quention
Any97Cris Oct 9, 2024
b981ac3
remove question How does LibreSign guarantee the security of signatur…
Any97Cris Oct 9, 2024
279c971
fix(content): address pending FAQ review feedback
vitormattos Jun 8, 2026
03bd970
feat(faq): add accessible accordion FAQ page with JSON-LD structured …
vitormattos Jun 8, 2026
88ec109
fix(config): restore functions lost during cherry-pick
vitormattos Jun 8, 2026
99d19de
fix(footer): remove duplicate FAQ link pointing to old frequently-que…
vitormattos Jun 8, 2026
494cdb2
refactor(footer): reorganize nav columns for visual consistency
vitormattos Jun 8, 2026
001382d
feat(pages): add ebooks, success-stories and team index pages
vitormattos Jun 8, 2026
21138f6
feat(footer): add ebooks and success-stories links
vitormattos Jun 8, 2026
8417bc7
fix(posts): resolve cover/banner images with .png and .webp extensions
vitormattos Jun 8, 2026
d0c3257
fix(gravatar): resolve author avatars in templates via inline lookup …
vitormattos Jun 8, 2026
92e7c75
fix(a11y): add author name to avatar alt attributes
vitormattos Jun 8, 2026
ff72828
refactor(config): single source of truth for team members and author …
vitormattos Jun 8, 2026
30d4d93
fix(stats): restore githubDownloads IIFE lost during cherry-pick
vitormattos Jun 8, 2026
a0c5ce9
feat(categories): dynamic category pages + blog card UX improvements
vitormattos Jun 8, 2026
f06d5f0
feat(team): redesign team pages inspired by Nextcloud's team page
vitormattos Jun 8, 2026
e297af2
fix(nav): link Client Area button to https://account.libresign.coop/
vitormattos Jun 8, 2026
a263c01
fix(features): filter page by 'featured' category instead of 'features'
vitormattos Jun 8, 2026
7d04e42
fix(team): render bio and job_title on cards and profile pages
vitormattos Jun 8, 2026
8e5f410
fix(footer): remove broken /support link (page does not exist)
vitormattos Jun 8, 2026
b3cfb42
fix(html): resolve W3C validation errors
vitormattos Jun 8, 2026
2324854
fix: SEO, accessibility, content quality and broken links audit
vitormattos Jun 8, 2026
4b3ace2
fix: update Privacy Policy last updated date to 2026-06-07
vitormattos Jun 8, 2026
a64f4ba
fix: remove orphaned 'View All Plans' CTA from features page
vitormattos Jun 8, 2026
4423463
fix: footer nav headings now white to match dark background
vitormattos Jun 8, 2026
6dd0a85
fix: remove Basic plan from pricing until SaaS launch
vitormattos Jun 8, 2026
43ebddb
fix: remove broken validation.png image from envelopes post
vitormattos Jun 8, 2026
722ad96
fix: use relative paths for captcha/form middleware URLs
vitormattos Jun 8, 2026
f5ec006
fix: add missing FAQ stylesheet (_faq.scss)
vitormattos Jun 8, 2026
322a42d
fix: language selector icon broken on non-root pages
vitormattos Jun 8, 2026
e430d39
fix: resolve HTML validation errors (W3C Nu)
vitormattos Jun 8, 2026
2f525f4
fix: incremental SEO, copy, accessibility and heading improvements
vitormattos Jun 8, 2026
7e4ebee
fix: fix HTML validation errors and remove trailing slashes on void e…
vitormattos Jun 8, 2026
13802dd
fix: validate locale against configured locales in current_path_locale
vitormattos Jun 8, 2026
dd2aad0
fix: use locale_url instead of locale_path with baseUrl for post URLs
vitormattos Jun 8, 2026
777f089
fix: improve SEO and accessibility for images and links
vitormattos Jun 8, 2026
6b9b6b7
fix: remove invalid role=none from li element in submenu divider
vitormattos Jun 8, 2026
6ca5d1f
fix: lower floating buttons position on mobile/tablet
vitormattos Jun 8, 2026
d1b1888
fix: move fixed floating buttons outside footer element
vitormattos Jun 8, 2026
2292747
Update footer contact link
henmohr Jun 8, 2026
45dd0ce
fix: l10n
vitormattos Jun 9, 2026
c19915b
chore: bump PHP dependencies
vitormattos Jun 9, 2026
2945613
fix: translated assets path
vitormattos Jun 9, 2026
40c6551
fix: remove duplicated line
vitormattos Jun 12, 2026
93fa537
chore: add mouse hover at language menu items and toggle arrow
vitormattos Jun 12, 2026
705043a
fix: hover at menu items
vitormattos Jun 12, 2026
cf350b0
fix: position of menu at resposible mode
vitormattos Jun 12, 2026
53f58ab
chore: optimize svg size
vitormattos Jun 13, 2026
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
2 changes: 2 additions & 0 deletions .docker/php/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/do
RUN chmod uga+x /usr/local/bin/install-php-extensions && sync \
&& install-php-extensions \
gd \
intl \
xdebug \
zip \
@composer \
Expand Down Expand Up @@ -43,6 +44,7 @@ fi
EOF

WORKDIR /var/www/html
ENV HISTFILE=/dev/null
USER www-data

COPY entrypoint.sh /var/www/scripts/
Expand Down
20 changes: 12 additions & 8 deletions .docker/php/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

set -euo pipefail

if [[ ! -d "vendor" ]]; then
composer i
fi
Expand All @@ -8,20 +10,22 @@ if [[ ! -d "node_modules" ]]; then
npm ci
fi

php-fpm &

MODE="${SERVER_MODE:-watch}"
MODE="$(echo "$MODE" | tr '[:upper:]' '[:lower:]' | xargs)"

echo "Starting php container with SERVER_MODE=$MODE"

if [[ "$MODE" == 'watch' ]]; then
npm run watch
php-fpm -D
exec npm run watch
else
if [[ ! -f "source/assets/build/mix-manifest.json" ]]; then
echo "Mix manifest missing. Running one-time asset build (npm run dev)..."
npm run dev
fi
# Remove the Vite hot file so Jigsaw uses the compiled manifest
# instead of pointing HTML to the dev server.
rm -f "source/hot"

php ./vendor/bin/jigsaw serve --host 0.0.0.0 --port 3000
# Build Vite assets and the local static site in one step.
# NODE_ENV=local causes the plugin to run `jigsaw build local`,
# so build_local is ready for nginx with no leftover build_staging.
npm run build-assets
exec php-fpm -F
fi
30 changes: 6 additions & 24 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,30 @@
# This is a basic workflow to help you get started with Actions

name: Deploy

# Controls when the workflow will run
on:
# Triggers the workflow on push events but only for the main branch
push:
branches: [ main ]
workflow_dispatch:
repository_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Set up php 8.3
uses: shivammathur/setup-php@v2
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
- name: Set up PHP dependencie
run: composer i
- name: Run composer command
run: composer prod
- name: Build production site
run: ./vendor/bin/jigsaw build production
- name: Deploy to GitHub Pages
- run: composer i
- run: composer prod
- run: ./vendor/bin/jigsaw build production
- uses: crazy-max/ghaction-github-pages@v4
if: success()
uses: crazy-max/ghaction-github-pages@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Build directory to deploy
build_dir: build_production
# Write the given domain name to the CNAME file
fqdn: libresign.coop
# Allow Jekyll to build your site
jekyll: false
1 change: 1 addition & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
run: |
sed -i "s|libresign.coop|libresign.github.io|g" CNAME
sed -i "s|baseUrl' => '/'|baseUrl' => 'https://LibreSign.github.io/site-preview/pr-preview/pr-${{ github.event.pull_request.number }}/'|g" config.php
sed -i "s|base: '/assets/build/'|base: 'https://libresign.github.io/site-preview/pr-preview/pr-${{ github.event.pull_request.number }}/assets/build/'|g" vite.config.js
cat config.php|grep "'baseUrl' => "
sed -i "/'matomo_container'/d" config.production.php
# Disable HTTP calls during preview build to avoid SSL issues
Expand Down
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@ npm-debug.log
/source/_posts/_translated_tmp/
/source/_redirect/
/source/_team/
# Optional ignores
# /build_staging/
/build_staging/
/build_production/
/source/assets/compiled/
/source/assets/build/
/source/hot

.env
docker-compose.override.yml
.bash_history
36 changes: 36 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
# LibreSign Website

## Local development

### Starting the stack

```bash
docker compose up
```

The `php` container builds the static site on startup and keeps `php-fpm` running so you can exec into it at any time:

```bash
docker compose exec php bash
```

The site is then served by nginx at <http://localhost/>.

### Asset and build commands

| Goal | Command | Exits? |
|---|---|---|
| Dev server with hot-reload (HMR) | `npm run dev` | No — stays alive waiting for changes |
| Watch mode (rebuild on save, no HMR) | `npm run watch` | No — stays alive |
| **Build assets + local site** (for local nginx) | `npm run build-assets` | Yes |
| Staging build | `npm run staging` | Yes |
| Production build | `npm run prod` | Yes |

> **Note:** `npm run dev` starts the Vite development server on port `3000` (mapped to the host via `HTTP_PORT_BROWSERSYNC`, default `3000`). It runs an initial Jigsaw build, prints "Initial Jigsaw build completed." and then waits for file changes with HMR. It is not supposed to exit — press Ctrl+C to stop it.

### Force a full local rebuild

Use this when you want to regenerate `build_local` manually and return to the prompt:

```bash
docker compose exec php bash -lc "npm run build-assets"
```

## Translations
Help to translate the project on Weblate platform: https://hosted.weblate.org/projects/libresign-coop-site/site/

Expand Down
Loading
Loading