55 comments

[ 3.0 ms ] story [ 80.7 ms ] thread
I finished up the first round of my side project: PeerGym http://www.peergym.com let's you search for quality gyms in your area by membership price and amenities - the kinds of things services like Google Maps and Yelp don't do. Most people do a particular kind of workout (running, weights), and need special equipment (treadmill, barbells), and you can't always guarantee you'll know what you're getting just by the name and a few pictures.

It was mostly an excuse for me to learn Elixir and Phoenix. I've tackled auth, uploads, geolocation/geospatial DBs, SSL and more, so it's been a lot of fun and hopefully I can turn this into some sort of tutorial series on building out a real-world app.

For the future I want to add reviews, community edits, and advanced filters to make them easier to search and populate. And hopefully, accept payments if people want to buy passes to their gyms online (or automatically renew their memberships.

Will you open source it? I wanna make something like this for yoga studios. How long did it take?
I'm not - I plan on turning this into a business, and will be including yoga studios as my next iteration.
Nice, can you describe some of the interesting elements Elixir brought to development experience? How would you compare it to your previous tool of choice?

Great to see Elixir getting more use!

I'm a Rails developer so the transition was really smooth. I'm also very curious so I've tried a host of other languages in my time (Clojure, Haskell, Go, OcaML) so it wasn't too difficult to pick up. One thing I love is that if something isn't written in Elixir, you can just call the underlying Erlang library and have access to essentially two languages at once.

I also love how fast it is - things render extremely quickly even on a hobby dyno, which is impressive because that would never happen on a Rails side project. I also love the out-of-the-box ES6 support for JavaScript. Plus, I just really love writing in a functional programming style, so the language makes a lot of sense while retaining the ease of use when reading a language like Ruby or Python.

I think it's a nice project, well executed and sorta scratches an itch. I think if you actually want to try to get some usage, you're going to really have to put your business/growth hat on and really try and understand why people would use it, how they're going to find it, one or 2 key "wow" features, etc.
It seems like the focus is more to get one's feet wet with Phoenix/Elixir (especially as the OP refers to a tutorial series he wants to write) - not making this site into a wildly successful business
And that's totally fine (sort of). But sounded like author wanted to take it further.
Definitely working on that right now. People constantly move and travel, so they will be google searching for "gyms near X", so one strategy is SEO.

The wow features I feel like are going to be in being able to buy gym passes online (and cancel them). Basically try and circumvent the terribly oppressive process of not being able to cancel your membership.

What did you use for auth, uploads, ssl? Are there good libraries out there?
For auth I forked my own build of the Passport hex. For uploads I used the Arc hex, and for SSL I used Letsencrypt though I eventually realized that Heroku charges $20/mo for SSL and I'm not accepting anything like credit cards yet so it hasn't warranted the expense. Awesome-elixir is a great source for libraries, and it's had everything I needed so far:

https://github.com/h4cc/awesome-elixir

My area only shows Crossfit gyms. Are there other gym types planned?

Also, although this appears more like a personal project and less like a startup, the ability to cancel a membership through this site would be great. Membership cancellation is one of the biggest pains with gyms today.

The original thought behind this experiment was to include quality gyms with a vast amount of equipment. Turns out that Crossfit gyms fit the bill there. I had a great data feed of them, so they represent about 90% of the gyms in the US on our list. The rest are smaller, mom-and-pop powerlifting and strongman gyms. If you sort by price you'll find many of those other gyms are listed on the site.

The next step is to offer passes online and allow you to cancel / augment your memberships. We just have to get the gyms on board :)

A lot of crossfit affiliates use the same software to do billing and manage membership logins. ZenPlanner and Mindbody are the most popular. You might have better luck going through them instead directly contacting the gym.

Also, how do you modify the data that is on there? There's incorrection information for my gym.

We're building a real estate research tool to help people find the right home based on their lifestyle.

This could be really interesting for us if ever there's traction. I'm particularly interested in ratings and reviews and the filtering capability.

If you like this, you might be interested in my current startup Membi https://membi.co. It's a similar tool, for discovering sports and fitness venues in your local area. We're currently based in London, UK but growing quickly. Happy to have a chat if you want to know more.
Just checked it out and agree that it's interesting. Are you guys focused on UK venues only?
For now yes, but will be hopefully be expanding to other locations in the near future
Yes, both of those will be added!
How do gyms make it into the database? I'm looking at where I live (Brooklyn), and almost every single gym listed is a CrossFit gym. There are a considerable number of missing gyms.

Otherwise, this is awesome. I work out at home now, but when I was looking for a gym a while back, it was extremely annoying. New York is especially bad since most gyms are small and/or prioritize cardio equipment and weight machines as opposed to free weights. Anything with more than one squat rack is in Queens and/or has a huge price tag.

That plus the funny squat rack per bench ratio …
Same here, all 3 are CrossFit places. I need to be able to filter by: "Will eject you for using the squat rack for non-squat activities".
Same here. Every gym nearby was Crossfit. There are several large, chain gyms and smaller places nearby too.
So the original idea for this was that I wanted to find quality gyms in my area with vast arrays of equipment. I specifically disregarded globos like Planet Fitness and WorkOutWorld, which have shady contracts and terrible policies.

So my initial feed was the 3500+ Crossfit gyms, plus an additional 600-700 powerlifting, weightlifting, and strongman gyms across the country. I knew these places would have great equipment, great staff, and the amenities fitness enthusiasts would need to get in a great workout.

