[{"data":1,"prerenderedAt":650},["ShallowReactive",2],{"project-33420852":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":48,"post_text":49,"what":50,"said":105,"maker_in_thread":217,"shape":228,"grid":232,"attempts":612,"same_week":613,"maker_shows":34,"maker_hidden":642,"reader_version":643,"card":644},"33420852","KT-companion","An offline-ready hiking trail companion app","title","Show HN: I made an offline-ready hiking trail companion app","https:\u002F\u002Fgithub.com\u002Fjamealg\u002FKT-companion","github.com","jameal",1667309119,2022,475,141,61,2570,3,"legend","consumer_social","hiking trail companion app","web_app",[24,25,26,27,28],"offline hiking app","trail companion","pwa","gpx trail tracker","leaflet map","mixed",0.265,{"positive":32,"neutral":33,"mixed":34,"critical":35},15,11,1,7,34,{"execution":38,"idea":41,"design":43,"docs":45,"privacy":46,"pricing":47},{"positive":39,"critical":40},2,0,{"positive":42,"critical":42},4,{"positive":44,"critical":40},5,{"positive":34,"critical":40},{"positive":40,"critical":40},{"positive":34,"critical":39},[44,34,18,44,40,40,40,40,40,40,18,44,18,34,34,18,44,44,18,44,40,40,44,44,40,18,42,44,18,44,44,18,40,44,34,40,40,40,40,18],"Hi HN! This is a trail companion web app (think AllTrails) I hacked together in a couple weeks time. I was inspired to create this project while training for an extended backpacking trip. My motivation was to create a UI tailored exactly to my liking, and to be able to track my progress along the trail without draining my battery. I also wanted to experiment with PWA technologies.\n\nI successfully used it on my five day adventure along the Knobstone Trail in southern Indiana, and even though it's web-based it hardly consumed any battery life on my old first-gen Pixel XL.\n\nIt's set up currently ",{"problem":51,"audience":57,"pricing":70,"motivation":71,"time_to_build":75,"stack":79,"openness":102,"stage":103,"team_size":104},{"value":52,"source":53,"evidence":54},"Tracking progress along a trail without draining battery, with an offline-capable map","maker",[55],{"id":56},"post",{"value":58,"source":59,"evidence":60},"Hikers, especially backpackers on multi-day trips","inferred",[61,62,66],{"id":56},{"id":63,"by":64,"text":65},"33421654","DMell","This is fantastic. I currently live in Rocky Mountain National Park where I climb, hike, and ski nearly every day - my partner also works for the Park Service. We have been using…",{"id":67,"by":68,"text":69},"33422578","avg_dev","Thanks for creating and releasing this. I started getting into walking after the pandemic. There is a nice suburban trail near my house and I have walked several hundred miles on…",null,{"value":72,"source":53,"evidence":73},"Wanted a UI tailored to their liking, battery-light progress tracking, and to experiment with PWAs",[74],{"id":56},{"value":76,"source":53,"evidence":77},"A couple of weeks",[78],{"id":56},[80,89,96],{"value":81,"source":53,"evidence":82},"Leaflet",[83,86],{"id":84,"by":11,"text":85},"33421734","Thanks! It relies heavily on open source libraries and open map tile providers. A service worker handles caching of most of the application resources, while a Leaflet plugin[1]…",{"id":87,"by":11,"text":88},"33422501","I haven't tried MapLibre. I'm learning that there are lots of alternatives to Google Maps and Mapbox which I love to see. I learned of Leaflet through GPS Visualizer[1]. It's an…",{"value":90,"source":53,"evidence":91},"Service worker (PWA)",[92,93],{"id":84,"by":11,"text":85},{"id":94,"by":11,"text":95},"33422423","MDN's web docs were instrumental. They have a nice guide[1]. Beyond that, their docs for the web APIs are great too. It was actually pretty easy, but I did get tripped up by the…",{"value":97,"source":53,"evidence":98},"leaflet-elevation plugin",[99],{"id":100,"by":11,"text":101},"33421982","Thanks a lot! I'd love to hear how it goes if you actually use it in the wild. I'm actually using a plugin[1] that handles elevation and slope graphing. Adding slope to the graph…","open_source","launched","solo",{"praise":106,"objections":130,"requests":144,"questions":164,"alternatives":179},[107,123],{"value":108,"source":109,"evidence":110},"Clean, simple UI and offline support","commenter",[111,115,119],{"id":112,"by":113,"text":114},"33421574","mattfrommars","Woah, nice! I recently got interest to get into hiking and downloaded current apps for it. One of the 'business model' for current top hiking app - AllTrails - is to get offline…",{"id":116,"by":117,"text":118},"33421895","Eumenes","Nice project, sleek UI and performant. Didn't realize Indiana had hills like that!",{"id":120,"by":121,"text":122},"33422247","folli","Very nice work! Sleek interface. I'll need to field test it soon ;) Have you by any chance also evaluated MapLibre (https:\u002F\u002Fmaplibre.org\u002F) as an alternative to Leaflet. I'm just…",{"value":124,"source":109,"evidence":125},"Elevation scrubbing linked to map location",[126],{"id":127,"by":128,"text":129},"33423241","karaterobot","I appreciate that you can scrub through the elevation chart to show the corresponding location on the map. Not every hiking app does this, unfortunately!",[131,138],{"value":132,"source":109,"evidence":133},"Background location tracking does not work in browsers",[134],{"id":135,"by":136,"text":137},"33426023","la_fayette","This is really cool! The app has all important features one needs! Since the UI\u002Fdisplay has a major impact on battery, it would be nice to have a dark stylesheet and map style.…",{"value":139,"source":53,"evidence":140},"Single hardcoded trail, not a general trail picker",[141],{"id":142,"by":11,"text":143},"33423466","Yes but keep in mind the trail that's loaded is baked into the app. You can't select from a list of trails or anything like that. This is more of a boilerplate for other people…",[145,149,160],{"value":146,"source":109,"evidence":147},"Dark mode stylesheet and map style",[148],{"id":135,"by":136,"text":137},{"value":150,"source":109,"evidence":151},"Background location tracking or GPX export of tracks",[152,156],{"id":153,"by":154,"text":155},"33422176","aeharding","Nice. I wish there was some web API to record geolocation in the background over time. I understand the privacy implications, but if it was an API only available to installed…",{"id":157,"by":158,"text":159},"33428952","murphyslab","> Track location over time and display it on the map. Turn that into a downloadable GPX Right now I use \"Easy GPS logger\" for this although it lacks a map aspect. It hasn't been…",{"value":161,"source":109,"evidence":162},"Slope angle overlay for avalanche awareness",[163],{"id":63,"by":64,"text":65},[165,172],{"value":166,"source":109,"evidence":167},"Can non-technical users install and use it?",[168],{"id":169,"by":170,"text":171},"33423278","johndhi","As a non technical person, can I download and use the app? How?",{"value":173,"source":109,"evidence":174},"Why ArcGIS tiles were chosen and how they scale",[175],{"id":176,"by":177,"text":178},"33426005","tppiotrowski","Nice app. Can you explain why you chose ArgGis as your tile provider [1]? A lot of the struggle of making a public map app is that map tiles are hard to host and not cheap to buy…",[180,188,196,203,210],{"value":181,"source":109,"evidence":182},"AllTrails",[183,187],{"id":184,"by":185,"text":186},"33423248","BTBurke","This is great. I've been working on an adventure motorcycling trip planning app which has similar requirements of being able to work offline as you ride your preplanned trip.…",{"id":112,"by":113,"text":114},{"value":189,"source":109,"evidence":190},"Gaia GPS",[191,192],{"id":63,"by":64,"text":65},{"id":193,"by":194,"text":195},"33427151","seattle_spring","Very cool, but fwiw Gaia does all of this beautifully. I've used it for years to pre-cache maps and track my progress.",{"value":197,"source":109,"evidence":198},"OsmAnd",[199],{"id":200,"by":201,"text":202},"33422690","palotasb","I would also recommend checking out OsmAnd Maps in this space. I use it both for hiking and cycling. I love the UI customizability, for example being able to overlay a satellite…",{"value":204,"source":109,"evidence":205},"CalTopo",[206],{"id":207,"by":208,"text":209},"33425079","jonah","Nice! We use CalTopo.com (Works everywhere, not just California) and GaiaGPS.com for offline mapping and track recording. Both allow offline use after downloading map tiles.…",{"value":211,"source":109,"evidence":212},"FarOut Guides",[213],{"id":214,"by":215,"text":216},"33423471","setgree","Looks very nice! Do you know https:\u002F\u002Ffaroutguides.com\u002F (formerly GutHook)? They have offline-friendly paid maps of a lot of the largest scenic trails in America. I hiked the…",{"comments":218,"answered":219,"key":220},21,8,[221,224,225],{"id":222,"text":223},"33423389","I know that pain. It helped that I had a two week time constraint! I really wanted to use Svelte, but I found it nearly impossible to use without a build script.",{"id":100,"text":101},{"id":226,"text":227},"33422154","Thanks for the feedback. I tried to make it as clear as possible so I appreciate the validation. Honestly, I have terrible natural bearings and I've never relied on a map and…",{"commenters":229,"max_depth":219,"maker_replies":218,"first_comment_mins":230,"lifespan_hours":231},80,6,338,[233,235,237,241,244,248,251,254,258,260,263,265,268,270,272,275,278,281,285,287,289,293,296,298,301,303,305,308,311,313,315,318,320,322,324,328,330,334,336,340,341,343,346,348,349,351,354,357,359,361,364,367,369,372,374,377,379,382,384,386,389,392,396,398,401,403,406,408,411,413,416,419,421,423,425,427,430,432,434,436,439,441,443,445,449,451,453,457,460,462,465,468,471,476,478,480,482,487,490,494,496,501,502,504,506,509,511,513,514,517,518,522,524,528,530,532,534,536,540,543,546,549,552,555,559,562,565,568,571,574,577,580,583,586,588,590,594,597,600,605,609],[184,40,44,234,185,40],"project\u002Fpositive\u002Fexecution",[222,40,40,236,11,34],"maker\u002Fneutral\u002Fnone",[238,40,40,239,240,40],"33424398","commenter\u002Fneutral\u002Fnone","pointpth",[242,40,40,243,185,40],"33433842","other\u002Fneutral\u002Fnone",[245,40,34,246,247,40],"33424821","project\u002Fcritical\u002Fidea","mrg2k8",[249,40,40,239,250,40],"33425536","usrusr",[252,40,40,253,185,40],"33425905","commenter\u002Fneutral\u002Fidea",[255,40,18,256,257,40],"33429633","project\u002Fneutral\u002Fdesign","wyclif",[259,40,40,243,185,40],"33433830",[261,40,40,243,262,40],"33430931","hentrep",[264,40,40,243,185,40],"33433839",[266,40,40,243,267,40],"33431108","nicbou",[269,40,40,243,185,40],"33433800",[63,34,44,271,64,40],"project\u002Fpositive\u002Fdesign",[273,34,40,243,274,40],"33421844","mordechai9000",[276,34,40,243,277,40],"33422722","mikestew",[279,34,40,243,280,40],"33422883","tony_cannistra",[282,34,40,283,284,40],"33423980","other\u002Fcritical\u002Fnone","julienchastang",[286,34,40,243,64,40],"33424250",[288,34,40,243,280,40],"33426752",[290,34,40,291,292,40],"33425278","other\u002Fcritical\u002Fpricing","kilolima",[294,34,40,295,284,40],"33425577","other\u002Fpositive\u002Fnone",[297,34,40,243,280,40],"33426726",[299,34,40,295,300,40],"33427868","ftkftk",[302,34,40,291,292,40],"33430444",[304,34,40,243,280,40],"33430934",[306,34,40,243,307,40],"33430965","smokey_the_bear",[309,34,40,243,310,40],"33428780","jmtulloss",[312,34,40,291,292,40],"33430119",[314,34,40,243,280,40],"33426644",[316,34,40,243,317,40],"33427547","zmj",[319,34,40,243,280,40],"33428057",[321,34,40,243,317,40],"33443174",[323,34,40,243,64,40],"33423256",[325,34,40,326,327,40],"33427793","other\u002Fmixed\u002Fperformance","carderne",[100,34,40,329,11,34],"maker\u002Fneutral\u002Fdesign",[331,34,18,332,333,40],"33430948","project\u002Fneutral\u002Fnone","bjtitus",[335,34,40,243,64,40],"33610198",[337,39,44,338,339,40],"33421757","project\u002Fpositive\u002Fdocs","photochemsyn",[226,39,40,236,11,34],[342,39,40,243,339,40],"33422372",[344,39,40,243,345,40],"33422627","js2",[347,39,40,243,11,34],"33423215",[176,18,18,332,177,40],[350,18,40,329,11,34],"33428526",[352,42,34,246,353,40],"33423476","brunoqc",[355,44,40,243,356,40],"33421723","sdfhbdf",[358,44,40,236,11,34],"33421918",[360,44,40,295,356,40],"33428357",[362,44,40,243,363,40],"33432528","hoseja",[365,44,40,243,366,40],"33448869","haspok",[214,230,34,368,215,40],"project\u002Fcritical\u002Fnone",[370,230,40,243,371,40],"33425408","cypherpunks01",[373,230,40,243,257,40],"33429663",[375,230,40,376,11,34],"33428634","maker\u002Fpositive\u002Fnone",[157,35,18,378,158,40],"project\u002Fneutral\u002Fidea",[380,35,40,243,381,40],"33428968","shrx",[112,219,44,383,113,40],"project\u002Fpositive\u002Fidea",[84,219,40,385,11,34],"maker\u002Fneutral\u002Fexecution",[387,219,40,243,388,40],"33422601","therealdrag0",[390,219,40,243,391,40],"33423303","throwaway1777",[393,394,44,383,395,40],"33424411",9,"kathysgeek",[397,394,40,236,11,34],"33428618",[135,399,18,400,136,40],10,"project\u002Fmixed\u002Fdesign",[402,399,40,329,11,34],"33428581",[404,33,40,243,405,40],"33422683","everyone",[407,33,40,243,280,40],"33422852",[409,33,40,243,410,40],"33424263","out_of_protocol",[67,412,44,383,68,40],12,[414,412,40,243,415,40],"33422896","ryanisnan",[417,412,40,243,418,40],"33424512","ghaff",[420,412,40,243,415,40],"33424837",[422,412,40,243,418,40],"33425113",[424,412,40,243,415,40],"33426067",[426,412,40,243,418,40],"33427245",[428,412,40,243,429,40],"33425478","wnissen",[431,412,40,236,11,34],"33423148",[433,412,44,376,68,40],"33439267",[200,435,40,243,201,40],13,[437,435,40,243,438,40],"33423620","GekkePrutser",[440,435,40,243,201,40],"33425671",[442,435,40,243,438,40],"33433249",[127,444,44,271,128,40],14,[446,32,40,447,448,40],"33426115","other\u002Fneutral\u002Fidea","eddsh1994",[450,32,40,243,121,40],"33426634",[452,32,40,243,280,40],"33426957",[454,455,40,243,456,40],"33427660",16,"wingworks",[458,455,40,243,459,40],"33430085","Aachen",[461,455,40,243,456,40],"33430433",[153,463,18,464,154,40],17,"project\u002Fneutral\u002Fprivacy",[466,463,40,467,11,34],"33422599","maker\u002Fneutral\u002Fprivacy",[469,463,18,378,470,40],"33423481","teleclimber",[472,473,18,474,475,40],"33422879",18,"maker\u002Fneutral\u002Fidea","mradek",[477,473,40,474,11,34],"33423300",[479,473,44,376,475,40],"33424119",[207,481,40,243,208,40],19,[483,484,44,485,486,40],"33424345",20,"project\u002Fpositive\u002Fpricing","ghostbrainalpha",[488,218,40,243,489,40],"33429411","kstrauser",[491,492,18,256,493,40],"33421766",22,"solardev",[495,492,40,329,11,34],"33421893",[497,498,18,499,500,40],"33422253",23,"maker\u002Fneutral\u002Fdocs","zach_garwood",[94,498,40,499,11,34],[116,503,44,271,117,40],24,[505,503,40,236,11,34],"33422215",[507,503,40,243,508,40],"33422685","kingsloi",[510,503,40,243,11,34],"33423590",[120,512,44,271,121,40],25,[87,512,40,499,11,34],[169,515,18,516,170,40],26,"project\u002Fneutral\u002Fdocs",[142,515,40,499,11,34],[519,520,44,234,521,40],"33424523",27,"screye",[193,523,34,246,194,40],28,[525,526,40,243,527,40],"33421678",29,"site-packages1",[529,526,40,243,11,34],"33421779",[531,526,40,243,527,40],"33421954",[533,526,40,243,493,40],"33421782",[535,526,40,243,527,40],"33421930",[537,538,44,383,539,40],"33422210",30,"timzaman",[541,538,40,243,542,40],"33422232","dhdhhdd",[544,538,40,243,545,40],"33422339","foobarbecue",[547,538,34,548,438,40],"33423539","project\u002Fcritical\u002Fpricing",[550,538,40,239,551,40],"33423664","jeromegv",[553,538,34,548,554,40],"33424547","Reubachi",[556,538,40,557,558,40],"33424382","commenter\u002Fneutral\u002Fperformance","gamblor956",[560,538,40,243,561,40],"33424408","tverbeure",[563,538,40,243,564,40],"33424578","atourgates",[566,538,40,291,567,40],"33428700","jq-r",[569,570,40,243,208,40],"33425462",31,[572,570,40,295,573,40],"33425939","robbyking",[575,570,40,243,576,40],"33426955","throwamon",[578,579,40,243,121,40],"33421900",32,[581,579,40,582,11,34],"33422369","other\u002Fpositive\u002Fidea",[584,579,40,585,177,40],"33425944","other\u002Fneutral\u002Fpricing",[587,579,40,243,121,40],"33426725",[589,579,40,295,177,40],"33426902",[591,592,40,243,593,40],"33430201",33,"raylad",[595,36,40,243,596,40],"33424126","squier51",[598,36,40,295,599,40],"33430946","vanous",[601,602,44,603,604,40],"33420942",35,"maker\u002Fpositive\u002Fdesign","dontbenebby",[606,607,18,378,608,40],"33421922",36,"uri4",[610,607,34,246,611,40],"33423864","chrisseaton",[],[614,619,624,628,633,638],{"id":615,"name":616,"points":617,"category":618},"33357197","Giza Project guided tour of the Great Pyramid interior",1752,"learning_science",{"id":620,"name":621,"points":622,"category":623},"33425947","Recall",493,"productivity",{"id":625,"name":626,"points":627,"category":623},"33351585","StarterTab",332,{"id":629,"name":630,"points":631,"category":632},"33383023","FFmpeg",279,"dev_tools",{"id":634,"name":635,"points":636,"category":637},"33396982","Ballerine",254,"web_saas",{"id":639,"name":640,"points":641,"category":623},"33410408","Explainpaper",223,false,"v2",{"id":645,"name":5,"line":6,"ai":642,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":646,"top":18,"kw":647,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":648,"url":9,"mix":649,"praise":108,"objection":132,"sub":21},33420852,0.27,[24,25,26,27,28],"5135000000353113553500550345355305100003",[32,33,34,35],1794036626713]