I posted previously on crater.io about the startup I’ve founded, Pedlar, that is built using Meteor.
In a nutshell, it is like HotUKDeals (if you’re from the UK) or Slickdeals (if you’re from the US) except that if you share a deal on Pedlar you get a chunk of the commission from any sales. If you’re not from the UK or US: Pedlar lets you make money from bargain hunting!
I have a Computer Science background but had 4/5 years out as a lawyer and so when I left my job to start Pedlar I approached Meteor with some very rusty programming skills.
I’m a one man band so I’ve relied heavily on community resources to work out how to do things with Meteor. I’ve got a lot of love for Discover Meteor (and telescope), crater.io, the meteor chef and all the other excellent resources and articles out there.
I now have the site live and also an iOS app, built with the help of the fantastic meteoric.
With that in mind I thought I might see if there was anything the Meteor community might find helpful for me to write an article/tutorial about. Just as an attempt to give a little back!
I certainly wouldn’t claim to have done anything particularly, technically, novel with Pedlar but if whilst browsing the site or app you wonder how something was done or why it was done just shout in this thread. I’ll either answer here or if it warrants it I’ll put something more substantial together.
It may be that none of you have any questions about what I’ve done - in which case I guess this is just a cheeky plug for Pedlar
As an aside, I have no doubt a bunch of people experienced with Meteor will find some bugs too. If you do, I’d be very grateful if you could pop a comment on here so I can get it fixed!
You noted meteoric but didnt say what other tech/packages you used. You should add that, as depending on what you’ve used others might have questions.
Edit: Also, I noticed that on the home page, if you scroll down it starts reloading and adding more items, which in turn pushes down the footer. So if you want to get to the footer you have to scroll through like 8 reloads =\
As it happens, I’ve largely tried to avoid using packages and instead tried to roll out my own versions of things - I found it helped me better understand what was going on. I have however tried to package my own things up where appropriate to keep things nice and tidy!
That said I do have the usual suspects such as iron:router and some of meteorhacks’ offerings to speed things up. Also a big fan of percolate studio’s synced cron.
The infinite scroll is a recent addition that does unfortunately mean getting to the footer on the main page is a little troublesome. The page looks a little odd without a footer. And I guess a hard to get to footer is better than no footer? I’m still undecided on the best course of action on that point!
That didn’t really reveal much in terms of questions people might have. But I have just noticed sashko’s question so I’ll see if in answering that I provide some more helpful information about how Pedlar is built!
I tried quite a few ways to structure/manage having both a web app and mobile app with Meteor.
The first thing I tried was having completely separate apps running from the same database. I didn’t feel very comfortable with that approach as there was an awful lot of repetition and (as far as I could tell) it required me to have two separate meteor instances running - one to support the web app and the other, the mobile app.
Next, I thought I could have separate apps with one making remote DDP calls to the other. That way I could reuse a lot of the code as, ultimately, the mobile app needed to do a lot of the same stuff as the web app. I ultimately abandoned this approach as there were a number of complications with user authentication that I couldn’t satisfactorily iron out.
I then jumped back to separate mobile/web apps with the idea that I could create a symbolic link of the files I wanted to re-use across the apps. Still, it didn’t feel quite right and didn’t address the two instances of meteor issue.
What I ultimately settled on was having a web-app package and a mobile-app package. Anything specific to one of the apps was bunged into its own package whilst everything that was reusable stayed in the main directory. Making use of api.addFiles(‘filename’, ‘web.browser’) and api.addFiles(‘filename’, ‘web.cordova’) allowed me to conditionally include the files needed for each app. IronRouter wasn’t a big fan of me specifying routes in packages so the routes are in the main directory but make use of the Meteor.isCordova flag.
On a related tangent - being able to specify directories in api.addFiles() would be incredibly useful! Listing out all the files isn’t super fun.
My biggest bugbear with building an app was actually that the one feature I needed wasn’t available through Cordova. I wanted to make use of iOS8’s share extensions so that people could share deals directly from Safari rather than opening up the Pedlar app. I ended up having to learn enough iOS development to make a share extension in Objective C and then had to create a REST interface for my web app to authenticate and post a deal. I fear there was probably a much easier way to do this…!
Ooops, I’ve rambled on a little bit there but if that provided sufficient insight to ask some more specific questions; knock yourself out - happy to help if I can!
As a Meteor newbie myself I would be very interested to read an article/tutorial about how you build your site/app, and your thought process. Think it could really help a lot of people, since there is a lot of interesting topics you could include.
And congrats on launching your product, looks really good :)!
I used meteor-up (MUP) to deploy the site to digital ocean whilst the mobile app was a slightly more interesting experience!
There weren’t a huge number of resources on the mobile part in particular so I’ll see if I can collate what I did find and perhaps supplement it a bit to form a slightly more coherent guide from start to finish.
@tomwasd what do you use to process payments? I am building a similar type of website - where users can post things and earn money. I’ve run into the problem of Stripe, Braintree not supporting the ability to branch payments:
user buys item A, money is split, sent to the poster, the seller, and the app. PayPal does this, but… that’s PayPal
How did you solve this problem? Did you just roll your own ACH transfer system and deal with bank information compliance? Please tell me you did not roll your own payments processor xD This is one my my major hang ups.
I would absolutely love to hear about the architecture of your site in as much detail as you feel comfortable giving.
@tomwasd A big +1 on this thread and for any tutorial and/or ebook you might do and Pedler.co looks great and will even be more user friendly when you have had a chance to rework the footer as it is a bit discombobulating at this point.