Hacker News new | past | comments | ask | show | jobs | submit login
Endurain: Self-hosted Strava like service (github.com/joaovitoriasilva)
262 points by thunderbong 9 months ago | hide | past | favorite | 119 comments



I've been slowly moving towards https://intervals.icu/ which is kinda "open source" since its donation based. Way better than Strava.


> which is kinda "open source" since its donation based

what does that even mean


Doesn't mean anything, honestly. Strava is also donation based if you think hard enough.


I should have clarified... I wrote my comment too quickly. The code isn't open source afaik, however the service is completely free and donation based.


I couldn't find a link to the source code on the site though? Where should I be looking?


but that's different, strava is more like a social platform, intervals.icu is more about a training and progress platform.

I enjoy strava just because the people on there (my friends and family) motivate me, not because I like to get bigger power/hr numbers


One thing is missing and can’t be done with a web app, and that is automatic tracking of activities recorded by smart watches. The work around here seems to be auto-importing them to Strava and connecting Strava to Endurain.


A webapp can definitely import activities from Garmin smartwatches automatically. Garmin provide a REST interface to Connect to import FIT activities.

https://developer.garmin.com/gc-developer-program/activity-a...


Theoretically, practically, the Garmin connect developer programm is only open for businesses and not hobby projects. From my past experience this is also enforced, no hobby projects.


I have also experienced this. It’s very frustrating that my own data, while available for download on the site, is not available via API


There are a few usable libraries now from folks who have reverse engineered it. I've used https://github.com/matin/garth successfully, there should be libraries available in most other popular languages


That’s really handy, thanks


From my past experience (during COVID when everyone was trying to get access to do hobby projects) they were providing access, you just had to email nicely and ask. Maybe that's now changed again, I've not tried since.


Wait, the smartwatches don't upload activities directly to Strava, do they? They connect to their manufacturer's cloud service (Garmin Connect etc), and Strava has API integrations with them, doesn't it?

So what's missing are the integrations from Endurain to the big manufacturers' platforms (if they are missing, haven't checked the code).


Not sure about others, but for Apple Watches:

Apple Watch -> Health App <- Strava

Strava can directly import workouts from the health app if you don’t like using their app to record your workouts


I don't think that's how Strava on Apple Watch works


It works like this if you're simply using the Apple Workouts app on your watch, instead of the Strava app. If you use the Strava app, it'll upload directly, as well as, write to your Health data. If you use Apple Workouts, it'll detect the workout for Import (if you don't automatically import), and read that from Health.


Could be that they do that directly now, but some years ago you had to "route" the data through their (Suunto's and Garmin's) servers, yes.


I guess I’m tangentially working on doing that for Apple Watch for some personal stuff. I can do a blog post on it sometime.


I use the WorkOutDoors app on Apple Watch. It uploads workouts directly to Strava.


Has been quite a while since I used one, but you could configure custom data uploads in Suunto's app (that's also how you would uploads to Strava back then). Garmin could do the samé IIRC. Don't know about the modern versions though.


One path forward could be integration into RunGap which integrates with tons of services.


> I'm not a developer by profession (my dev concepts are from university ten years ago) so this work had a lot of help from ChatGPT and the main purpose was to learn new technologies and new concepts, so please be gentle. If you have recommendations for any topic please let me know.

Well done, then, to have created such a seemingly complete system.

I don't know if you are the original developer, but aren't you afraid to have made mistakes that will bite you later? Such as security stuff or other errors that will be hard to correct.


