-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnext.config.js
338 lines (335 loc) · 17.9 KB
/
next.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { withSentryConfig } = require("@sentry/nextjs");
const nextConfig = {
experimental: {
outputFileTracingExcludes: {
"*": ["./content/**", "./public/images/**"],
},
},
async redirects() {
return redirects.split("\n").map((redirect) => {
const [source, destination] = redirect.split(" ");
return { source, destination, permanent: true };
});
},
};
module.exports = process.env.SENTRY_PROJECT
? withSentryConfig(nextConfig, {
silent: true,
errorHandler: (err) => {
console.warn(err);
},
})
: nextConfig;
// Redirects from old Drupal website to Next.js based website.
const redirects = `/node/6 /en/imprint
/node/180 /datenschutz
/node/182 /en/privacy
/node/7 /en/career
/node/212 /karriere
/node/213 /en/about
/karriere/privacy-policy /en/privacy
/solutions /solution
/sbahnm-live /solution/livemap
/mapset /solution/mapset
/moco /solution/disruption-information
/sts-app /solution/webkarten-und-bahnhofplaene
/lösungen/karten-des-öv /solution/webkarten-und-bahnhofplaene
/lösungen/bahnhofpläne /solution/webkarten-und-bahnhofplaene
/l%C3%B6sungen/bahnhofpl%C3%A4ne /solution/webkarten-und-bahnhofplaene
/geoportal /solution/webkarten-und-bahnhofplaene
/altlast4web /solution/umwelt-software
/about/team /about
/blog/fallstudien /blog
/blog/konferenzen /blog
/blog/technologien /blog
/node/70 /blog/verstarkung-mit-patrick-brosi
/blog/patrickbrosi /blog/verstarkung-mit-patrick-brosi
/node/66 /blog/cartaro-at-the-google-summer-of-code
/blog/146-cartaro-google-summer-code /blog/cartaro-at-the-google-summer-of-code
/node/69 /blog/geobeer-7-in-olten
/blog/147-geobeer-7-olten /blog/geobeer-7-in-olten
/node/72 /blog/prezi
/blog/135-prezi /blog/prezi
/node/73 /blog/3d-loipenkarte
/blog/119-3d-loipenkarte /blog/3d-loipenkarte
/node/74 /blog/wir-sponsern-deine-teilnahme-an-der-fossgis-2013-in-rapperswil
/belohnung_fossgis2013 /blog/wir-sponsern-deine-teilnahme-an-der-fossgis-2013-in-rapperswil
/node/75 /blog/fossgis-2013
/blog/123-fossgis-2013 /blog/fossgis-2013
/node/79 /blog/zehn-jahre-geops
/blog/102-zehn-jahre-geops /blog/zehn-jahre-geops
/node/80 /blog/geops-prasentiert-auf-dem-geosummit
/blog/100-geops-präsentiert-auf-dem-geosummit /blog/geops-prasentiert-auf-dem-geosummit
/node/81 /blog/agit-2012
/blog/101-agit-2012 /blog/agit-2012
/node/82 /blog/swisstopo-revisionsdienst-mobile
/blog/99-swisstopo-revisionsdienst-mobile /blog/swisstopo-revisionsdienst-mobile
/node/84 /blog/zehn-jahre-geops
/blog/97-zehn-jahre-geops /blog/zehn-jahre-geops
/node/85 /blog/segmentierung-von-linien-in-postgis
/blog/96-segmentierung-von-linien-postgis /blog/segmentierung-von-linien-in-postgis
/node/87 /blog/kontextsensitive-hilfe
/blog/42-kontextsensitive-hilfe /blog/kontextsensitive-hilfe
/node/88 /blog/fallbacks-in-mediawiki
/blog/41-fallbacks-mediawiki /blog/fallbacks-in-mediawiki
/node/89 /blog/datenbank-adapter-fur-ubersetzungen-mit-zend-framework
/blog/37-datenbank-adapter-für-übersetzungen-mit-zend-framework /blog/datenbank-adapter-fur-ubersetzungen-mit-zend-framework
/node/90 /blog/unbekannte-walder-in-google-maps
/blog/40-unbekannte-wälder-google-maps /blog/unbekannte-walder-in-google-maps
/node/68 /blog/geosummit-4-5-juni
/blog/150-geosummit-4-5-juni /blog/geosummit-4-5-juni
/node/76 /blog/aqua-and-gas-berichtet-uber-altlast4web
/blog/114-aqua-gas-berichtet-über-altlast4web /blog/aqua-and-gas-berichtet-uber-altlast4web
/node/83 /blog/altlast4web-beim-geosummit
/blog/94-altlast4web-beim-geosummit /blog/altlast4web-beim-geosummit
/node/67 /blog/kataster-offentlich-rechtlicher-beschrankungen-oreb
/blog/oereb /blog/kataster-offentlich-rechtlicher-beschrankungen-oreb
/node/120 /blog/batyr-on-demand-synchronization-of-vector-data-to-a-postgis-database
/blog/143-batyr-demand-synchronization-vector-data-postgis-database /blog/batyr-on-demand-synchronization-of-vector-data-to-a-postgis-database
/node/91 /blog/altlast4web-geodaten-geschaftsprozesse
/blog/65-altlast4web-geodaten-geschäftsprozesse /blog/altlast4web-geodaten-geschaftsprozesse
/node/93 /blog/intergeo-2011
/blog/67-intergeo-2011 /blog/intergeo-2011
/node/78 /blog/zehn-jahre-geops
/blog/98-zehn-jahre-geops /blog/zehn-jahre-geops
/node/179 /blog/fehlerkorrekturen-in-travic
/blog/fehlerkorrekturen-travic /blog/fehlerkorrekturen-in-travic
/node/94 /blog/google-initiiert-ein-wiki-fur-geodaten
/blog/19-google-initiiert-ein-wiki-für-geodaten /blog/google-initiiert-ein-wiki-fur-geodaten
/node/95 /blog/umzug-der-webserver
/blog/23-umzug-der-webserver /blog/umzug-der-webserver
/node/77 /blog/open-data-camp-zurich
/blog/95-open-data-camp-zürich /blog/open-data-camp-zurich
/node/118 /blog/bahnhofkarte-der-sbb
/blog/139-sbb-stations-map /blog/bahnhofkarte-der-sbb
/node/96 /blog/intergeo-in-karlsruhe
/blog/27-intergeo-karlsruhe /blog/intergeo-in-karlsruhe
/node/97 /blog/erweiterungen-fur-postgresql-als-opensource
/blog/26-erweiterungen-für-postgresql-als-opensource /blog/erweiterungen-fur-postgresql-als-opensource
/node/98 /blog/agit-beitrag-2011
/blog/54-agit-beitrag-2011 /blog/agit-beitrag-2011
/node/99 /blog/sponsoring-der-foss4g-2010
/blog/32-sponsoring-der-foss4g-2010 /blog/sponsoring-der-foss4g-2010
/node/100 /blog/wildkatzenwegeplan-online
/blog/21-wildkatzenwegeplan-online /blog/wildkatzenwegeplan-online
/node/101 /blog/fossgis-2010
/blog/28-fossgis-2010 /blog/fossgis-2010
/node/102 /blog/mitglied-im-freiburger-medienforum
/blog/22-mitglied-im-freiburger-medienforum /blog/mitglied-im-freiburger-medienforum
/node/119 /en/blog/bahnhofkarte-der-sbb
/blog/139-sbb-stations-map /en/blog/bahnhofkarte-der-sbb
/node/103 /blog/foss4g-2010-in-barcelona
/blog/30-foss4g-2010-barcelona /blog/foss4g-2010-in-barcelona
/node/104 /blog/internationale-kostenfreie-servicenummer
/blog/57-internationale-kostenfreie-servicenummer /blog/internationale-kostenfreie-servicenummer
/node/105 /blog/fossgis-2009
/blog/24-fossgis-2009 /blog/fossgis-2009
/node/106 /blog/geschaftskontrolle-sogeko-realisiert
/blog/33-geschäftskontrolle-sogeko-realisiert /blog/geschaftskontrolle-sogeko-realisiert
/node/107 /blog/sponsoring-der-fossgis-2008
/blog/18-sponsoring-der-fossgis-2008 /blog/sponsoring-der-fossgis-2008
/node/108 /blog/mapmattersorg-auf-der-agit
/blog/31-mapmattersorg-auf-der-agit /blog/mapmattersorg-auf-der-agit
/node/109 /blog/agit-beitrag-zu-mapmattersorg
/blog/34-agit-beitrag-zu-mapmattersorg /blog/agit-beitrag-zu-mapmattersorg
/node/121 /blog/geosharing-konferenz-in-bern
/blog/136-geosharing-konferenz-bern /blog/geosharing-konferenz-in-bern
/node/110 /blog/stellenangebot
/blog/35-stellenangebot /blog/stellenangebot
/node/122 /en/blog/conference-on-geosharing-in-bern
/blog/137-conference-geosharing-bern /en/blog/conference-on-geosharing-in-bern
/node/111 /blog/mapmattersorg-online
/blog/29-mapmattersorg-online /blog/mapmattersorg-online
/node/112 /blog/fossgis-2011
/blog/36-fossgis-2011 /blog/fossgis-2011
/node/113 /blog/demo-version-von-vegas-veroffentlicht
/blog/20-demo-version-von-vegas-veröffentlicht /blog/demo-version-von-vegas-veroffentlicht
/node/114 /blog/druckausgabe-von-berichten-mit-kartendaten
/blog/50-druckausgabe-von-berichten-mit-kartendaten /blog/druckausgabe-von-berichten-mit-kartendaten
/node/115 /blog/geodaten-im-browser-bearbeiten
/blog/53-geodaten-im-browser-bearbeiten /blog/geodaten-im-browser-bearbeiten
/node/124 /blog/geoserver-wfs-performance-vergleich
/blog/126-geoserver-wfs-performance-vergleich /blog/geoserver-wfs-performance-vergleich
/node/126 /blog/web-und-gis-entwickler/innen-gesucht
/blog/129-web-und-gis-entwicklerinnen-gesucht /blog/web-und-gis-entwickler/innen-gesucht
/node/127 /en/blog/hiring-web-and-gis-developers
/blog/128-hiring-web-and-gis-developers /en/blog/hiring-web-and-gis-developers
/node/128 /blog/cartaro-auf-der-osgeo-live-dvd
/blog/125-cartaro-auf-der-osgeo-live-dvd /blog/cartaro-auf-der-osgeo-live-dvd
/node/134 /blog/wfs-t-und-transformationen-in-openlayers-editor
/blog/113-wfs-t-und-transformationen-openlayers-editor /blog/wfs-t-und-transformationen-in-openlayers-editor
/node/136 /blog/fossgis-2012
/blog/85-fossgis-2012 /blog/fossgis-2012
/node/135 /blog/cad-like-feature-construction-with-the-openlayers-editor
/blog/104-cad-feature-construction-openlayers-editor /blog/cad-like-feature-construction-with-the-openlayers-editor
/node/125 /en/blog/geoserver-wfs-performance-comparison
/blog/130-geoserver-wfs-performance-comparison /en/blog/geoserver-wfs-performance-comparison
/node/123 /blog/cartaro-beta5
/blog/132-cartaro-beta5 /blog/cartaro-beta5
/node/132 /blog/cartaro-beta-4-released
/blog/121-cartaro-beta-4-released /blog/cartaro-beta-4-released
/node/92 /blog/altlast4web-beim-bundesamt-fur-verkehr
/blog/66-altlast4web-beim-bundesamt-für-verkehr /blog/altlast4web-beim-bundesamt-fur-verkehr
/node/137 /blog/ole-und-mapfish-zum-bearbeiten-von-geodaten
/blog/80-ole-und-mapfish-zum-bearbeiten-von-geodaten /blog/ole-und-mapfish-zum-bearbeiten-von-geodaten
/node/139 /blog/jobs
/blog/87-jobs /blog/jobs
/node/140 /en/blog/jobs
/blog/88-jobs /en/blog/jobs
/node/141 /blog/social-networking-funktionen-auf-mapmattersorg
/blog/74-social-networking-funktionen-auf-mapmattersorg /blog/social-networking-funktionen-auf-mapmattersorg
/node/209 /blog/olivier-terral
/node/164 /en/blog/swiss-transit-schedule-data-available-as-gtfs
/gtfsfeed /en/blog/swiss-transit-schedule-data-available-as-gtfs
/node/116 /blog/weltweiter-ov-tracker
/blog/worldwide-travic /blog/weltweiter-ov-tracker
/node/143 /blog/geops-publiziert-openlayers-editor
/blog/72-geops-publiziert-openlayers-editor /blog/geops-publiziert-openlayers-editor
/node/138 /en/blog/using-ole-for-feature-editing-in-mapfish
/blog/83-using-ole-feature-editing-mapfish /en/blog/using-ole-for-feature-editing-in-mapfish
/node/144 /en/blog/openlayers-editor-released
/blog/84-openlayers-editor-released /en/blog/openlayers-editor-released
/node/129 /en/blog/cartaro-on-osgeo-live-dvd
/blog/124-cartaro-osgeo-live-dvd /en/blog/cartaro-on-osgeo-live-dvd
/node/165 /blog/schweizer-fahrplan-im-gtfs-format-verfugbar
/gtfsfeed /blog/schweizer-fahrplan-im-gtfs-format-verfugbar
/node/142 /en/blog/social-networking-functions-on-mapmattersorg
/blog/82-social-networking-functions-mapmattersorg /en/blog/social-networking-functions-on-mapmattersorg
/node/117 /en/blog/worldwide-transit-tracker
/blog/worldwide-travic /en/blog/worldwide-transit-tracker
/node/171 /en/blog/mapping-public-transit-networks
/node/169 /blog/visualizing-a-train-network-with-geoserver-rendering-transformations
/blog/visualizing-train-network-geoserver-rendering-transformations /blog/visualizing-a-train-network-with-geoserver-rendering-transformations
/node/158 /blog/programm-beim-geosummit
/node/176 /blog/klare-kommunikation-im-storfall
/blog/moco /blog/klare-kommunikation-im-storfall
/node/130 /blog/zeitreise-der-kartographie
/blog/120-zeitreise-der-kartographie /blog/zeitreise-der-kartographie
/node/131 /en/blog/travel-in-cartographic-time
/blog/122-travel-cartographic-time /en/blog/travel-in-cartographic-time
/node/170 /blog/mapping-von-netzen-des-offentlichen-verkehrs
/blog/mapping-von-netzen-des-öffentlichen-verkehrs /blog/mapping-von-netzen-des-offentlichen-verkehrs
/blog/mapping-von-netzen-des-%C3%B6ffentlichen-verkehrs /blog/mapping-von-netzen-des-offentlichen-verkehrs
/node/189 /blog/bike-crash-kurs
/node/184 /blog/zuri-hb-und-zuri-west
/blog/züri-hb-und-züri-west /blog/zuri-hb-und-zuri-west
/node/198 /blog/geopsch-von-dns-hijacking-vorfall-bei-gandi-betroffen
/node/174 /blog/der-blogger-patrick-brosi-als-autor
/der-blogger-von-patrick-brosi /blog/der-blogger-patrick-brosi-als-autor
/node/216 /blog/openlayers-editor
/node/191 /en/blog/medecins-sans-frontieres
/blog/médecins-sans-frontières /en/blog/medecins-sans-frontieres
/node/197 /blog/barrierefrei-und-karten-geht-das
/node/201 /en/blog/geops-at-the-it-trans-2018
/blog/geops-it-trans-2018 /en/blog/geops-at-the-it-trans-2018
/node/215 /blog/zuge-in-echtzeit-auf-karten-malen
/blog/zuege-echtzeit /blog/zuge-in-echtzeit-auf-karten-malen
/node/226 /blog/geops-auf-der-it-trans
/node/235 /blog/scrum-agilitat-bei-geops
/blog/scrum-agilität-bei-geops /blog/scrum-agilitat-bei-geops
/node/200 /blog/geops-auf-der-it-trans-2018
/node/177 /blog/test-unseres-ov-routings
/blog/routing-zvv /blog/test-unseres-ov-routings
/node/172 /blog/automatisierte-erstellung-von-fahrplanreferenzierten-ov-netzen
/blog/automatisierte-erstellung-von-fahrplanreferenzierten-öv-netzen /blog/automatisierte-erstellung-von-fahrplanreferenzierten-ov-netzen
/node/133 /blog/beta-of-cartaro-released
/blog/117-beta-cartaro-released /blog/beta-of-cartaro-released
/node/86 /blog/merry-xmaps-and-a-happy-new-year-2012
/blog/81-merry-xmaps-and-happy-new-year /blog/merry-xmaps-and-a-happy-new-year-2012
/node/145 /blog/geodaten-und-drupal-7
/blog/58-geodaten-und-drupal-7 /blog/geodaten-und-drupal-7
/node/146 /en/blog/spatial-data-and-drupal-7
/blog/64-spatial-data-and-drupal-7 /en/blog/spatial-data-and-drupal-7
/node/186 /blog/boulder-for-coder
/blog/boulder4coder /blog/boulder-for-coder
/node/205 /blog/s-bahn-munchen-deprecated
/sbahn-live_blog /blog/s-bahn-munchen-deprecated
/node/204 /blog/betriebsausflug-nach-basel
/node/220 /blog/mitarbeiter-workshop-2019
/node/211 /blog/geops-auf-dem-community-summercamp-der-db-mindbox
/node/221 /blog/arzte-ohne-grenzen-2019
/blog/ärzte-ohne-grenzen-2019 /blog/arzte-ohne-grenzen-2019
/node/190 /blog/arzte-ohne-grenzen
/blog/ärzte-ohne-grenzen /blog/arzte-ohne-grenzen
/node/210 /blog/fortbewegung-in-virtuellen-welten
/blog/fortbewegung-virtuellen-welten /blog/fortbewegung-in-virtuellen-welten
/node/223 /blog/dr-alexander-held
/node/222 /blog/daniel-marsh-hunn
/node/217 /blog/modellkonforme-datenprufung-mit-dem-ilivalidator
/blog/ilivalidator /blog/modellkonforme-datenprufung-mit-dem-ilivalidator
/node/224 /blog/frohe-weihnachten
/node/203 /blog/susanne-moritz
/blog/susanne-moritz_ /blog/susanne-moritz
/node/225 /blog/eu-projekt-greencycle
/node/247 /blog/altlast4web-go-live-in-luzern
/blog/altlast4web-go-live-luzern /blog/altlast4web-go-live-in-luzern
/node/231 /blog/angebotsinformationen-im-iabp
/node/230 /blog/angebotsinformationen-im-iabp
/blog/angebotsinformationen-im-iabp-0 /blog/angebotsinformationen-im-iabp
/node/71 /blog/geops-ag-in-der-schweiz-gegrundet
/blog/geops-ag-switzerland /blog/geops-ag-in-der-schweiz-gegrundet
/node/232 /blog/elias-englen
/node/234 /blog/betriebsausflug-berggeheimnis
/node/237 /blog/halbjahresworkshop-2020
/node/233 /blog/scrum
/node/240 /blog/testen-datei-export-mit-cypress-in-ci
/blog/testing-file-exports-cypress-ci /blog/testen-datei-export-mit-cypress-in-ci
/node/244 /blog/interpolation-von-hohenprofilen
/blog/interpolation-von-hoehenprofilen /blog/interpolation-von-hohenprofilen
/node/236 /blog/praktikum-bei-geops-ozkan-yanikbas
/blog/praktikum-bei-geops-özkan-yanikbas /blog/praktikum-bei-geops-ozkan-yanikbas
/node/239 /blog/tree-app-zukunft-des-waldes-im-klimawandel
/node/246 /blog/geops-beim-mobidata-bw-hackathon
/node/245 /blog/werkzeuge-fur-schonere-python-projekte
/blog/werkzeuge-für-schönere-python-projekte /blog/werkzeuge-fur-schonere-python-projekte
/node/243 /blog/neue-funktionen-in-mapset
/blog/neue-funktionen-mapset /blog/neue-funktionen-in-mapset
/blog/ärzte-ohne-grenzen-2020 /blog/aerzte-ohne-grenzen-2020
/iabp /solution/webkarten-und-bahnhofplaene
/technologien/vegas /solution
/fallstudien/altlast4web /solution/umwelt-software
/%C3%BCber-uns/kontakt /about
/imprint /impressum
/career /karriere
/career/fullstack-developer /karriere/fullstack-entwickler
/blog/travel-in-cartographic-time /blog/zeitreise-der-kartographie
/en/blog/geops-publiziert-openlayers-editor /en/blog/openlayers-editor-released
/en/blog/mapping-von-netzen-des-offentlichen-verkehrs /en/blog/mapping-public-transit-networks
/terms /bedingungen
/blog/worldwide-transit-tracker /blog/weltweiter-ov-tracker
/en/karriere/fullstack-entwickler /en/career/fullstack-developer
/blog/new-tariff-association-card-of-switzerland /blog/neue-tarifverbundkarte-der-schweiz
/en/blog/schweizer-fahrplan-im-gtfs-format-verfugbar /en/blog/swiss-transit-schedule-data-available-as-gtfs
/en/solution/netzplaene /en/solution/network-plans
/en/blog/neue-tarifverbundkarte-der-schweiz /en/blog/new-tariff-association-map-of-switzerland
/en/blog/weltweiter-ov-tracker /en/blog/worldwide-transit-tracker
/en/blog/ole-und-mapfish-zum-bearbeiten-von-geodaten /en/blog/using-ole-for-feature-editing-in-mapfish
/en/blog/geoserver-wfs-performance-vergleich /en/blog/geoserver-wfs-performance-comparison
/solution/network-plans /solution/netzplaene
/en/impressum /en/imprint
/blog/cors-in-django-in-debug-mode /blog/cors-in-django-fuer-entwicklungsumgebung-konfigurieren
/blog/swiss-transit-schedule-data-available-as-gtfs /blog/schweizer-fahrplan-im-gtfs-format-verfugbar
/blog/geoserver-wfs-performance-comparison /blog/geoserver-wfs-performance-vergleich
/blog/mapping-public-transit-networks /en/blog/mapping-public-transit-networks
/en/blog/zeitreise-der-kartographie /en/blog/travel-in-cartographic-time
/solution/[slug] /solution
/en/solution/[slug] /en/solution
/blog/cartaro-on-osgeo-live-dvd /blog/cartaro-auf-der-osgeo-live-dvd
/en/blog/[slug] /en/blog
/blog/[slug] /blog
/en/blog/pythontyping /en/blog/python-typing
/en/blog/altlast4web-go-live-in-luzern /en/blog/altlast4web-go-live-in-lucerne
/en/blog/swisstopo-revisionsdienst-mobile /en/blog/swisstopo-revision-service-mobile
/en/blog/merry-xmaps-and-a-happy-new-year /en/blog/merry-xmaps-and-a-happy-new-year-2012
/en/blog/der-blogger-patrick-brosi-als-autor /en/blog/the-blogger-patrick-brosi-as-author
/karriere/backend-developer /karriere/senior-python-backend-entwickler
/en/career/backend-developer /en/career/senior-python-backend-developer
/en/blog/news20221 /en/blog/news-2022
/mapping-von-netzen-des-offentlichen-verkehrs /blog/mapping-von-netzen-des-offentlichen-verkehrs
/mapping-public-transit-networks /en/blog/mapping-public-transit-networks
/blog/geoserver-wfs-performance-comparison /en/blog/geoserver-wfs-performance-comparison
/developer-portal /solution/developer-portal
/worldwide-transit-tracker /en/blog/worldwide-transit-tracker
/weltweiter-ov-tracker /blog/weltweiter-ov-tracker
/karriere/frontend-developer /karriere/frontend-entwickler`;