That said, as you can see, Crossfit dominates more than 80% of my current results. If you sort by Price you may find a smaller, niche gym in your area that will likely be much cheaper and will accommodate your workout type.

For me up in the North of England, I only get two gyms. Both are in London which is not feasible in the slightest to get to.
My apologies! Most of the 4300 or so gyms are located in the US (where I'm based) so unfortunately I don't have a very vast network at the moment, but if you let me know where in north England you are I can see if I can find a few for you! Sign up and send me a message at team@peergym.com and I'll get you hooked up!
This is great.

Reminds me of my first node/angular project http://gymnear.com/

Cool! I like that project, how did you source your feeds - directly from Google Places?

My data is sourced in-house specifically because I didn't want to include globos that had crappy policies or insufficient equipment.

Yeah exactly, all the data is provided from Google Places API. I had hopes of somehow tying in other API's (facebook, yelp, etc.) to get more data (mainly reviews) for the different gyms. But, configuring the database for that was over my head at the time.

I think the idea of having an in house database that users could add information (type of gym, type of equipment, etc.) could be very powerful.

Your project seems to be heading down that route. I would love to help contribute!!

Are people supposed to be able to contribute to this? I'd love to update the info on the gym I go to (Price/equipment/etc) but I don't see a way to do so.
Yes! I wanted to have community edits available by the end of the week, but it's been a crazy week for me (I'm a competitive powerlifter and I have a full time software development job) so it's not out yet. If you sign up on the site I'll let you know as soon as that feature is available, or hit me up personally at team@peergym.com and I'll let you know when you can edit your gym's info!
What does it matter what it's built in if it's not an open project?

First issue. I click an icon on the right yet the menu it controls opens on the left.

Often times people are curious on what it's built with. It was one of the very first questions asked when I showed my recent project.
It doesn't matter from a business side of things, but since this is the Hacker News community, and not a fitness enthusiast community, I wanted to have some common ground that would be interesting to the HN community :)
When you have no gyms nearby you get an error msg: "SORRY BRO..." <- so if im not a bro but a brolady what do I do besides complain?
"Bro" is gender-neutral, as far as I'm concerned.
If "bro" is gender-neutral, I'm pretty confused about that whole "bros before hoes" thing.
"Prioritize your friends ahead of your sexual pursuits."
Bro, Dude, Guy - there are a lot of non-dudes, bros, guys out there that get left out by using those terms. I would use Bro, dude, mate etc only with people that I know very well and are close to me in real life. Idk, maybe its just me, but we talk about trying to include everyone and then go ahead and use these terms?
Why complain at all?
Is it a complaint or a thing that caught my eye in a world dominated by white males? TBH I thought of it more as of a feedback, especially because the elixir community is in full bloom and it would be a shame to showcase a project on HN that uses that kind of language :) Then again I'm a white dude myself, but I notice things...sue me!
(comment deleted)
I wondered if that lack of gender-netrual naming would catch someone's eye. It was an overly-subtle attempt to lampoon the gym culture you see (e.g. BroScienceLife), but right now the 4300 gyms we have are mostly centered around the United States, so if you are missing gyms in your location feel free to let me know a general location you'd like me to add gyms and I can help you out and add some manually.
Clicking on 'Price' under 'Sort by' results in the error message:

> Sorry bro! We couldn't find any gyms in your area, so head up to search bar and try again.

when there are gyms displayed for same area when sorted by location

edit: looks like it's triggered when area's gyms don't have any associated prices

This is correct! You're likely in a smaller demographic where I don't have a lot of price information. I haven't fully fleshed-out how I want to handle this, originally I wanted to order by any that had a price (lowest to highest), and THEN show the remaining gyms which have no price info (as by default they are listed at 0 dollars in the DB, I think).
Not displaying 'Price' as a sort option, or no sort options, in this case, would solve the problem and be good UX.
I keep on hearing about Elixir/Phoenix. What is the advantage of putting this on Elixir vs something like Rails or Laravel?
Well, apparently it won't fall over when it's on the HN front page!
Super fast performance, easy to develop in, and great functional programming environment with being able to call libraries from both Elixir and Erlang.
Some suggestions:

1) signup: state your password constraints up front, and when a chosen password doesn't qualify, the "oops" message overlays the email address. Then rather than have the "Your account was created" in tiny type at top, have it overlay the "Create your free account" button.

2) having signed up, there is no indication of where to go; there is no sign-in directive. (Note: the Google map has its own sign-in button which could get confused for your site sign-in. And I received no emailed confirmation.

3) Aside from Crossfit, the only nearby gyms that show have very little data to show why they qualify,

e.g. http://www.peergym.com/gyms/catalyst-athletics has almost no data, yet it qualifies, while 24 Hour and Gold's do not

4) rather than a blanket "who's best" concept, you might consider having categories. Somebody looking for Olympic lifting will not want a conventional gym, and vice-versa. Maybe something like:

- bodyweight exercises (martial arts, yoga, aerobics studios

- "basic" gyms (some cardio equipment, perhaps weight machines, and at least dumbells or kettlebells)

- "common" chain-type gyms like 24 Hour or Gold's that have a lot of cardio equipment, machines, and free weights but not necessarily an Olympic or Powerlifting platform

And searchable by feature set, e.g.

- showers and lockers

- instructor-led group classes, like spin classes

- childcare

- pool

- spa

etc.

(I'm not saying you should recommend chain gyms, but they do have the basics that satisfy a majority of patrons... crowdedness aside)