Commit Graph

1131 Commits

Author SHA1 Message Date
m
c8ad74ff17 feat: Patentglossar — searchable DE/EN glossary with term suggestions 2026-04-14 20:11:00 +02:00
m
e1ea8e87ca feat: Link Hub — curated external links with suggest/feedback 2026-04-14 20:09:52 +02:00
m
f66a2ed906 feat: Link Hub — curated external links page with collaborative features
New /links page with 22 curated links across 5 categories:
- Gerichte & Ämter (UPC CMS, EPO, DPMA, BPatG, EUIPO)
- Recherche (Espacenet, DPMAregister, DEPATISnet, Google Patents, WIPO)
- UPC (Rules of Procedure, Fees, Practice Directions)
- Gesetze (PatG, EPÜ, UPCA, GKG, RVG, ZPO via dejure.org)
- HL Intern (placeholder links)

Features:
- Client-side category filter tabs
- "Link vorschlagen" button with modal form (POST /api/links/suggest)
- Per-card feedback icon with modal (POST /api/links/feedback)
- Pending suggestion count badge
- Full DE/EN i18n support
- Static link data served via GET /api/links (Go map)
- Supabase PostgREST integration for suggestions/feedback storage
- Sidebar nav entry with chain-link icon

Supabase migration in docs/migrations/001_link_suggestions.sql
(needs to be applied on ydb.youpc.org before collaborative features work).
2026-04-14 20:07:43 +02:00
m
0960235bb8 feat: searchable DE/EN patent glossary with term suggestions
- New /glossar page with 73 bilingual patent law terms across 5 categories
  (Litigation, Prosecution, UPC, EPA, General)
- Client-side instant search filtering both DE and EN columns
- Category filter pills for quick narrowing
- Suggest-a-term button opens modal form for new term submissions
- Per-term feedback icon for correction suggestions
- Suggestions stored in Supabase (glossar_suggestions table with RLS)
- Go API: GET /api/glossar (terms JSON), POST /api/glossar/suggest
- Full DE/EN i18n support, responsive layout, print-friendly
- Added to sidebar nav, landing page tools section, and build pipeline
2026-04-14 20:06:51 +02:00
m
a5fdaff909 docs: feature roadmap — 17 features across 4 phases 2026-04-14 19:55:37 +02:00
m
83cc20e7ba feat: patholo.de feature roadmap — 17 features across 4 phases
Comprehensive feature roadmap for patholo.de based on analysis of:
- Current patholo codebase (tools, auth, downloads, i18n)
- KanzlAI project (case management system — complementary, not competing)
- mWorkRepo (UPC knowledge base, templates, model documents, training)

4 phases prioritized by impact/effort:
- Phase 1: Link Hub, More Downloads, Gebührentabellen, Kostenrechner enhancements, Glossar
- Phase 2: Verfahrensleitfäden, Gerichtsverzeichnis, UPC Rechtsprechung, Checklisten
- Phase 3: Global Search, Vorlagenbibliothek, Schulungsbereich, Benachrichtigungen
- Phase 4: KI-Recherche, Fristenkalender, Collaborative Annotations, Mandantenkosten-Report

Key insight: patholo is knowledge platform + toolkit, not case management.
2026-04-14 19:55:10 +02:00
m
fd25998f70 feat: dedicated downloads page 2026-04-14 19:33:29 +02:00
m
cb0e61f0bf feat: dedicated downloads page with card grid layout
New /downloads route behind auth with Sidebar, i18n DE/EN,
and download card for HL Patents Style.dotm. Structured so
adding more files is a one-liner in the files array.
2026-04-14 19:32:07 +02:00
m
8419dec467 fix: add Hamburg, Paris, Milan to Standorte 2026-04-14 19:30:44 +02:00
m
d5aae0aabb feat: sidebar navigation — collapsible icon rail with hover expand and mobile overlay 2026-04-14 19:27:55 +02:00
m
0f1976b146 feat: replace header with sidebar navigation on authenticated pages
Sidebar layout with collapsible icon rail (64px) that expands to 240px
on hover (150ms delay) or pin (persisted in localStorage). Mobile
(<1024px) uses hamburger FAB with overlay. Active page highlighted.
Login page retains the original Header component.