I've been an amateur programmer for a long, long time. I've never had the time to really get fluent in coding. (I'm the type of coder who can lose an hour to stupid typos and similar bugs that should be easy to spot.)

I use ChatGPT to help with projects, generate code, point out problems with my code, etc.

It usually gets more "edge cases" figured out than I would without it, especially for implementing common functions. I also ask it to plug security holes in my code, and again, it does better than I would without it.

Just yesterday, it gave me seven different strategies for dealing with bots filling out forms. I implemented a couple in just a few minutes, and the bot problem immediately stopped.

Will mistakes happen? Of course -- but AI tools can help prevent them, especially when combined with one's own critical thinking. (I often correct the AI, ask for assistance in terms of preventing specific types of problems, or use prompts based on my own pre-existing knowledge, which then gets better answers than I would get otherwise.)


> I'm the type of coder who can lose an hour to stupid typos and similar bugs that should be easy to spot.

Oh, a seasoned pro then :-)


Yeah that's me too. I lost a week on the datasets test/ folder being completely empty too.


I realize that most people think "professional coders" are on top of their profession and can find bugs with advanced debugger features.

The reality is that MOST people in the professsion never reach that level and are probably on the same level that you are right now.

It feels like there is a really long tail of really good coders but the median coder is actually pretty... average.

I'm putting this out there so that you can get over imposter syndrome. What you did here is amazing and a lot of professional coders would give up pretty quickly and get stuck on the first implementation steps.


Not the op or the author but any and all developers will make mistakes. Experience just moves the threshold of obvious mistakes into less obvious ones. What’s impressive is that the author built a system and presumably opened it to community feedback which could potentially lead to better result than an experience developer working in solitude and worry over security for years. I appreciate the honest disclaimer at the top as well.

On teams I work on I usually socialize the ideas that it’s not mistakes that matter, but the speed of discovery and fixing that is important. Then it’s important to establish self-enforcing systems that make sure they never happen again. That is linters, unit tests, type systems, CI/CD etc. I jokingly call this humility-based development.


“aren't you afraid to have made mistakes that will bite you later? Such as security stuff or other errors that will be hard to correct.”

If you let this fear control you, you will never actually make anything. Even the most experienced developers will make some of these mistakes. Anyone who thinks they have progressed beyond them needs more experience to see the truth.

The best way to learn is to work on projects and make those mistakes, then figure out how to fix them. The harder it is to fix, the more likely future projects will consider it in the design from the start.


The OP looks to be using sha2 for password hashing at a cursory glance at the PHP so I’d say highly likely. I suppose everything, AI or novice, is just a matter of degree of wrongness.


Afraid of what..? What’s the risk?


I wonder if ChatGPT suggested PHP, because that is a very bizarre choice.


[flagged]


Tell me you're out of touch without telling me you're out of touch.


Great name. I take it it’s a play on the word endurance and the name of the great Spanish cycling champion Miguel Induráin.

https://en.m.wikipedia.org/wiki/Miguel_Indur%C3%A1in


Best of the best at a time when almost everyone was doping like mad. Worked with EPO pioneer Dr. Conconi. He was never caught but chances are he wasn't clean.


Istr he was also some sort of physiological freak - huge lung capacity combined with a ridiculously low resting heart rate. Won all his tours by hammering out huge TT leads that were unassailable in the the mountain stages.


I don't want start a doping argument on HN, and I don't dispute what you've written, but a very low heart rate can be a result of EPO usage.

There's an interesting account in (IIRC) Pantani's biography of riders having to sleep with heart rate monitors. An alarm would trigger if their HR dropped into a dangerous territory, whereupon they'd wake up and have to jump on a bike (which would already be set up on a trainer) in their room to bring their HR back up again.


Also in Obree's book "Flying Scotsman" [0] where his attitude to "medical assistance" makes him "not a team player", and recounts how he'd hear certain teams running through the hotel at night to avoid the potential blot clots associated with EPO usage.

* https://www.amazon.co.uk/Flying-Scotsman-Graeme-Obree/dp/190...


"Medlife Crisis" has an interesting video about this: https://www.youtube.com/watch?v=hT8GZlBBv5k (Cyclists' hearts: can you be so fit that you die?)


Realistically, it's probably a "yes, and" situation. You don't get to that level without having a lot of natural talent, but... those years were what they were.


