diff --git a/README.md b/README.md index 4423548..f9bbd52 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ **Find every SNCF train where a free MAX JEUNE / MAX SENIOR (ex-TGVmax) seat is actually reservable — instead of checking SNCF Connect one route at a time.** -### ▶ [**Try it live — davd-gzl.github.io/MAX-Finder**](https://davd-gzl.github.io/MAX-Finder/) — no signup, runs in your browser +### ▶ [**Try it live — offware-apps.github.io/MAX-Finder**](https://offware-apps.github.io/MAX-Finder/) — no signup, runs in your browser With a MAX JEUNE or MAX SENIOR pass, high-speed trains are free — but only when a MAX seat is still open on that train. SNCF Connect makes you check one route at a time; MAX Finder shows every station you can reach for free from a single search, using SNCF's open availability data. @@ -142,4 +142,4 @@ Machine-readable and serverless — [`llms.txt`](public/llms.txt) and [`api.json ## Credits -- **[@AhmedFr](https://github.com/AhmedFr)** — designed the **map-first view** (List/Map toggle, full-bleed map with a floating results panel) and the **connection-count pin tinting**, originally in [#2](https://github.com/davd-gzl/MAX-Finder/pull/2). That work was salvaged onto the current codebase in [#21](https://github.com/davd-gzl/MAX-Finder/pull/21) and refined in [#26](https://github.com/davd-gzl/MAX-Finder/pull/26). +- **[@AhmedFr](https://github.com/AhmedFr)** — designed the **map-first view** (List/Map toggle, full-bleed map with a floating results panel) and the **connection-count pin tinting**, originally in [#2](https://github.com/offware-apps/MAX-Finder/pull/2). That work was salvaged onto the current codebase in [#21](https://github.com/offware-apps/MAX-Finder/pull/21) and refined in [#26](https://github.com/offware-apps/MAX-Finder/pull/26). diff --git a/docs/FDROID.md b/docs/FDROID.md index 07ed998..edbfd03 100644 --- a/docs/FDROID.md +++ b/docs/FDROID.md @@ -78,13 +78,13 @@ Categories: - Travel License: AGPL-3.0-only AuthorName: MAX Finder contributors -SourceCode: https://github.com/davd-gzl/MAX-Finder -IssueTracker: https://github.com/davd-gzl/MAX-Finder/issues +SourceCode: https://github.com/offware-apps/MAX-Finder +IssueTracker: https://github.com/offware-apps/MAX-Finder/issues AutoName: MAX Finder RepoType: git -Repo: https://github.com/davd-gzl/MAX-Finder.git +Repo: https://github.com/offware-apps/MAX-Finder.git Builds: - versionName: 0.1.0 diff --git a/index.html b/index.html index 2a89b1b..716acb8 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ name="description" content="Trouvez les trains où une place TGV Max (MAX JEUNE ou MAX SENIOR) est réservable : trajet précis, carte des destinations, calendrier 30 jours, allers-retours. Open data SNCF, gratuit, open source, non affilié à la SNCF." /> - + @@ -20,8 +20,8 @@ property="og:description" content="Toutes les places MAX JEUNE / MAX SENIOR ouvertes à la réservation, mises à jour chaque jour depuis l'open data SNCF. Gratuit, sans compte." /> - - + + @@ -31,7 +31,7 @@ name="twitter:description" content="Toutes les places MAX JEUNE / MAX SENIOR ouvertes à la réservation, mises à jour chaque jour depuis l'open data SNCF." /> - + @@ -45,8 +45,8 @@ "@graph": [ { "@type": "WebSite", - "@id": "https://davd-gzl.github.io/MAX-Finder/#website", - "url": "https://davd-gzl.github.io/MAX-Finder/", + "@id": "https://offware-apps.github.io/MAX-Finder/#website", + "url": "https://offware-apps.github.io/MAX-Finder/", "name": "MAX Finder", "alternateName": "MAX Finder TGVmax", "description": "Recherche de places TGV Max (MAX JEUNE / MAX SENIOR) ouvertes à la réservation, à partir de l'open data SNCF.", @@ -54,21 +54,21 @@ }, { "@type": "WebApplication", - "@id": "https://davd-gzl.github.io/MAX-Finder/#app", - "isPartOf": { "@id": "https://davd-gzl.github.io/MAX-Finder/#website" }, + "@id": "https://offware-apps.github.io/MAX-Finder/#app", + "isPartOf": { "@id": "https://offware-apps.github.io/MAX-Finder/#website" }, "name": "MAX Finder", - "url": "https://davd-gzl.github.io/MAX-Finder/", + "url": "https://offware-apps.github.io/MAX-Finder/", "applicationCategory": "TravelApplication", "operatingSystem": "Any", "browserRequirements": "Requires JavaScript", "isAccessibleForFree": true, "offers": { "@type": "Offer", "price": "0", "priceCurrency": "EUR" }, - "license": "https://github.com/davd-gzl/MAX-Finder/blob/main/LICENSE", - "sameAs": ["https://github.com/davd-gzl/MAX-Finder"], + "license": "https://github.com/offware-apps/MAX-Finder/blob/main/LICENSE", + "sameAs": ["https://github.com/offware-apps/MAX-Finder"], "author": { "@type": "Organization", "name": "MAX Finder contributors", - "url": "https://github.com/davd-gzl/MAX-Finder" + "url": "https://github.com/offware-apps/MAX-Finder" }, "description": "Application gratuite et open source qui affiche les trains avec une place MAX JEUNE ou MAX SENIOR (ex-TGVmax) ouverte à la réservation. Projet indépendant, non affilié à la SNCF ; la réservation se fait sur SNCF Connect.", "featureList": [ @@ -79,7 +79,7 @@ "Itinéraires multi-villes (tour)", "Carte des gares, 11 langues, PWA hors-ligne" ], - "screenshot": "https://davd-gzl.github.io/MAX-Finder/icons/og.png" + "screenshot": "https://offware-apps.github.io/MAX-Finder/icons/og.png" } ] } @@ -90,7 +90,7 @@ "@type": "Dataset", "name": "Places MAX JEUNE / MAX SENIOR ouvertes à la réservation — snapshot quotidien", "description": "Snapshot quotidien des places TGV Max (MAX JEUNE / MAX SENIOR) ouvertes à la réservation sur environ 30 jours glissants : date, gare d'origine, gare de destination, heures de départ et d'arrivée, numéro de train, disponibilité. Environ 32 000 enregistrements dérivés de l'open data SNCF (jeu de données tgvmax).", - "url": "https://davd-gzl.github.io/MAX-Finder/", + "url": "https://offware-apps.github.io/MAX-Finder/", "isAccessibleForFree": true, "license": "https://www.etalab.gouv.fr/licence-ouverte-open-licence", "creator": { "@type": "Organization", "name": "SNCF" }, @@ -100,17 +100,17 @@ "distribution": [ { "@type": "DataDownload", - "contentUrl": "https://davd-gzl.github.io/MAX-Finder/data/tgvmax.json", + "contentUrl": "https://offware-apps.github.io/MAX-Finder/data/tgvmax.json", "encodingFormat": "application/json" }, { "@type": "DataDownload", - "contentUrl": "https://davd-gzl.github.io/MAX-Finder/data/stations.json", + "contentUrl": "https://offware-apps.github.io/MAX-Finder/data/stations.json", "encodingFormat": "application/json" }, { "@type": "DataDownload", - "contentUrl": "https://davd-gzl.github.io/MAX-Finder/data/meta.json", + "contentUrl": "https://offware-apps.github.io/MAX-Finder/data/meta.json", "encodingFormat": "application/json" } ] diff --git a/public/api.json b/public/api.json index d192c5f..518604c 100644 --- a/public/api.json +++ b/public/api.json @@ -1,7 +1,7 @@ { "name": "MAX Finder", "description": "Free MAX JEUNE / MAX SENIOR (ex-TGVmax) seat availability from SNCF open data. Static, serverless, no accounts.", - "homepage": "https://davd-gzl.github.io/MAX-Finder/", + "homepage": "https://offware-apps.github.io/MAX-Finder/", "license": "AGPL-3.0-only", "dataLicense": "Licence Ouverte / Open Licence", "notAffiliatedWith": "SNCF", @@ -34,7 +34,7 @@ "axe": "string (optional line/axis)" }, "search": { - "base": "https://davd-gzl.github.io/MAX-Finder/", + "base": "https://offware-apps.github.io/MAX-Finder/", "method": "GET (query string deep-link)", "params": { "mode": [ @@ -82,10 +82,10 @@ } }, "docs": { - "faq": "https://davd-gzl.github.io/MAX-Finder/faq/", - "howItWorks": "https://davd-gzl.github.io/MAX-Finder/docs/how-it-works.html", - "algorithms": "https://davd-gzl.github.io/MAX-Finder/docs/algorithms.html", - "llms": "https://davd-gzl.github.io/MAX-Finder/llms.txt", - "llmsFull": "https://davd-gzl.github.io/MAX-Finder/llms-full.txt" + "faq": "https://offware-apps.github.io/MAX-Finder/faq/", + "howItWorks": "https://offware-apps.github.io/MAX-Finder/docs/how-it-works.html", + "algorithms": "https://offware-apps.github.io/MAX-Finder/docs/algorithms.html", + "llms": "https://offware-apps.github.io/MAX-Finder/llms.txt", + "llmsFull": "https://offware-apps.github.io/MAX-Finder/llms-full.txt" } } diff --git a/public/llms.txt b/public/llms.txt index 9cc3ba3..cf8fd4e 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -9,10 +9,10 @@ static JSON served over HTTPS; there is no rate limit beyond normal hosting. ## Machine-readable data -- Availability snapshot (JSON array): https://davd-gzl.github.io/MAX-Finder/data/tgvmax.json -- Snapshot metadata: https://davd-gzl.github.io/MAX-Finder/data/meta.json -- Station registry (coordinates, region, aliases): https://davd-gzl.github.io/MAX-Finder/data/stations.json -- API manifest (schema + query params, machine-readable): https://davd-gzl.github.io/MAX-Finder/api.json +- Availability snapshot (JSON array): https://offware-apps.github.io/MAX-Finder/data/tgvmax.json +- Snapshot metadata: https://offware-apps.github.io/MAX-Finder/data/meta.json +- Station registry (coordinates, region, aliases): https://offware-apps.github.io/MAX-Finder/data/stations.json +- API manifest (schema + query params, machine-readable): https://offware-apps.github.io/MAX-Finder/api.json - Upstream source (refreshed ~once a day): SNCF Open Data "tgvmax" (Licence Ouverte) ### Record shape (tgvmax.json) @@ -37,7 +37,7 @@ Stations use SNCF labels, e.g. `"PARIS (intramuros)"`, `"LYON (intramuros)"`, ## Search / deep-link API (build a shareable URL) -Base: `https://davd-gzl.github.io/MAX-Finder/` +Base: `https://offware-apps.github.io/MAX-Finder/` Query params: - `mode`: `from` | `to` | `od` | `tour` | `best` - `from`: origin station id ; `to`: destination station id (in `mode=tour`, the optional finish city; set `to`=`from` for a loop) @@ -65,24 +65,24 @@ Query params: Examples: - Where can I go from Paris on 2026-06-25: - `https://davd-gzl.github.io/MAX-Finder/?mode=from&from=PARIS%20(intramuros)&date=2026-06-25` + `https://offware-apps.github.io/MAX-Finder/?mode=from&from=PARIS%20(intramuros)&date=2026-06-25` - Paris → Toulouse incl. up to one change: - `https://davd-gzl.github.io/MAX-Finder/?mode=od&from=PARIS%20(intramuros)&to=TOULOUSE%20MATABIAU&date=2026-06-25&conn=1` + `https://offware-apps.github.io/MAX-Finder/?mode=od&from=PARIS%20(intramuros)&to=TOULOUSE%20MATABIAU&date=2026-06-25&conn=1` - Paris → Lyon round trip, back two days later: - `https://davd-gzl.github.io/MAX-Finder/?mode=od&from=PARIS%20(intramuros)&to=LYON%20(intramuros)&date=2026-06-25&rdate=2026-06-27` + `https://offware-apps.github.io/MAX-Finder/?mode=od&from=PARIS%20(intramuros)&to=LYON%20(intramuros)&date=2026-06-25&rdate=2026-06-27` - Weekend getaways from Paris (1 night): - `https://davd-gzl.github.io/MAX-Finder/?mode=from&from=PARIS%20(intramuros)&date=2026-06-25&rt=1&nights=1` + `https://offware-apps.github.io/MAX-Finder/?mode=from&from=PARIS%20(intramuros)&date=2026-06-25&rt=1&nights=1` - A Bretagne tour from Rennes, 1–2 days per city, no hop over 300 km: - `https://davd-gzl.github.io/MAX-Finder/?mode=tour&from=RENNES&rg=Bretagne&dmin=1&dmax=2&legkm=300&date=2026-06-25` + `https://offware-apps.github.io/MAX-Finder/?mode=tour&from=RENNES&rg=Bretagne&dmin=1&dmax=2&legkm=300&date=2026-06-25` - An explicit multi-city itinerary (Paris → Lyon → Toulon): - `https://davd-gzl.github.io/MAX-Finder/?mode=tour&legs=PARIS%20(intramuros)>LYON%20(intramuros)@2026-06-25~LYON%20(intramuros)>TOULON@2026-06-27` + `https://offware-apps.github.io/MAX-Finder/?mode=tour&legs=PARIS%20(intramuros)>LYON%20(intramuros)@2026-06-25~LYON%20(intramuros)>TOULON@2026-06-27` ## Docs (HTML, crawlable) -- FAQ (French): https://davd-gzl.github.io/MAX-Finder/faq/ -- How it works: https://davd-gzl.github.io/MAX-Finder/docs/how-it-works.html -- Algorithms: https://davd-gzl.github.io/MAX-Finder/docs/algorithms.html -- Full context in one fetch (this file + docs + FAQ): https://davd-gzl.github.io/MAX-Finder/llms-full.txt +- FAQ (French): https://offware-apps.github.io/MAX-Finder/faq/ +- How it works: https://offware-apps.github.io/MAX-Finder/docs/how-it-works.html +- Algorithms: https://offware-apps.github.io/MAX-Finder/docs/algorithms.html +- Full context in one fetch (this file + docs + FAQ): https://offware-apps.github.io/MAX-Finder/llms-full.txt ## Disclaimer diff --git a/src/config.ts b/src/config.ts index d11caf0..cfd5252 100644 --- a/src/config.ts +++ b/src/config.ts @@ -54,10 +54,10 @@ export const META_URL = `${BASE}data/meta.json`; export const SNCF_CONNECT_URL = "https://www.sncf-connect.com/"; -export const SITE_URL = "https://davd-gzl.github.io/MAX-Finder/"; +export const SITE_URL = "https://offware-apps.github.io/MAX-Finder/"; /** Project repository (used for the header star link and the feedback button). */ -export const GITHUB_URL = "https://github.com/davd-gzl/MAX-Finder"; +export const GITHUB_URL = "https://github.com/offware-apps/MAX-Finder"; export const GITHUB_ISSUES_URL = `${GITHUB_URL}/issues/new`; /** Official SNCF pages describing the MAX JEUNE / MAX SENIOR subscriptions. */