New: Sidebar.tsx, sidebar.ts
Changed: index/kostenrechner/fristenrechner pages, global.css, i18n
2026-04-14 19:15:26 +02:00
m
4a208b7785 feat: file proxy — serve HL Patents Style.dotm from Gitea with SHA cache 2026-04-14 19:02:38 +02:00
m
77061b2708 feat: file proxy — serve HL Patents Style.dotm from Gitea with cache
Add GET /files/{filename} route (behind auth) that proxies files from
Gitea raw URLs with in-memory caching. Uses SHA-based cache invalidation:
checks Gitea commit API every 5 min, only re-downloads when file changes.

- internal/handlers/files.go: proxy handler with SHA-based cache
- POST /api/files/refresh: cache-bust endpoint
- GITEA_TOKEN env var for private repo access
- Download card on landing page with i18n DE/EN
2026-04-14 18:32:12 +02:00
m
9b868fedf1 feat: i18n DE/EN toggle + patHoLo branding + flexsiebels.de footer link
Merge knuth's i18n implementation with patHoLo branding rename
and flexsiebels.de footer credit.
2026-04-14 18:22:14 +02:00
m
5934b9eba7 feat: add flexsiebels.de link to footer 2026-04-14 18:21:42 +02:00
m
52c8cc3020 fix: rename branding to patHoLo (Patent + Hogan Lovells) 2026-04-14 18:21:25 +02:00
m
8b9644fdcb feat: implement i18n — DE/EN language toggle across all pages
Client-side i18n system with localStorage persistence:
- Shared i18n module (frontend/src/client/i18n.ts) with 120+ translation keys
- Language toggle buttons in header on all pages (including login)
- data-i18n attributes on all static translatable elements
- t() function for dynamically rendered content (calculator results, timeline)
- onLangChange callbacks re-render dynamic content on language switch
- Date formatting adapts locale (de-DE / en-GB) per language
- Replaces old dual-display pattern (card-en spans) with single-language switching
2026-04-14 18:21:21 +02:00
m
774f678f27 feat: Prozesskostenrechner + Fristenrechner — patent calculators for HL 2026-04-14 17:31:18 +02:00
m
d94f8e7e25 feat: implement Fristenrechner (patent deadline calculator)
Go deadline engine (internal/calc/):
- 9 proceeding types: UPC (INF/REV/PI/APP), DE (INF/NULL), EPA (OPP/APP/GRANT)
- ~50 deadline rules with durations, parties, rule references
- German federal holiday computation (Easter via Anonymous Gregorian)
- Weekend/holiday adjustment with transparency (original vs adjusted dates)
- 8 unit tests covering holidays, adjustment, and full deadline chains

Frontend (Bun/TSX):
- 3-step wizard: select proceeding → enter date → view timeline
- Visual timeline with party badges, rule references, adjustment warnings
- Print-friendly layout

API: POST /api/tools/fristenrechner (protected, JSON)
     GET /api/tools/proceeding-types (protected, JSON)
Route: GET /tools/fristenrechner (protected page)

Home page: Added "Werkzeuge" section with cards linking to both tools
2026-04-14 17:31:04 +02:00
m
bd621664cf feat: implement Prozesskostenrechner (patent litigation cost calculator)
Go calculation engine (internal/calc/):
- GKG/RVG step-based fee computation with 4 schedule versions (2005-2025)
- DE court instances: LG, OLG, BGH NZB/Rev, BPatG, BGH Nullity
- UPC fees: fixed + value-based with SME reduction (pre-2026 and 2026)
- EPA proceedings: Opposition and Appeal fixed fees
- Attorney + patent attorney fee breakdown with Erhöhung, MwSt
- 11 unit tests covering all calculation paths

Frontend (Bun/TSX):
- SSR page shell with two-column layout (inputs + sticky results)
- Streitwert slider + presets, VAT selector, instance cards with details
- Client JS: form state management, API calls, result rendering
- Print-friendly layout

