Suuuper rough, but here's a client that can handle nostr activites (like garmin / strava / etc..)
https://nostrava.xyz
It's still a WIP and will only use one specific relay current to write all of the activity related notes (relay.nostrava.xyz).
While the NIP is still being worked on, I figure it makes sense to not publish these notes to a bunch of public relays as things could still change.
Currently auth is only supported via nip-07 browser extensions (more auth support will come soon).
When you share an activity, you can expand "Share Settings" to choose exactly what you want to share as a NOSTR note. You can trim the Map file so that you don't dox your exact location, you can also choose to not upload your activity file. In this case, only a summary of statistic will be generated.
I'm using the "sports-lib" javascript library to analyze the activity files. It's far from perfect, but it's good enough for now. My hope is that other who are better at this kind of analysis can create DVMs or other libraries to generate summaries from the raw GPX files, which other clients can then pick up on.
Relevant code is here:
https://github.com/ebrakke/nostr-avahttps://github.com/ebrakke/nostr-activities-sdk
#running #nostrava #activities #cycling #gpx
Having never built a full product with any of the existing frameworks, take what I say with a grain if salt.
I always struggled with expo and react Native. Never worked how I wanted it to ootb.
http://capacitorjs.com seems quite promising. Mainly because you can use any web framwork, so porting something like cashu.me seems easier.
Never really delved into it though, as a pure web dev, I always get frustrated when I go into the mobile world.
First glimpse of #nostr-ava a strava alternative built on Nostr.
This client will facilitate uploading activity files (gpx, fit, etc..) and turning them into nostr activity events. https://wikifreedia.xyz/activity-nip/borrakkor@nostrplebs.com
The powerful piece here is you get to control exactly which data is released publicly. If you choose, your activity file and route map get uploaded to a blossom server, and is referenced in the event.
Soon you'll be able to encrypt these files so only you can view them. You will also be able to utilize DVMs to further analyze your activities, and post summaries from the output.
Currently the client does very basic analysis on the uploaded file, but I forsee many different analyses being available.
Hoping to deploy an alpha version next week.
#running #cycling #blossom #proofofwork
https://video.nostr.build/4919028ac828461e7a58e7d23420e312df867a2569abbda60ae81ee551dcfee4.mp4
Huge shoutout to the creators of https://github.com/sports-alliance/sports-lib
It has everything I need to do activity file analysis right the browser. I can even convert from .fit to .gpx files!
#running #nostr-ava
https://wikifreedia.xyz/activity-nip/borrakkor@nostrplebs.com
WIP nip for activities on NOSTR. This is a nip designed to share different activities (running, biking, hiking, etc...) and generate summaries of these activities.
Clients can handle managing just a users activities in a totally offline / private way. But you can also share the bits about your activity that are worth sharing.
For example, you don't have to upload your whole activity file to your activity just to get a summary. You could generate all your stats locally, and then publish a trimmed GPX file for others to see without getting doxxed.
If summary files are readily shared, then DVMs could generate summaries from those summaries. So without having to leak all your precise GPX files, you could still figure out activity streaks, or similar routes near you.
DVMs could generate routes from partial GPX files. I feel like the possibilities are really endless here.
Those who are data oriented can run their own models in Python and publish the results. Result sets could be standardized.
There's a lot to be done, but I think it could be exciting.
I'm working on implementing this in a svelte app currently. I'll be creating a library in typescript specifically for handling the flow of this protocol.
I'm using blossom to manage the gpx file storage.
For nostr-ava I think I'm going to lean into a DVM model to analyze gpx files. Here's the flow I'm thinking
1) user uploads a gpx file in a client and adds relevant metadata around it (name, description, etc...)
2) GPX files is uploaded to a blossom server and the location is stored in the original note
3) user can then request analysis of the gpx file by creating a DVM job request. This will allow multiple ways to analyze (there's a lot of cool python libraries to transform GPX files), and also allows DVMs to use output from previous DVMs to do meta analysis.
Clients can pull in the original notes + any DVM results per activity and display them as they see fit.
I'm envisioning DVMs for run matching, analyzing your progress throughout the year, comparing with other similar routes (e.g. segments and KOM stuff)
#nostrava #running
Motivated to revisit a Strava alternative for nostr. I think it can be achieved with DVMs and file storage.
Haven't thought too deeply about this, but let's say everything starts with a GPX file. You upload this note and it has your metadata for the activity (like a Strava post) and a location where the gpx file can be retrieved.
Then you have a number of DVMs that can perform analysis on this file. Anything from really basic things (like elevation and HR analysis) to complex features that stava has (matched runs, segments, etc)
I think using something like a geohash would enable segments and matched runs quite easily. You can start to see similar activities in your area.
Pair it with something like npub.pro and you have your own Strava like blog.
#running #strava
Yes totally. I think gpx is an easy spot to start, but pulling in more watch data than gpx would be sweet.
I also think the ability to share segments would be awesome. I'm thinking there could be a few new note kinds to facilitate something like this. E.g. Routes, Segments, Activities
I would imagine with just an nsec, they can't do proper key derivation (like they can with seed phrases)
So just having an nsec means their messaging scheme couldn't function. Just a guess though.
When the client generates the zaps
, it would just lock half to one npub, and the other half to another (assuming 50/50 split)
So the client wallet would take X amount of ecash and request the mint to create new ecash tokens locked to the proper npubs, and then you just sent those along with your zap note.
The receiver could just look for ecash locked to its npub, and then claim it immediately and add it to a wallet.
A couple of web based cashu wallets do this currently using nostr DMs
nostr:nprofile1qqsrx4k7vxeev3unrn5ty9qt9w4cxlsgzrqw752mh6fduqjgqs9chhgppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg6waehxw309aex2mrp0yh8x6rfw3nx7unrv5hx7mn99uslkdah great job with npub.pro
Also, the "login with DM" flow was one of the easiest login experiences I've had so far with nostr.
I was thinking the other day, I wonder if soulseek could utilize nostr. Seems like a weak point that there are just one or two servers out there enabling the whole protocol
Nostr song lyrics, guitar tabs, and sheet music. Because the existing sites that host that stuff always try to push their apps.
Can basically just be a wiki style note.
First (rough) pass at a #climbing NIP
https://wikifreedia.xyz/crimpstr-nip/borrakkor@nostrplebs.com
I opted for a new kind for these events as to not clutter existing wiki applications, though we could easily use the 30818 kind and just utilize a type and c tag to get climbing related things.
I think the biggest unlock here is incorporating the geohash of an area / route into the name. This will ensure that we can disambiguate between climbs of the same name.
It also has the added benefit of hierarchical ordering built in, so you can easily group climbs together without having to enforce a strict hierarchy like MP does.
Using curation sets for tick lists, and for area oganizations (e.g. ordered climbs from left to right) might also be sufficient.
My goal here is not enforce any ordering on the notes themselves, but let people group things together however they see fit.
@PABLOF7z@rylan
Yes! I'm starting to draft a NIP
One thing I worry about, tons of routes with the same way
Definitely needs a way in the wiki links to disambiguate between which instance of a climb an app should go to.
What if everyone just published all of their random notes about topics from obsidian or other note taking apps to nostr, and then used wikifreedia or similar to browse it all.
Not worrying about it being a Wikipedia level article (though some could), but really just reading though everyone's research or thoughts on a personal topic.
They can centralize around categories or common names.
A bit like urban dictionary, but for any topic.
I actually started working on something like this when I first heard about nostr
https://github.com/ebrakke/nostr-ava
The bottleneck I hit was gpx files were too large to upload as notes, and this was pre any kind of file upload nips. So ignore the ipfs stuff in the codebase.
If anyone wants to pick up work on it, feel free
https://github.com/ebrakke/obsidian-nostr-wiki
Here's the source code for the obsidian nostr wiki plugin. Super WIP, but feel free to clone it, fork it, make it better.
Currently it will treat front matter as tags to add to the published note, and it will strip front matter out of the content so it displays nicely.
My favorite thing about moving to Colorado from the east coast was the super friendly ethics around bolting (for most of the front range). It made climbing around Boston pretty inaccessible.
Those lines look sweet!
Working on a go implementation of a #blossom server for an idea I'm trying to flesh out.
https://git.brakke.cc/borrakkor/community-stack/src/branch/main/blossom
Go is great! Go is fun. Go makes me realize that spending all my time writing JavaScript is insane.
I also used Alpine JS in the frontend to add a little bit of state and functionality to sign the auth events. It was nice, a lot like vue and angularJS, and no build steps.
Let's say I wanted to make an application built on nostr, and I want to utilizes nostr auth.
To take some burden off more normie users, I was thinking the service could store an ncrypt for the user.
From the users perspective, they just have to remember a password like any other site. But under the hood, the ncrypt can be sent down an stored in local storage (if missing). And then the user can unlock it with the password to sign events client side.
I'm trying to think from a security perspective if there's any harm in the server storing the ncrypt. It's basically like storing a hashed password, but if the key is ever leaked, then someone with access to the DB could reveal the nsec.
Makes sense. I've never been able to enjoy the nip-46 bunker setup. I love the idea, but the UX around having to change browser tabs (plus wonkiness in brave browser) leaves a lot to be desired for a mobile login usecase.
I want to make an experience where basically a user can slowly "opt in" to more control over their key management, without compromising the security of their key.
You get a few credits by signing up with an email (I think), but other than that it's not free. You just fund your account via lightning, and it will automatically deduct based on usage
After listening to the Citadel dispatch with hzrd and Stewart, it got my brain spinning.
Maybe you can build a "gated community" on top of nostr, with all different kinds of plugins based on NIPs
And then at any point, community members can fork the entire stack to create a new community.
Could be useful for communities that require moderation, but the underlying data ends up being totally forkable.
Members could pay dues for hosting costs of the CDN / relay / DB. You could even customize the login experience to something more traditional (like user just creates a password which will be used to generate an ncrypt) and the community can store that. https://image.nostr.build/42368ccf30d6ec24138d173bf74c6b7b61ead390718bdb9a28fcc3b407f7934c.jpg
In imposing today’s sentence, Judge Forrest said: “There must be no doubt that lawlessness will not be tolerated. There must be no doubt that no one is above the law - no matter one’s education or privileges. All stand equal before the law. There must be no doubt that you cannot run a massive criminal enterprise and because it occurred over the Internet minimize the crime committed on that basis.”
She said before handing a life sentence to Ross Ulbricht.
Yeah I've been thinking about something like this for a couple years now. My first attempt was building something in top of ipfs, but that was kind of a nightmare.
At one point I scraped all of the routes from mountain project, I think I have them somewhere so it's a good "seed" to start something.
Creating a nostr client for climbing seems like the next logical step. Zapping or sending ecash to route developers would be 🔥.
Totally! It's kinda like taking @PABLO 🌶️'s wikifreedia design, but applying it specifically to climbing / hiking.
Especially with climbing, people disagree on grades, and you might want to vote on a fork of a route, rather than giving admins all the power to keep the grade of a route.
Notes by Erik | export