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
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Bulk reformats. `git config blame.ignoreRevsFile .git-blame-ignore-revs`
5983e7ef7fcff2be90e5660cfab296dee4bcd7c1 # prettier, 87 files
4 changes: 2 additions & 2 deletions .github/workflows/auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ name: Auto-merge

on:
workflow_run:
workflows: ['CI']
workflows: ["CI"]
types: [completed]
schedule:
- cron: '*/10 * * * *'
- cron: "*/10 * * * *"
workflow_dispatch: {}

permissions:
Expand Down
31 changes: 31 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Build output and vendored trees — formatting these is noise.
node_modules
.next
dist
build
out
coverage
.turbo
.vercel
*.min.js
*.min.css

# Generated during a build, so it is absent locally and present in CI — which
# makes a clean local --check no evidence at all. Contentlayer's output also
# uses import assertions, which prettier's parser rejects outright.
.contentlayer
.astro
.svelte-kit
storybook-static
test-results
playwright-report

# Lockfiles are generated; prettier would rewrite them wholesale.
package-lock.json
pnpm-lock.yaml
yarn.lock

# Markdown is deliberately out of scope for now. Prettier rewraps prose, which
# is where it is most opinionated and least useful, and it would bury the real
# diff. Remove this line when you want docs formatted too.
*.md
9 changes: 9 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"printWidth": 100,
"tabWidth": 2,
"trailingComma": "all",
"arrowParens": "always",
"endOfLine": "lf"
}
56 changes: 28 additions & 28 deletions i18n/de.json
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
{
"solon": {
"title": "SOLON",
"tagline": "Bitcoin-native Governance für das digitale Zeitalter",
"subtag": "Transparente Entscheidungen und Schatzkammern für Organisationen aus Menschen und KI-Agenten.",
"cta_primary": "Letzte Abstimmung ansehen",
"cta_secondary": "Schatzkammer ansehen",
"bullets": {
"transparency": "Watch-only-Schatzkammern — Solon hält keine Schlüssel, keine Gelder",
"democracy": "Bitcoin-signierte Stimmen, von jedem überprüfbar",
"global": "Unveränderliches, öffentliches Audit-Protokoll"
}
},
"home": {
"made_in": "Hergestellt in der Schweiz",
"pillars_section": {
"title": "Was Solon regiert",
"subtitle": "Schatzkammer, Abstimmung, Entscheidungen und Audit — als ein System entworfen, jede Aussage am laufenden System überprüfbar."
},
"demo_section": {
"title": "Transparenz in Aktion",
"subtitle": "Stimmen sind Bitcoin-signierte Nachrichten. Die Schatzkammer ist watch-only on-chain. Das Audit-Protokoll ist unveränderlich und öffentlich."
"solon": {
"title": "SOLON",
"tagline": "Bitcoin-native Governance für das digitale Zeitalter",
"subtag": "Transparente Entscheidungen und Schatzkammern für Organisationen aus Menschen und KI-Agenten.",
"cta_primary": "Letzte Abstimmung ansehen",
"cta_secondary": "Schatzkammer ansehen",
"bullets": {
"transparency": "Watch-only-Schatzkammern — Solon hält keine Schlüssel, keine Gelder",
"democracy": "Bitcoin-signierte Stimmen, von jedem überprüfbar",
"global": "Unveränderliches, öffentliches Audit-Protokoll"
}
},
"cta": {
"title": "Regieren im Offenen",
"subtitle": "Jede Entscheidung, jede Stimme, jeder Satoshi — signiert, protokolliert und von jedem überprüfbar.",
"primary": "Dashboard öffnen",
"secondary": "Funktionen ansehen"
"home": {
"made_in": "Hergestellt in der Schweiz",
"pillars_section": {
"title": "Was Solon regiert",
"subtitle": "Schatzkammer, Abstimmung, Entscheidungen und Audit — als ein System entworfen, jede Aussage am laufenden System überprüfbar."
},
"demo_section": {
"title": "Transparenz in Aktion",
"subtitle": "Stimmen sind Bitcoin-signierte Nachrichten. Die Schatzkammer ist watch-only on-chain. Das Audit-Protokoll ist unveränderlich und öffentlich."
},
"cta": {
"title": "Regieren im Offenen",
"subtitle": "Jede Entscheidung, jede Stimme, jeder Satoshi — signiert, protokolliert und von jedem überprüfbar.",
"primary": "Dashboard öffnen",
"secondary": "Funktionen ansehen"
}
}
}
}
}
56 changes: 28 additions & 28 deletions i18n/en.json
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
{
"solon": {
"title": "SOLON",
"tagline": "Bitcoin-Native Governance for the Digital Age",
"subtag": "Transparent decision-making and treasuries for organizations of humans and AI agents.",
"cta_primary": "See the latest vote",
"cta_secondary": "See the treasury",
"bullets": {
"transparency": "Watch-only treasuries — Solon holds no keys, no funds",
"democracy": "Bitcoin-signed votes anyone can re-verify",
"global": "Append-only audit trail, public by default"
}
},
"home": {
"made_in": "Made in Switzerland",
"pillars_section": {
"title": "What Solon Governs",
"subtitle": "Treasury, voting, decisions, and audit — designed as one system, with every claim verifiable against the running platform."
},
"demo_section": {
"title": "See Transparency in Action",
"subtitle": "Votes are Bitcoin-signed messages. The treasury is watch-only on-chain. The audit trail is append-only and public."
"solon": {
"title": "SOLON",
"tagline": "Bitcoin-Native Governance for the Digital Age",
"subtag": "Transparent decision-making and treasuries for organizations of humans and AI agents.",
"cta_primary": "See the latest vote",
"cta_secondary": "See the treasury",
"bullets": {
"transparency": "Watch-only treasuries — Solon holds no keys, no funds",
"democracy": "Bitcoin-signed votes anyone can re-verify",
"global": "Append-only audit trail, public by default"
}
},
"cta": {
"title": "Govern in the open",
"subtitle": "Every decision and every vote — signed, recorded, and re-verifiable by anyone.",
"primary": "Open the Dashboard",
"secondary": "See the features"
"home": {
"made_in": "Made in Switzerland",
"pillars_section": {
"title": "What Solon Governs",
"subtitle": "Treasury, voting, decisions, and audit — designed as one system, with every claim verifiable against the running platform."
},
"demo_section": {
"title": "See Transparency in Action",
"subtitle": "Votes are Bitcoin-signed messages. The treasury is watch-only on-chain. The audit trail is append-only and public."
},
"cta": {
"title": "Govern in the open",
"subtitle": "Every decision and every vote — signed, recorded, and re-verifiable by anyone.",
"primary": "Open the Dashboard",
"secondary": "See the features"
}
}
}
}
}
56 changes: 28 additions & 28 deletions i18n/fr.json
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
{
"solon": {
"title": "SOLON",
"tagline": "Gouvernance native Bitcoin pour l'ère numérique",
"subtag": "Décisions et trésoreries transparentes pour des organisations d'humains et d'agents IA.",
"cta_primary": "Voir le dernier vote",
"cta_secondary": "Voir la trésorerie",
"bullets": {
"transparency": "Trésoreries en lecture seule — Solon ne détient ni clés ni fonds",
"democracy": "Votes signés Bitcoin, vérifiables par tous",
"global": "Journal d'audit public et immuable"
}
},
"home": {
"made_in": "Conçu en Suisse",
"pillars_section": {
"title": "Ce que Solon gouverne",
"subtitle": "Trésorerie, vote, décisions et audit — conçus comme un seul système, chaque affirmation vérifiable sur la plateforme en marche."
},
"demo_section": {
"title": "La transparence en action",
"subtitle": "Les votes sont des messages signés Bitcoin. La trésorerie est en lecture seule on-chain. Le journal d'audit est immuable et public."
"solon": {
"title": "SOLON",
"tagline": "Gouvernance native Bitcoin pour l'ère numérique",
"subtag": "Décisions et trésoreries transparentes pour des organisations d'humains et d'agents IA.",
"cta_primary": "Voir le dernier vote",
"cta_secondary": "Voir la trésorerie",
"bullets": {
"transparency": "Trésoreries en lecture seule — Solon ne détient ni clés ni fonds",
"democracy": "Votes signés Bitcoin, vérifiables par tous",
"global": "Journal d'audit public et immuable"
}
},
"cta": {
"title": "Gouverner au grand jour",
"subtitle": "Chaque décision, chaque vote, chaque satoshi — signé, enregistré et vérifiable par tous.",
"primary": "Ouvrir le tableau de bord",
"secondary": "Voir les fonctionnalités"
"home": {
"made_in": "Conçu en Suisse",
"pillars_section": {
"title": "Ce que Solon gouverne",
"subtitle": "Trésorerie, vote, décisions et audit — conçus comme un seul système, chaque affirmation vérifiable sur la plateforme en marche."
},
"demo_section": {
"title": "La transparence en action",
"subtitle": "Les votes sont des messages signés Bitcoin. La trésorerie est en lecture seule on-chain. Le journal d'audit est immuable et public."
},
"cta": {
"title": "Gouverner au grand jour",
"subtitle": "Chaque décision, chaque vote, chaque satoshi — signé, enregistré et vérifiable par tous.",
"primary": "Ouvrir le tableau de bord",
"secondary": "Voir les fonctionnalités"
}
}
}
}
}
56 changes: 28 additions & 28 deletions i18n/it.json
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
{
"solon": {
"title": "SOLON",
"tagline": "Governance nativa Bitcoin per l'era digitale",
"subtag": "Decisioni e tesorerie trasparenti per organizzazioni di persone e agenti IA.",
"cta_primary": "Vedi l'ultimo voto",
"cta_secondary": "Vedi la tesoreria",
"bullets": {
"transparency": "Tesorerie in sola lettura — Solon non detiene chiavi né fondi",
"democracy": "Voti firmati Bitcoin, verificabili da chiunque",
"global": "Registro di audit pubblico e immutabile"
}
},
"home": {
"made_in": "Realizzato in Svizzera",
"pillars_section": {
"title": "Cosa governa Solon",
"subtitle": "Tesoreria, voto, decisioni e audit — progettati come un unico sistema, ogni affermazione verificabile sulla piattaforma."
},
"demo_section": {
"title": "La trasparenza in azione",
"subtitle": "I voti sono messaggi firmati Bitcoin. La tesoreria è in sola lettura on-chain. Il registro di audit è immutabile e pubblico."
"solon": {
"title": "SOLON",
"tagline": "Governance nativa Bitcoin per l'era digitale",
"subtag": "Decisioni e tesorerie trasparenti per organizzazioni di persone e agenti IA.",
"cta_primary": "Vedi l'ultimo voto",
"cta_secondary": "Vedi la tesoreria",
"bullets": {
"transparency": "Tesorerie in sola lettura — Solon non detiene chiavi né fondi",
"democracy": "Voti firmati Bitcoin, verificabili da chiunque",
"global": "Registro di audit pubblico e immutabile"
}
},
"cta": {
"title": "Governare alla luce del sole",
"subtitle": "Ogni decisione, ogni voto, ogni satoshi — firmato, registrato e verificabile da chiunque.",
"primary": "Apri la dashboard",
"secondary": "Vedi le funzionalità"
"home": {
"made_in": "Realizzato in Svizzera",
"pillars_section": {
"title": "Cosa governa Solon",
"subtitle": "Tesoreria, voto, decisioni e audit — progettati come un unico sistema, ogni affermazione verificabile sulla piattaforma."
},
"demo_section": {
"title": "La trasparenza in azione",
"subtitle": "I voti sono messaggi firmati Bitcoin. La tesoreria è in sola lettura on-chain. Il registro di audit è immutabile e pubblico."
},
"cta": {
"title": "Governare alla luce del sole",
"subtitle": "Ogni decisione, ogni voto, ogni satoshi — firmato, registrato e verificabile da chiunque.",
"primary": "Apri la dashboard",
"secondary": "Vedi le funzionalità"
}
}
}
}
}
4 changes: 2 additions & 2 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const nextConfig = {
// Standalone output is required by the self-hosted Hetzner deploy
// (scripts/hetzner/deploy.sh stages the standalone build, same as every
// sibling app on the box).
output: 'standalone',
output: "standalone",
};

module.exports = nextConfig;
module.exports = nextConfig;
20 changes: 20 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@
"lint": "eslint .",
"typecheck": "tsc --noEmit",
"design:check": "node scripts/design-system-check.js",
"verify": "npm run lint && npm run typecheck && npm run design:check && npm run test",
"verify": "npm run format:check && npm run lint && npm run typecheck && npm run design:check && npm run test",
"test": "vitest run",
"test:e2e": "playwright test",
"test:puppeteer": "BASE_URL=${BASE_URL:-http://localhost:3000} node tests/puppeteer/smoke.mjs",
"test:puppeteer:mega": "BASE_URL=${BASE_URL:-http://localhost:3000} node tests/puppeteer/mega-menu.mjs",
"prisma:generate": "prisma generate",
"prisma:push": "prisma db push"
"prisma:push": "prisma db push",
"format": "prettier --write .",
"format:check": "prettier --check ."
},
"dependencies": {
"@fleet/design-tokens": "github:catomean/design-tokens#v1.1.0",
Expand Down Expand Up @@ -48,6 +50,7 @@
"eslint": "10.9.1",
"eslint-config-next": "16.3.2",
"postcss": "8.5.26",
"prettier": "3.9.6",
"prisma": "7.9.1",
"puppeteer": "25.8.0",
"ts-node": "10.9.2",
Expand Down
Loading