65 comments

[ 354 ms ] story [ 210 ms ] thread
I built this. Girlfriend needed this to organise her christmas party and we couldn't really find a nice one on the internet.. So I built it myself. Mostly for her and as an exercise for myself (I learnt the basics of Angular and NodeJS along the way), but then my designer friend came up with the design and we put it live. Hope you enjoy it.
What resources did you use to learn NodeJS?
It's been a long journey of playing around and never finishing small projects until I started this and then it suddenly clicked. I had a bit of PHP and Rails experience prior to this, but Node was pretty much new to me, except for the JS part. The whole async mindset got me in to trouble a couple of times on this project.

The courses on Codeschool helped me tremendously, and this was fun to play around with: https://github.com/rvagg/learnyounode. I read a lot of blogs and some books (will get links later if you want), but mostly it was just trying until it clicked.

> we couldn't really find a nice one on the internet

Really? When I needed one Elfster was pretty easy to find.

Landing page looks nice though.

Great job, this seems pretty fun. Plus, I'm sure your girlfriend really appreciates it, which is always awesome :)

Just one slight thing I noticed is that the "winsdom_scriptregular" font is quite hard to read.

Thanks a lot!

The font indeed is a bit hard to read. We were in doubt about using it for a while because of this, but in the end we liked the handwritten lettering.. so we went with it anyway. :)

Looks great!!

Was just about to set up a Secret Santa on Elfster... was wondering how your site stacks up in terms of facilitating a gift exchange between friends/coworkers?

I don't know Elfster, but after a quick look it seems like they offer wishlists, gift exchange, etc?

We send out an e-mail to everyone on the list saying that Santa is busy and asking them to buy a present for person x. The rest is up to them. Not as advanced I guess :)

Surprised you didn't know about Elfster - I thought about making my own app too, until I saw Elfster.

It's not quite perfect and seems to barely hold itself together (am I signed in, do I have account or do I not?!, etc..), but my friends and I have gotten by. I was able to invite people, remind them to join before the deadline and set exclusions on matchups (I didn't want significant others to get each other as well as people who aren't good friends). People have wishlists, like you mentioned. It's served us well enough for a one time thing, I'm not really sure what else I would need or want.

I guess one could extend the concept and become a broker for the gigantic anonymous gift exchanges? Like the Reddit Secret Santa, except people order from you or send you the packages? I know of people who never got their present even though they had sent a present.

Minor annoyance: The "Amount of cash to spend" slide bar, needs to have its color inverted.

Otherwise, i think it looks great :)

It's very pretty, what did you use to design the site visually? Just plain old html/css? A template? It's simple but good looking!
My friend designed this, I did the front- and backend. It's just plain old HTML/CSS, using Jade for the views and Sass for the CSS, with some Bootstrap components. The grid especially was a great help.
great idea! :) I've been using elfster for the last couple of years.
HN people might not care about this sort of thing (ending a sentence with a preposition), but it screams out at me:

"We'll make sure everyone knows for whom to buy a present!" vs. "We'll make sure everyone knows whom to buy a present for!"

Good job on the who vs. whom though..

