

Show HN: Simple Race Registration (Haskell, PostgreSQL, JS) - LukeHoersten
https://racemetric.com
Racemetric is a simple athletic race registration and credit card processing app. It&#x27;s all written in Haskell (Snap, Heist) and JS on top of PostgreSQL. The idea is for race organizers to accept credit card registration payments within minutes instead of having to talk to sales people, get a merchant account, build a custom web page, etc. As a runner and rower, I&#x27;d like to have all my race results in one place and one format.<p>Of course I&#x27;m looking for customers as well as any feedback you have to give! Feel free to contact me directly at luke@racemetric.com.<p>This Show HN grew out of another comment thread here:
https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=7008532
======
jbrown
I'm currently thinking about dipping my toes in Haskell web development, but
am having a hard time deciding which web framework to use. Could you describe
why you chose Snap over the other options?

~~~
LukeHoersten
Great question.

1) Snap is super simple. It's not overdone with metaprogramming etc so it's
easy to understand and debug, but it's not so simple that you have to reinvent
the wheel all the time.

2) Heist, the templating engine, is super simple and powerful. It subscribes
to the idea that control flow should be in Haskell and HTML/XML in the
template. It's proven to scale EXTREMELY well.

3) Performance. Snap server has really performed well in production for me.
Low memory and CPU usage, fast, etc. Right now I'm just running on a micro EC2
and it's not breaking a sweat under the HN load.

4) Digestive functors is a GODSEND for handling forms. It really looks like
Haskell's the perfect language for form processing when you use it compared to
other frameworks. It also has features like dynamic lists w/ automatic JS
which many other frameworks don't support.

5) Snap is the perfect blend of simple + featureful (framework + libraries).
It easily competes with microframeworks in simplicity and the heavy weight
frameworks when you need the functionality.

There's a great SO post with more detail from the authors of both Snap and
Yesod: [http://stackoverflow.com/questions/5645168/comparing-
haskell...](http://stackoverflow.com/questions/5645168/comparing-haskells-
snap-and-yesod-web-frameworks?answertab=votes#tab-top) Jump on IRC Freenode
#snapframework for discussion. The community is great and really open to all
frameworks and language discussion.

~~~
thirsteh
Yesod is more popular, faster, has more users, plugins, etc., but is indeed
more like Rails than Snap. If you're looking at the simplistic end of the
scale, i.e. similar to Sinatra, take a look at Scotty.

------
MaxGabriel
Cool site. I'm learning Haskell so it's good to see it used as a webserver.
What was that experience like?

Also, could you use a different background color for the image behind
"Athletic Race Management"? It was light grey, so before the blurred image
loaded on my phone it was very hard to read.

Edit: you should definitely enable pinch to zoom on mobile. My dad couldn't
read your site without his glasses, so the zoom would have been crucial.

Is it free for free races, or just the $1 fee/person?

~~~
LukeHoersten
Re: Edit: Good feedback. I'll do it. Yeah it's free for free races. I'll throw
that in there. Thanks so much for all the great feedback!

~~~
MaxGabriel
Cool. I showed it to my uncle who organizes a race and he said that it looks
great, but he doesn't charge anyone, so it wouldn't work for him (not
understanding it would work for free races).

~~~
LukeHoersten
I'm glad you brought that up. I used to say explicitly free races are free but
removed it for the sake of simplicity. Would you mind putting me in contact
with your uncle. It'd be great to be in contact with someone who organizes
free races. luke@racemetric.com

Thanks for all your great feedback!

------
LukeHoersten
Racemetric is a simple athletic race registration and credit card processing
app. It's all written in Haskell (Snap, Heist) and JS on top of PostgreSQL.
The idea is for race organizers to accept credit card registration payments
within minutes instead of having to talk to sales people, get a merchant
account, build a custom web page, etc. As a runner and rower, I'd like to have
all my race results in one place and one format.

Of course I'm looking for customers as well as any feedback you have to give!
Feel free to contact me directly at luke@racemetric.com.

This Show HN grew out of another comment thread here:
[https://news.ycombinator.com/item?id=7008532](https://news.ycombinator.com/item?id=7008532)

~~~
jreed91
very cool, quick question, how does this integrate with tracking results of a
race. I.e chip based timing?

~~~
LukeHoersten
Currently Racemetric just supports uploading the CSV/Excel file but I plan to
integrate w/ the live results APIs shortly (for chip timing etc).

------
sritchie
Nice! I've been working on PaddleGuru for some time now:
[https://paddleguru.com/](https://paddleguru.com/). Similar idea, more geared
toward paddling races. We're using a full-stack Clojure back end. Would love
to chat sometime about your longer term goals.

~~~
sritchie
sam at paddleguru dot com, btw.

------
ashika
Are you storing the race paths using the PostGIS extension for postgres or
something else?

~~~
LukeHoersten
Nope right now I just store them as an array of tuples of points. I do plan to
use more PostGIS though in the future! Any experience there?

~~~
ashika
A little experience. Enough to say at this point it's probably overkill, but
if you start writing more geo-aware features (e.g. search nearby, overlapping
course search, etc) it may save you some time vs implementing in application
code.

------
wavesounds
I like the design, the drawing on the map isn't working for me though, using
chrome.

~~~
LukeHoersten
What version of chrome? Can you see if there are JS errors in the console?
View -> Developer -> Javascript Console?

Sorry about that!

