PageSourceSearch

https://rodnik.today/login

html rodnik.today collected 2026-10-04 17:14:32 UTC 17,891 bytes, 266 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3    <head>
4        <meta charset="utf-8">
5        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
6        <meta name="csrf-token" content="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa">
7
8        <title>Rodnik.today — public water sources map</title>
9<meta name="description" content="Explore public springs, wells, taps, fountains, and other water sources with recent community reports.">
10<link rel="canonical" href="https://rodnik.today/login">
11
12    <meta name="robots" content="noindex, nofollow">
13
14<meta property="og:type" content="website">
15<meta property="og:title" content="Rodnik.today — public water sources map">
16<meta property="og:description" content="Explore public springs, wells, taps, fountains, and other water sources with recent community reports.">
17<meta property="og:url" content="https://rodnik.today/login">
18<meta property="og:locale" content="en_US">
19        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
20        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
21        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
22        <link rel="manifest" href="/site.webmanifest">
23        <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
24        <meta name="msapplication-TileColor" content="#ffffff">
25        <meta name="theme-color" content="#ffffff">
26
27        <!-- Fonts -->
28
29        <!-- Styles -->
30        <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2563eb;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style>
31
32        <!-- Scripts -->
33
34        
34<script defer src="/js/@alpinejs/[email protected]"></script>
34
35        
35<script defer src="/js/@alpinejs/[email protected]"></script>
35
36        <link rel="preload" as="style" href="https://rodnik.today/build/assets/app-vKJdd-JZ.css" /><link rel="preload" as="style" href="https://rodnik.today/build/assets/app-BUyVyjDW.css" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/app-CycT0mrL.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/rolldown-runtime-BHe-jwch.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/exifr-CEN3i9mE.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/turf-Cul8zmX7.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/ol-Djqkn0K8.js" /><link rel="stylesheet" href="https://rodnik.today/build/assets/app-vKJdd-JZ.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://rodnik.today/build/assets/app-BUyVyjDW.css" data-navigate-track="reload" />
36<script type="module" src="https://rodnik.today/build/assets/app-CycT0mrL.js" data-navigate-track="reload"></script>
vendor: 1 bytes, line 36
36
37<script>
38     window.addEventListener('load', () => window.setTimeout(() => {
39        const makeLink = (asset) => {
40            const link = document.createElement('link')
41
42            Object.keys(asset).forEach((attribute) => {
43                link.setAttribute(attribute, asset[attribute])
44            })
45
46            return link
47        }
48
49        const loadNext = (assets, count) => window.setTimeout(() => {
50            if (count > assets.length) {
51                count = assets.length
52
53                if (count === 0) {
54                    return
55                }
56            }
57
58            const fragment = new DocumentFragment
59
60            while (count > 0) {
61                const link = makeLink(assets.shift())
62                fragment.append(link)
63                count--
64
65                if (assets.length) {
66                    link.onload = () => loadNext(assets, 1)
67                    link.onerror = () => loadNext(assets, 1)
68                }
69            }
70
71            document.head.append(fragment)
72        })
73
74        loadNext(JSON.parse('[{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022script\u0022,\u0022href\u0022:\u0022https:\\\/\\\/rodnik.today\\\/build\\\/assets\\\/heic2any-CyPDSdSN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022script\u0022,\u0022href\u0022:\u0022https:\\\/\\\/rodnik.today\\\/build\\\/assets\\\/photoswipe.esm-CuKPvLY9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022}]'), 1)
75    }))
76</script>
76        
76<script  data-navigate-once="true">window.livewireScriptConfig = {"csrf":"rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa","uri":"https:\/\/rodnik.today\/livewire-9e2eeec0\/update","moduleUrl":"https:\/\/rodnik.today\/livewire-9e2eeec0","progressBar":"","nonce":""};</script>
76
77
78        <!-- Yandex.Metrika counter -->
79            
79<script type="text/javascript" >
80               (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
81               var z = null;m[i].l=1*new Date();
82               for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
83               k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
84               (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
85
86               ym(90143259, "init", {
87                    clickmap:true,
88                    trackLinks:true,
89                    accurateTrackBounce:true
90               });
91
92            </script>
92
93            <noscript><div><img src="https://mc.yandex.ru/watch/90143259" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
94        <!-- /Yandex.Metrika counter -->
95    </head>
96    <body class="w-full min-h-screen bg-stone-100 flex flex-col"
97        x-data="{ dragover: false, dragoverTimeout: null }"
98        @dragover.window="dragover = true; if (dragoverTimeout) {clearTimeout(dragoverTimeout)}"
99        @dragleave.window="dragoverTimeout = setTimeout(() => { dragover = false; }, 10)"
100        @drop="dragover = false; if (dragoverTimeout) {clearTimeout(dragoverTimeout)}"
101        x-bind:class="{ 'dragover': dragover }"
102        >
103                            <div class="grow-0">
104                <nav class="">
105                    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
106                        <div class="flex justify-between items-center flex-nowrap pt-4 pb-2
107    
108">
109    <div class="flex items-center flex-wrap">
110        <!-- Logo -->
111        <div class="shrink-0 flex items-center">
112            <a href="/" data-rodnik-navigate class="flex mr-2 sm:mr-4 cursor-pointer">
113                <img src="/rodnik-nunito-logo.svg" class="h-6" alt="Rodnik.today" />
114            </a>
115        </div>
116    </div>
117
118    <div class="flex items-center gap-2 sm:gap-3">
119        <div
120    x-data="{ languageMenuOpen: false }"
121    @keydown.escape.window="languageMenuOpen = false"
122    @click.outside="languageMenuOpen = false"
123    class="relative"
124>
125    <button
126        type="button"
127        @click="languageMenuOpen = ! languageMenuOpen"
128        :aria-expanded="languageMenuOpen ? 'true' : 'false'"
129        aria-haspopup="listbox"
130        aria-label="Language"
131        class="flex items-center gap-1 rounded-md px-2 py-1 text-xs font-semibold text-gray-600 transition-colors hover:bg-stone-200 hover:text-gray-950 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-700"
132    >
133        <span>EN</span>
134        <svg
135            class="h-3 w-3 shrink-0 transition-transform"
136            :class="languageMenuOpen && 'rotate-180'"
137            viewBox="0 0 20 20"
138            fill="currentColor"
139            aria-hidden="true"
140        >
141            <path fill-rule="evenodd" d="M5.22 7.22a.75.75 0 0 1 1.06 0L10 10.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 8.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" />
142        </svg>
143    </button>
144
145    <div
146        x-cloak
147        x-show="languageMenuOpen"
148        x-transition.opacity.duration.100ms
149        role="listbox"
150        class="absolute top-full z-30 mt-1 w-40 overflow-hidden rounded-lg border border-stone-300 bg-white p-1 shadow-lg
151            right-0 origin-top-right"
152    >
153                    <form
154    data-rodnik-locale="en"
155    method="POST"
156    action="https://rodnik.today/locale/en"
157    x-data
158    @submit="$refs.localeRedirect.value = $refs.localeRedirect.value.split(/[?#]/)[0]
159        + window.location.search
160        + window.location.hash"
161    
162>
163    <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off">    <input type="hidden" name="redirect" x-ref="localeRedirect" value="/login">
164    <button
165                    type="submit"
166                    role="option"
167                    aria-selected="true"
168                    title="Switch to English"
169                    class="flex w-full items-center justify-between gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors hover:bg-stone-200 hover:text-gray-950
170                        bg-stone-100 text-gray-900"
171                >
172                    <span>English</span>
173                                            <svg class="h-4 w-4 shrink-0 text-blue-700" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
174                            <path fill-rule="evenodd" d="M16.704 5.29a.75.75 0 0 1 .006 1.06l-7.5 7.6a.75.75 0 0 1-1.07-.004l-3.85-3.9a.75.75 0 1 1 1.068-1.054l3.317 3.36 6.968-7.062a.75.75 0 0 1 1.06-.006Z" clip-rule="evenodd" />
175                        </svg>
176                                    </button>
177</form>
178                    <form
179    data-rodnik-locale="ru"
180    method="POST"
181    action="https://rodnik.today/locale/ru"
182    x-data
183    @submit="$refs.localeRedirect.value = $refs.localeRedirect.value.split(/[?#]/)[0]
184        + window.location.search
185        + window.location.hash"
186    
187>
188    <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off">    <input type="hidden" name="redirect" x-ref="localeRedirect" value="/login">
189    <button
190                    type="submit"
191                    role="option"
192                    aria-selected="false"
193                    title="Switch to Русский"
194                    class="flex w-full items-center justify-between gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors hover:bg-stone-200 hover:text-gray-950
195                        text-gray-600"
196                >
197                    <span>Русский</span>
198                                    </button>
199</form>
200            </div>
201</div>
202                    <div class="flex items-center gap-3 sm:gap-4">
203                <a href="https://rodnik.today/login" data-rodnik-navigate class="block text-sm text-gray-500">Login</a>
204                <a href="https://rodnik.today/register" data-rodnik-navigate class="block text-sm text-gray-500">Register</a>
205            </div>
206                    </div>
207</div>
208                    </div>
209                </nav>
210            </div>
211                <div class="grow h-full flex flex-col">
212            <div class="h-full flex flex-col justify-center items-center pt-6 sm:pt-0 bg-gray-100">
213    <div>
214        <a data-rodnik-navigate href="/" aria-label="Rodnik.today">
215    <svg aria-hidden="true" focusable="false" class="w-16 h-16" width="387px" height="380px" viewBox="0 0 387 380" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
216        <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
217        <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
218            <g id="Artboard" transform="translate(-872.000000, -879.000000)" fill="#67BFFF" fill-rule="nonzero">
219                <g id="Group" transform="translate(538.000000, 251.000000)">
220                    <g id="Combined-Shape-2" transform="translate(334.000000, 628.000000)">
221                        <path d="M193.5,0 C300.367099,0 387,85.0658975 387,190 C387,294.934102 300.367099,380 193.5,380 C86.6329009,380 0,294.934102 0,190 C0,85.0658975 86.6329009,0 193.5,0 Z M194.716981,102.307692 C146.324332,102.307692 107.09434,141.023582 107.09434,188.782051 C107.09434,236.540521 146.324332,275.25641 194.716981,275.25641 C243.10963,275.25641 282.339623,236.540521 282.339623,188.782051 C282.339623,141.023582 243.10963,102.307692 194.716981,102.307692 Z" id="Combined-Shape"></path>
222                    </g>
223                </g>
224            </g>
225        </g>
226    </svg>
227</a>
228    </div>
229
230    <div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rou
230nded-lg">
231        <form method="POST" action="https://rodnik.today/login">
232            <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off">
233            <div>
234                <label class="block font-medium text-sm text-gray-700" for="email">
235    Email
236</label>
237                <input  class="border-gray-300 focus:border-indigo-300 focus:ring-3 focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-xs block mt-1 w-full" id="email" type="email" name="email" required="required" autofocus="autofocus">
238            </div>
239
240            <div class="mt-4">
241                <label class="block font-medium text-sm text-gray-700" for="password">
242    Password
243</label>
244                <input  class="border-gray-300 focus:border-indigo-300 focus:ring-3 focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-xs block mt-1 w-full" id="password" type="password" name="password" required="required" autocomplete="current-password">
245            </div>
246
247            <input type="hidden" id="remember_me" name="remember" value="true" />
248
249            
250
251            <div class="flex items-center justify-end mt-4">
252                                    <a data-rodnik-navigate class="underline text-sm text-gray-600 hover:text-gray-900" href="https://rodnik.today/forgot-password">
253                        Forgot your password?
254                    </a>
255                
256                <button type="submit" class="inline-flex items-center px-4 py-2 bg-gray-800 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-hidden focus:border-gray-900 focus:ring-3 focus:ring-gray-300 disabled:opacity-25 transition ml-4">
257    Log in
258</button>
259            </div>
260        </form>
261    </div>
262</div>
263        </div>
264        
264<script id="rodnik-translations" type="application/json">{"locale":"en","ownerId":null,"publicBaseUrl":"https:\/\/rodnik.today","mapTranslations":{"track_uploading":"Uploading track\u2026","track_uploaded":"Track ready to share","track_upload_failed":"Track upload failed","track_deleted":"This track was deleted. The map still works without it.","retry_track":"Try again","guest_upload_notice":"Guest uploads cannot be deleted later.","filters":{"all":"All water sources","springs":"Springs","water_wells":"Water wells","water_taps":"Water taps","drinking_water_sources":"Drinking water sources","fountains":"Fountains","other":"Other","with_reports":"Only with reports","along_track":"Only along uploaded track"},"layers":{"terrain":"Terrain","satellite":"Satellite","strava_heatmap":"Strava Heatmap","osm_traces":"OpenStreetMap Traces"},"upload_track":"Upload GPX track","remove_track":"Remove track","upload_new_track_or_photo":"Upload a new track or photo","download_waypoints":"Download water sources as GPX waypoints","drop_track":"Drop a GPX track","display_route":"to display the route on the map","or":"or","drop_photo":"Drop a photo","locate_from_photo":"to locate the map using its coordinates"},"translations":{"shared_track_deleted":"This track was deleted. The map still works without it.","shared_track_failed":"The track could not be loaded or saved. Please try again.","shared_track_timed_out":"The track request timed out. Please try again.","shared_track_too_large":"The track is too large. Please choose a file smaller than 10 MiB.","shared_track_too_complex":"The track is too complex to share. Simplify the track or reduce its metadata.","upload_failed":"Upload failed","upload_timed_out":"Upload timed out","network_error":"Network error","upload_cancelled":"Upload cancelled","please_upload_gpx":"Please upload a GPX file","photo_no_coordinates":"This photo doesn\u0027t have coordinates","zoom_in_to_export":"Please zoom in to export GPX","zoom_in":"Zoom in","zoom_out":"Zoom out","reset_rotation":"Reset rotation","attributions":"Attributions","photo_close":"Close","photo_zoom":"Zoom","photo_previous":"Previous","photo_next":"Next","photo_load_error":"The image cannot be loaded"}}</script>
264
265    </body>
266</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.