Yvv
5dc42af33e
Add interactive citizen page with sidebar, display settings, and adaptive CSS
...
Major rework of the citizen-facing page:
- Chart + sidebar layout (auth/vote/countdown in right sidebar)
- DisplaySettings component (font size, chart density, color palettes)
- Adaptive CSS with clamp() throughout, responsive breakpoints at 480/768/1024
- Baseline charts zoomed on first tier for small consumption detail
- Marginal price chart with dual Y-axes (foyers left, €/m³ right)
- Key metrics banner (5 columns: recettes, palier, prix palier, prix médian, mon prix)
- Client-side p0/impacts computation, draggable median price bar
- Household dots toggle, vote overlay curves
- Auth returns volume_m3, vote captures submitted_at
- Cleaned header nav (removed Accueil/Super Admin for public visitors)
- Terminology: foyer for bills, électeur for votes
- 600m³ added to impact reference volumes
- Realistic seed votes (50 votes, 3 profiles)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 21:00:22 +01:00
Yvv
6caea1b809
Restructure citizen vote page + add vote deadline
...
Reorganize the citizen page (/commune/[slug]) for voters: full-width
interactive chart with "Population" zoom by default, separate auth and
vote sections, countdown timer for vote deadline.
Backend: add vote_deadline column to communes with Alembic migration.
Admin: add deadline configuration card with datetime-local input.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 00:46:48 +01:00
Yvv
2af95ebcf1
Add markdown editor toolbar and data year display on import page
...
CMS editor: formatting toolbar with H1-H3, bold, italic, strikethrough,
links, images, lists, blockquotes, code blocks, horizontal rules.
Keyboard shortcuts (Ctrl+B/I/D/K). Improved markdown preview rendering.
Import page: shows current data summary with year badge, stats grid,
last import date. Year input for new imports. Preview with sample table.
Backend: added data_year and data_imported_at fields to TariffParams,
returned in stats endpoint. Import sets data_imported_at automatically.
Seed sets data_year=2018.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 18:05:18 +01:00
Yvv
1365f4c86c
Fix critical bugs + add zoom/overlay for citizen chart
...
Bugs fixed:
- Auth middleware now works on page refresh (plugin restores
auth from localStorage before middleware runs)
- Bezier drag no longer snaps back: removed client-side p0
recalculation during drag, only server computes p0 on mouseUp
- Removed redundant /login.vue page (homepage already has links)
New features:
- Interactive zoom on Bezier chart (buttons + mouse wheel +
tier 1/tier 2 presets)
- Toggle to display outlier vote curves (public overlay endpoint)
- Tier 1 curve visually emphasized (thicker stroke)
- Dev credentials file at data/DEV-CREDENTIALS.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:50:37 +01:00
Yvv
39b2d7c9fd
Fix TypeScript errors in toPolyline function
...
Accept undefined arrays and use non-null assertions for
array indexing after length check.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:28:00 +01:00
Yvv
b30e54a8f7
Initial commit: SejeteralO water tarification platform
...
Full-stack app for participatory water pricing using Bezier curves.
- Backend: FastAPI + SQLAlchemy + SQLite with JWT auth
- Frontend: Nuxt 4 + TypeScript with interactive SVG editor
- Math engine: cubic Bezier tarification with Cardano solver
- Admin: commune management, household import, vote monitoring, CMS
- Citizen: interactive curve editor, vote submission
- Docker-compose deployment ready
Includes fixes for:
- Impact table snake_case/camelCase property mismatch
- CMS content backend API + frontend editor (was stub)
- Admin route protection middleware
- Public content display on commune page
- Vote confirmation page link fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:26:02 +01:00