API: POST /api/tools/kostenrechner (protected, JSON)
Route: GET /tools/kostenrechner (protected page)
Navigation: Added tool links to header
2026-04-14 17:25:38 +02:00
m
2919e1afc4 feat: design document for Prozesskostenrechner + Fristenrechner
Comprehensive design for two interactive tools:
- Prozesskostenrechner: DE (LG/OLG/BGH/BPatG), UPC, and EPA cost estimates
- Fristenrechner: Patent deadline calculator with holiday adjustment

Covers UI layout, data models, API contracts, calculation logic,
fee tables (GKG/RVG/PatKostG/UPC/EPA), deadline rules for all
proceeding types, and phased implementation plan.

Key differentiator: EPA proceedings coverage (not in KanzlAI).
2026-04-14 17:12:16 +02:00
m
3a157594c2 feat: rewrite frontend from Go templates to Bun + TSX 2026-04-14 16:51:11 +02:00
m
40a9c927fb feat: rewrite frontend from Go templates to Bun + TSX
Replace Go HTML template rendering with a Bun + TSX build-time static
site generator. Go backend becomes API-only for auth.

Frontend:
- Custom JSX-to-HTML-string factory (zero dependencies)
- TSX components for Header, Footer, index page, login page
- Client-side login.ts handles tab switching and fetch()-based auth
- Bun bundler compiles client JS, build.ts renders pages to dist/

Backend:
- Auth handlers return JSON (POST /api/login, POST /api/register)
- Login page served as static HTML from dist/
- Static assets served from /assets/ (public)
- Auth middleware unchanged (cookie check, redirect to /login)
- Removed template parsing and renderPage

Dockerfile:
- 3-stage build: Bun frontend -> Go backend -> alpine runtime
- Frontend dist copied to /app/dist in final image

Removed: templates/, static/css/ (replaced by frontend/)
2026-04-14 16:50:27 +02:00
m
b75d91fbd7 feat: Supabase password auth with @hoganlovells.com restriction + lime green branding 2026-04-14 16:36:43 +02:00
m
21bf56dc20 feat: add Supabase password auth with @hoganlovells.com restriction
Go server authenticates against Supabase GoTrue (youpc instance) using
email+password. Login page with login/register tabs, domain restricted
to @hoganlovells.com. Auth middleware protects all routes, refreshes
expired tokens via refresh_token cookie. Lime green branding.

- internal/auth: Supabase client (sign in, sign up, refresh, sign out),
  JWT expiry decode, auth middleware, cookie management
- internal/handlers: login/register/logout handlers, per-page template
  parsing to avoid content block collisions
- templates/login.html: tabbed login/register form
- 30-day HTTP-only session cookies with SameSite=Lax
- SUPABASE_URL and SUPABASE_ANON_KEY env vars in docker-compose
2026-04-14 16:34:17 +02:00
m
eaab0bc908 fix: use expose instead of ports for Traefik routing
Port 8080 already allocated on mlake host. Traefik routes via
docker network labels, no host port binding needed.
2026-04-14 16:11:25 +02:00
m
4e1d0cbb89 feat: Docker Compose app — Go server with landing page for patholo.de 2026-04-14 16:09:36 +02:00
m
d2a9164e36 fix: add missing cmd/server/main.go and fix .gitignore
The .gitignore pattern "server" was matching cmd/server/ directory,
preventing main.go from being tracked. Anchored binary patterns to
repo root with leading slash.
2026-04-14 16:04:30 +02:00
m
483afd8154 feat: Docker Compose app with Go server and landing page
Go web server (net/http, port 8080) serving HTML templates with a
professional landing page for patholo.de. Multi-stage Dockerfile
and docker-compose.yml ready for Dokploy deployment.

- cmd/server/main.go: HTTP server entry point
- internal/handlers: route registration and template rendering
- templates/: base layout + bilingual landing page (DE/EN)
- static/css/: clean, responsive CSS with HL navy branding
- Dockerfile: multi-stage build (golang:1.23-alpine -> alpine:3.21)
- docker-compose.yml: single web service on port 8080
2026-04-14 16:02:18 +02:00
m
05139a8ea2 feat: initial project setup — mai config, CLAUDE.md
patholo.de — patent knowledge sharing platform for HL colleagues.
Domain purchased, DNS configured, project registered.
2026-04-14 15:57:38 +02:00
mAi
c54fcea3f3 Initial commit 2026-04-14 13:56:06 +00:00