that's not why they had to get up. It's because they were hitting the EPO so hard, their hematocrits would be like over 60% (60% red blood cells/mL of blood) and thus when their heart rate/cardiac output would drop during sleep (to very low levels typically of highly trained athletes...not because of the EPO) the blood would be too viscous and start to clot

so the low heart rates caused a problem for those abusing EPO, but wasn't a result of using EPO


Thanks - and fair challenge.

Reviewing this, I realised I was guilty of an assumption: that as a low haematocrit can absolutely cause a high heart rate, so a high haematocrit might contribute to a low heart rate... but I can't find any support for this supposition. :)

Sadly, I can't edit my earlier post.


+1 on doping, but the context you provide is very interesting, thank you for the info.


George Hincapie was also kind of a physiological freak. I remember watching him at junior nationals one year just completely decimate the field. It was a criterium and he had a slow leak on his front tire and still won the race. A really strong and talented rider long before he was a doper.


It is a fine name but Endurian - become one with, be the durian was also right there.


Thats how I read it as well. It sounds better off the tongue, but the -rain name is in gear with such an app - as this is not a fruity dieting app for Filipinos.


Or if you live in Ireland - "endure the rain" - because we have no other choice /s


Reminds me of childhood holidays in county Wexford. We’d always be told it’d been constant sunshine the week before… as we stared out the window at the driving rain.

Wexford’s ace though so we never really minded. ;)


Works for Seattle too :)


This is more like an alternative frontend with backup right?

Because you still have to give your data to Strava before it gets to this tool?