Sorry, not a native speaker. I'll fix that.
Ha, looks nice! You could monetize this by letting everyone fill out a wish-list and offer affiliate-linked suggestions based on what is filled in? (Same as http://namentrekken.be does this; that wasn't an option for your gf? :)
Note; you should fix your SPF records, all mails end up in spam.
Does it? I checked this with Mailgun yesterday and they told me to send through the API instead of using SMTP. So I did, tested with Gmail today (where it was ending up in spam) and it arrived in the inbox.. I'll check with them again.
Still, if you send through their API you still need to list mailgun.org in your domain's SPF records (because you define ...@memofromsanta.com as the sender).
Their 'Check Records' tool tells me my records are fine. I'm on the chat with them at the moment, trying to figure it out. Thanks.
To add, it looks like my company is blocking the site as malware. Looks like it's on this list: http://cbl.abuseat.org/lookup.cgi?ip=95.85.5.100

> IP Address 95.85.5.100 is listed in the CBL. It appears to be infected with a spam sending trojan, proxy or some other form of botnet.

> It was last detected at 2013-12-05 22:00 GMT (+/- 30 minutes), approximately 20 hours, 30 minutes ago.

> This IP is infected (or NATting for a computer that is infected) with a spam-sending infection. In other words, it's participating in a botnet. If you simply remove the listing without ensuring that the infection is removed (or the NAT secured), it will probably relist again.

Could you possible pastebin me the message headers/mime for the email going to spam? The folks at mailgun would like to have a look at it. Thanks!
Very cool, an inspiration. How long would you say it took you? (hours of work)

I ask as a young developer looking to gauge where he stands. Anyone have resources they could suggest for gauging fast/slow development for oneself?

I didn't track time on this, but it took me 5-6 days to get it all done. I wasted a lot of time though: I didn't know much about NodeJS backends when I started this, and next to nothing about AngularJS. I did a couple of things three times until I got them right; I used to work as a front-end developer until I got fired last month, so now I'm trying some new things. I'm glad it's an inspiration for you.
Well best of luck! Of course I don't really know, but you're obviously motivated and have skills, so I would bet you're now on the upswing.

I am finishing something now that I hope to post to Show HN as well. Get some feedback, etc.

Edit: AKA derpson5, decided to change my username. Sorry HN DBs, wasted a record.

If you've built a simple web app, this is only a few hours of work. You'll spend more time handling the operational stuff like setting up DNS/Apache/EC2/WSGI.

If this is your first app, I'd expect around a week as you figure out routing, templating, orms.. If you were using Rails, maybe 2 days? This would be very similar to any of the intro project/tutorials.

Goodluck, though I have some advice: there are bigger problems to solve as a developer, this isn't one of them. This (and most web projects) are simply web forms that interact with a DB. It is no engineering feat.

Diggin it. Already using Elfster though!
Currently, when I fill out the form, I have no idea what's going out to the recipients - perhaps a mad libs-esque design would explain why each field, e.g. party title, is necessary :)
May I ask what you mean with mad libs-esque? I did think about what you're saying while developing it but we kinda rushed things and didn't get to focus on the design much. Maybe for next year? :)
Hi ______(target user) ,

My name is ______(yourself) and this ____(verb) _______(noun)!

Hi Dinosaurs,

My names is atwebb and this is madlibs!

And you'd put the parens on the line, but I'm not sure of the markup for underlining here and feeling lazy.

I see. Great suggestion, might even use that for something else I'm working on :) Thanks for explaining!
What platform did you use for deployment? When I dove into Node awhile back it seemed the most difficult part was finding a stable hosting solution...
I'm hosting this on a Digitalocean box, proxying Node through Nginx. Not sure if I did all that correctly, because that certainly was completely new to me, but it seems to work fine for now!
Awesome, now get an affiliate account at Amazon and make gift suggestions
If someone tests this and their email goes to spam, would they be so kind to pastebin me the message headers/mime so I can try to solve that together with the Mailgun folks? Thanks a bunch.
How about creating a test email a\c by yourself to see if the email goes to spam or not? Your existing email a\c may also work.
It doesn't go to spam in my Gmail, which it did yesterday. However, some people are reporting the mail going to spam. This is why I'm asking, I can't test it myself on any account.
Another good test is http://isnotspam.com/. By sending an email from your app to check@isnotspam.com, you can get some good feedback on spam triggers.
Elfster works pretty well!
That may be true, I've never used Elfster, but the design of this landing page is far superior and more festive in my opinion. I probably wouldn't use Elfster after seeing this based on appearance alone.
This is cool but using Ghostery plugin on Chrome (https://chrome.google.com/webstore/detail/ghostery/mlomiejdf...) reveals 16 different javascript trackers and advertising libraries used on this website. I know in the footer it states "Memo from Santa does not store e-mail addresses. We will not send you e-mails apart from the event e-mail, nor will we use your e-mail address for any other purpose." but as this being a free service it's kind of worrying. Should I be worried about giving the emails of all my relatives and friends?
I suspect this is because of the addthis social services. Will dig into this later!

Edit: my Ghostery reveals just that: Addthis and Google Analytics. I could perhaps replace Addthis with just a Twitter/Facebook social button, but I liked the layout of the Addthis buttons.

I tried this earlier with three people. Two of them were told to give presents to the same person, and one person was left present-free.

Not sure if you've fixed that already, but it seems like an important feature to get right...

With three people, wouldn't a valid Secret Santa solution have everyone knowing who's giving which present to who?
Bah :( Just read this and got out of bed to fix this. Thanks!

EDIT: Should be fixed now :) Thanks again for pointing that out. I really need to adopt a TDD approach.

Simple algorithm: Put them all in a list, shuffle list, assign each person to the next in list and the last to the first, in a circle.
I recently did Secret Santa app too, but it is frontend only (no server side, to be ran with all people present). I did it mostly to play with AngularJS, but it has some nice geeky features like using truly uniform shuffling and Fortuna PRNG for more unpredictability. It's in russian, but interface is pretty obvious, so feel free to try it :)

http://evgeniuz.github.io/santa/

load page.

press "+"

visible error message

Nice work! I built a similar site a few years ago and it's turned out to be pretty popular.