top | item 7013227

Show HN: Simple Race Registration (Haskell, PostgreSQL, JS)

15 points| LukeHoersten | 12 years ago |racemetric.com | reply

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 [email protected].

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

19 comments

order
[+] jbrown|12 years ago|reply
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|12 years ago|reply
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... Jump on IRC Freenode #snapframework for discussion. The community is great and really open to all frameworks and language discussion.

[+] MaxGabriel|12 years ago|reply
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|12 years ago|reply
Using Snap (http://snapframework.com/) has been great. It's extremely quick to develop because 1) Monads are an extremely natural way to sequence request handling 2) Heist is awesome for templating 3) I used other frameworks like Django in the past and Snap/Heist really just fits my tastes well. I'd suggest jumping on IRC freenode #snapframework to chat about it more.

Re: image: Definitely. Thanks for the feedback.

[+] LukeHoersten|12 years ago|reply
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!
[+] LukeHoersten|12 years ago|reply
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 [email protected].

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

[+] jreed91|12 years ago|reply
very cool, quick question, how does this integrate with tracking results of a race. I.e chip based timing?
[+] sritchie|12 years ago|reply
Nice! I've been working on PaddleGuru for some time now: 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|12 years ago|reply
sam at paddleguru dot com, btw.
[+] ashika|12 years ago|reply
Are you storing the race paths using the PostGIS extension for postgres or something else?
[+] LukeHoersten|12 years ago|reply
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?
[+] wavesounds|12 years ago|reply
I like the design, the drawing on the map isn't working for me though, using chrome.
[+] LukeHoersten|12 years ago|reply
What version of chrome? Can you see if there are JS errors in the console? View -> Developer -> Javascript Console?

Sorry about that!