Looks like it. Which is a problem, because the Strava API Agreement (https://www.strava.com/legal/api) specifically prohibits you from replicating features that Strava has.


Shameless plug for a very scrapy alternative I made to Strava, except that you don't need Strava at all - https://github.com/cfe84/gpx-tools/blob/main/README.md

It's a cli command that you run on a folder with gpx traces, with segments you define yourself in a json file, then it allows you to list performance by segments. I use it with OsmAnd to record activities, foldersync to synchronize through syncthing, then run on the target folder.

You can look at the logic to calculate segments. I don't pretend that it's great, but that could be a nice addition to your server.


Thanks for sharing. Starred it for a rainy day


I think the killer application of Strava is segments. Even without caring about being the quickest of all users (aka getting KOMs), I find it valuable to be able to compare my progress on a specific piece of road over time. Paired with your heart rate and perceived effort it allows you to gauge how fit you currently are - or how far you are from your peak form.


Someone just needs to make an open central hub for segments and leaderboards per activity type.

Then you need a way to block and nuke toxic segments and submitters, a voting system perhaps.

Detecting segments during an activity is tricky and I've been meaning to investigate it further perhaps via ChatGPT explainer but I know it involves lat/lon bounding boxes, detecting the start/end points within those points.

I vaguely remember Strava has some kind of patent on segments though.


Strava does have multiple patents related to segments including defining and matching segments but Garmin Connect and Ride With GPS have had segments too for years: https://support.ridewithgps.com/hc/en-us/articles/4419581503...


It's a cool feature no doubt, but they really lean on that hard to make you want to pay $80/year.


$80/year isn’t much in the context of most sports that people use Strava for.

I can see how casual, frugal runners might be put off by $80/year, but casual users aren’t the target audience for competitive apps.

I’m amazed at how many people will buy $10,000 bikes and wear $600 of specialized gear and then scoff at paying $80 for a service that tracks exactly what they want.


i think you’re looking at it wrong if all you consider are the bare numbers. someone may find enough _value_ in an expensive bike and expensive gear and not enough value in strava’s paid features. value is subjective, right?

in the mtb community at least it’s not uncommon for someone with a $6k bike to be driving a $3k car and wearing street clothes.

i find it very easy to imagine people stretching financially for expensive bikes and then cutting costs by cancelling strava.


I cancelled my subscription before the price hike. I agree it's not a lot of money but it also was not a lot of value. I think the criteria should be about how much value something provides.

As a runner, that was not interested in any of the social functionality, I didn't really get anything out of strava that was not already in Garmin. What are the "tracks exactly what you want" feature(s) in strava for you?


How could it be used with mobile tools like Gadgetbridge[0]?

This app allows to bypass the proprietary apps for smartwatches and avoid having to upload your health and location data to commercial services. But it does not support Garmin's main sport watches but only gadgets[1]. So one has to connect the watch via USB to transfer tracks and access them on a computer (no mobile support).

[0] https://f-droid.org/en/packages/nodomain.freeyourgadget.gadg...

[1] https://gadgetbridge.org/gadgets/


Thanks for sharing. I was not aware of this


Does this integrate with the Fediverse? The social network aspect of Strava is the primary reason I use it. Garmin Connect has better analysis tools (than Strava to be clear, not Endurain, I've not tried it)


Yeah, I want a FOSS activity pub version of Strava.


It's a shame Runalyze is no longer open-source but the old version is still there

https://github.com/Runalyze/Runalyze


You can move Dockerfiles into the backend/frontend folder to keep them contained.

Or, make a docker folder and specify context with dot-separated prefixes[0]. Update compose file accordingly.

[0] https://docs.docker.com/build/building/context/#filename-and...


I have noticed this tendency in development, where creators write some open alternative to a service, but nowhere in their README have any description of what the alternative they are providing actually does.

So if you don't know the product or service it is an alternative to, you are just out of luck.

I wonder if it is intentional, or just devs being to deep into deving


Congrats! Loved the initiative.

There’s a lot of potential in the compounding effect of recording usable biometric data.


Grats for the idea and the execution, but if I understand it correctly this is better described as a selfhosted frontend for Strava data? So not selfhosted Strava service, but a UI that still needs the cloud service and account. This should be clarified upfront.


I haven't tried it, but I understand the Strava integration as optional. You can source your data from Strava and then use it on its own. Might've misunderstood the readme though


For anyone else wondering: Strava is a tool helping cyclists, runners etc with tracking and routes (or so)


And Strava is actually a social network. It's not only your own runs. You see your friends running and which runs they made. It must be a privacy (and security? You're specifically telling people "hey, I'm not home right now and I'm not back before N minutes" [edit: apparently not quite true, see comments below]) nightmare.

And it's prone to the network effect, because now, people expect and want to see what their friends are up to and motivate each others.

During a job interview, I was once asked "oh, but you don't actually run too much, right?" (I had this in my resume). Which was somewhat right, I only occasionally run. I asked why they assumed this. "You are not on Strava!"

Ah, yes, but for different reasons xD.

I have played with the ForRunners app on F-Droid in the past to track my runs locally. I liked it, but I'm not disciplined enough for this stuff, and don't even have a smartphone usable for this anymore. So now, I just run without knowing anything and that's fine.


You can decide who you share things with (everyone, followers, no one), and also decide who can follow you. So it's not really too bad in that sense.

Of course, many, including me, have most public. It's needed to be on the public leaderboards ("segments"). But even then it's not live tracking publicly, and you can wait a few days to publish the activity if you're doing things abroad and are afraid it'll show people you're not home. (And I'd be more worried about Instagram etc in that aspect).

One cool feature, which unfortunately got severely nerfed due to privacy, was the fly-by. During your activity, you could see who else you met on the way. The cyclist blasting past us? Yeah, that was a semi pro, cool! Or during a race, could later see how everyone did in a cool visualization. The guy I biked next to for some kms and then lost track of, how did he end up?

But this could also be misused. Biked past a girl? Use fly-by to figure out who she is and stalk her. Could even upload fake activities to track everyone passing some spots etc.

Also, you could use Strava to figure out where people lived. And use that to targeted breakins for expensive cycle gear. However, now each activity will fuzz your start and end locations.

I feel Strava had taken privacy very seriously the later years. It's sad that it's needed, because some cool features aren't as usable anymore, but they've prioritized privacy.


Fly-by is still very usable. I raced in the Southern Road Relays earlier this year and the fly-by for it is ace.


Fly-by is a shadow of what it was. I never bother anymore. A shame they couldn't figure out a way to make it work and provide some basic privacy.


It’s doesn’t show live data, but yes this kind of service does have privacy concerns. If you’re say, a Russian submarine commander, don’t use it, or at least see your rides private like it shows you.

https://taskandpurpose.com/news/did-ukraine-just-assassinate...


More commonly, if you are a woman running alone on regular routes at predictable times, broadcasting this fact is likely to put you at significant risk.


It's not only russian submarines, all sorts of soldiers are using it to track their fitness in secret army training camps that now show up glowing on the global hotmap.



There's no realtime tracking, the activities are uploaded to Strava after finishing them. It can become a potential security issue if you upload activities from far away from home.


It does have a real time tracking feature. I don’t use it, I use the built in Garmin. But you can enable this and anyone following you can see your activity in real time.

I find the bigger security issue is recording close to home, so people can theoretically see where you live and know what sort of expensive sports equipment you might have.

https://road.cc/content/news/248798-cyclist-who-had-five-bik...


Last time I checked, the real time tracking was disabled by default and could only be enabled only for specially selected contacts, but it's been a while since I checked.

And if someone shows off their expensive bikes on social media (and that's what Strava is, among other functions)... well, it makes it known to others that they own expensive bikes. Social media has been around for long enough that its users should be aware that this kind of behaviour may impose certain risks.


People publishing an online catalog of fancy sport equipment for thieves isn’t good indeed. I find military people running around infrastructures in secret military bases a bigger strava security issue.


> During a job interview, I was once asked "oh, but you don't actually run too much, right?"

That would be a massive red flag for me. If they checkout my private life to that degree, even if running is on the C.V. (unless maybe running is a property of the job, like a pro running team or applying for Strava community person)


Not a red flag. This company is amazing and the guy just happens to be strongly into running, so he was genuinely interested and curious, most probably. He runs a lot. Of course he checked and I can't blame him. It was also not at all a criterion.

This was also a side discussion during a technical interview. It was fine, really.


If they checkout my private life to that degree…

Yeah, what a dick that guy was, trying to find something in common with the candidate to ease into the interview. Stick to leet coding questions, buddy!


Wait until you learn that it's incredibly common to look candidates up on Facebook to learn more about their personal life during the recruitment process.


Not exactly. You can see all public dáta and the data your "friends" (person you follow) share to followers. There exists really private data too.

Btw. Strava did add a "don't show GPS 200m near my home (or any other location)" feature some time ago. But I guess that still isn't the default.



Good, thanks for the heads up.


That is a bold assumption. Many people I know, including me when I was using strava, were using pseudonyms or fake names.

Now since I am not an elite cyclist nor race anymore I prefer my ride to be without a computer/screen and just enjoy the ride and the scenery and I don't need to publish everything I do.


Years ago secret military and intelligence bases were outted based on Strava heat maps.


> "You are not on Strava!"

What a creepy, american thing to say.


The actual purpose of Strava is to compare your time with that of others. Or at least to show off your activities.

Especially the free version is (nowadays, 10 years ago when I really used it that wasn't a problém) lacking features to be a useful training (tracking/logging) tool on it's own.


That might be true for many, but it is surely not true for everyone. The progression analysis across multiple activities, or the heart rate analysis of each individual activity, are immensely useful tools on their own.


This has been true 10 years ago, nowadays the free version is just about useless for training tracking purposes.


I suspect most folks are getting that data from their watch provider now rather than from Strava.


Why would you do that and get locked into that provider's ecosystem? Everyone I know ignores their watch provider's system as soon as they figure out how to make it sync to Strava.


I have no idea what strava is, perhaps a sentence describing what it is without mentioning the competition and forcing people to google strava would be nice at the top of the readme and/or title?


A lot of my fun on hn is learning new stuff. I often have to searchx various things - just because I didn't know about them previously.

It's the same on reddit, even on topics i (supposedly) know about and follow.

Nb - if you're into sports and fitness tracking, take a look at http://intervals.icu - great for fitness, but also a geeks dream. And a Ux with A1++ customer service to die for!


Another giant recommendation from me on intervals.icu !

I have hundreds of workouts to pick from in there across swim/bike/run, and used the site to plan out all of my training for an Ironman 70.3 (and also for some upcoming races next year). It is phenomenal for planning out your training if you want to do any sort of endurance sports racing.

The developer is awesome, and provides almost all features for free. He even added a swimming feature that I needed with like a 1-2 day turnaround, which was incredible. The “premium” version is only $3/mo which I gladly pay just to support the service.

It’s not open source but honestly that’s fine, the developer has built a very feature-complete platform. But it would be really cool to have the source…


My whole point was to help readers learn new stuff. Until just now I didn't google it because I thought it was random noise that isn't interesting to me, my assumption was that it was some random new front end js stuff. I won't google the competition of every post on hn to find out what it is about. Why are you/others supporting bad marketing/presentation?

Instead of "like strava" 20 times all over, at least once say "a running, cycling and hiking app like strava".

To me, this project just tells me to just go ahead and use strava, they are merely a fan clone.


I hope this isn't seen as stealing thunder from the linked app, but I made a self-hosted viewer for Strava's bulk-download data format. The idea is there are things I have in Strava that I want to keep forever. https://github.com/zsteinkamp/esstraba I made it just for me, but it's open source so let's make it really good!

Example: https://esstraba.steinkamp.us/activity/629380522 (ctrl-drag to orbit/tilt)


Why not just submit your project to Hacker News yourself in it's own thread? Whenever I come across these sorts of posts I think exactly what you say in your first sentence.


I'll look into it. Never created a thread (and maybe this is my fourth comment :).


Any screenshots of the UI?


I like the idea but the README is lacking screenshots.

Also, I think it would make sense to base this on XMPP or ActivityPub, for federation and interop with other services.


Also, check out https://github.com/r-follador/cubetrek

Not yet ready for self-hosting as there's a tangle of dependencies, but working on it... The managed version is available on https://cubetrek.com


That is the coolest thing I've seen for hike visualization. Uploaded one: https://cubetrek.com/view/199784


Ha, funny - I was playing with a slightly similar idea (3d plotting of Strava segments) a while back too. Congratulations of getting (far) beyond the ratty-Python-script-PoC stage :)


this looks very cool!


Thanks!!


A good alternative I use is https://www.goldencheetah.org/, open source, and you don't need Strava/Garmin/etc...


Outside of the basics of analysis, Golden Cheetah is nothing like Strava.

Strava is a social network, map-based ride reviewer, heatmap tool, and basic ride analysis tool. GC is a not-great map viewer and VERY deep ride data dive tool for training.

A venn diagram for the two would only overlap by about 15%.


Personally I find the "social" aspect of Strava off-putting.

Running for me has always been a solitary pursuit. Making it "social" and letting you know that BigDave69 ran that segment faster than you or whatever totally jars with the whole ethos for me.


That's actually my least favorite part as well. I like being able to see what friends did and use that info for routing, but I have to be careful. If I start flipping through the feed on a day (or week) when I'm not riding I'll start to feel like I'm not living up to some expectation. Mentally that's very, very unhealthy.


If you want this to be more compelling to potential users, you need a live demo, or at very minimum, some screenshots. Especially as this is primarily just a frontend into an existing service.


Oh nice, also check out https://github.com/divyenduz/trackfootball.app

It is like Strava for Football (gets data using Strava OAuth). Open source, but docs aren't simply there yet for host-ability!

Also, don't want to hijack your post, but some people might be interested in a football variant! Will defn try Endurain soon


Agree with others. Need screenshots in the readme.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: