New commits are pushed every day. They have a great development team working full time, but Meteor is a very big and ambitious framework. The two recent major updates (0.9.0 and 0.9.1) have solidified the packaging system, documented some of the advanced templating features to prepare for 1.0, and added automatic live CSS injection (sooo nice for design work). I think a lot of the delay had to do with completely rewriting and polishing big sections of the framework such as templating and packaging, but most of the work towards 1.0 has been completed. You can check out the progress here.
They're also simultaneously working on Galaxy, which is their commercial, enterprise deployment service that will be their primary revenue stream. This will likely be connected to the organizations support they just added to Meteor developer accounts.
They said they were planning on making a routing system, but they didn't do it when they saw that iron:router was really good so they let the community do it
I've actually dealt with this on a project side project that I was working on. I'm not a Meteor guru and I'm just getting started in Phaser, but because no one else has commented yet I'll go ahead and tell you what I did. My apologies if this is a vague example; this was a side project that I haven't worked on in a couple months but if you have any specific questions I'll try and answer them as best as I can.
I'm using a packaged version of Phaser. This is the package that I'm using. I'm assuming that you have added this to your Meteor packages.
Let's say that I have the following template that I'm rendering to a route from an HTML file.
<template name="mydemo"> <div id="phaser-example"></div> </template>
I also have another file called "game.js" containing all the code found in the following example from Phaser.io. I've taken all the image assets from the example and loaded them into the "/public" directory of my app.
The first line of code in example above looks like this:
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
It initializes the Phaser game inside a div with the id "phaser-example" which is inside the "mydemo" template in our HTML file. We want to change this code so that it will run when our template is first rendered. I replaced that first line of code with something like this:
var game; Template.mydemo.onRendered(function(){ game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render }); });
From what I remember, that's all I had to do to get a demo working. Again, I apologize if this is a vague example. This was one of my side projects that I haven't touched in a while.
Yup, you're going to need atleast some basic knowledge about HTML, CSS and Javascript. Great way to do that is doing the codecademy courses for them. http://www.codecademy.com/
Once you feel comfortable with those, I've found "Your First Meteor Application" book to be the smoothest way to get into Meteor. http://meteortips.com/
I've been using Atom for all my JavaScript, including Meteor, needs. The autocomplete (via packages) is not as awesome as, say RubyMine for Rails development, but it's somewhat sufficient and gets work done.
If you want something that will feel very familiar, you might want to check out Sails.js. It's built on top of Express and (obviously) is very inspired by Rails.
However, I love the Meteor way of building apps. Single language stacks are great... but single framework stacks feel even better to me.
The most important difference is obviously going to be your DBMS. Right now, MongoDB is the only sane choice for Meteor. SQL and Redis support are coming eventually, but that's still a ways off.
I find Digital Ocean's tutorials to be top notch (and you can use them ofc even if you don't host your app on Digital Ocean servers).
Here's one that I used to deploy one of my projects: https://www.digitalocean.com/community/tutorials/how-to-deploy-a-meteor-js-application-on-ubuntu-14-04-with-nginx
It took me a few hours to go through, but it was totally worth it. It also shows you how to set up SSL, which is important for a lot of apps these days.
A lot of people recommend MeteorUp. I think that's probably your best bet, but I've never actually used it. Try searching for tutorials on that and I'm sure you'll find some.
You should not need to change your code when you deploy. The only thing that should change are keys/passcodes for external APIs. You'll be using dev keys on your local machine and prod keys on your prod machine.
'In 2020 Meteor has been taken over by Meteor Software, which is vc-funded by Tiny Ventures, so MDG can focus on their new main business with Apollo. Meteor Software offered a strong collaboration with the community, shorter release cycles and a vision for the future of Meteor, which is becoming reality with the upcoming major 2.0 release.
A major upgrade has been introduced by using React Native as alternative to cordova while keeping all the benefits that Meteor offers. Hosting plans also changed to include more affordable plans and the famous free-tier plan is back again!'
Basically MDG have moved on to Apollo and Tiny Ventures are funding a new team and revamp of Meteor.
https://dev.to/jankapunkt/why-choose-meteor-or-not-for-your-next-project-1gnh
He's actually using redis instead of mongodb. And yes you can run it on the same droplet if you want.
Digitalocean has pretty good howtos for this type of stuff.
Some people may not agree with me suggesting this to someone without more experience, but if you don't like JavaScript syntax and do like Ruby, you should try out CoffeeScript. Meteor even has a standard package for it:
meteor add coffeescript
To be honest with you, I'm not sure why CoffeScript is a necessary piece of your puzzle with ES6/7 features I'd say you're stuck on syntax differences that aren't very major.
But that's not your question :). I asked this question on the meteor forums and got quite a response. My opinion is that vue.js is your best bet.
That said, MDG appears to be rapidly adopting react so that it can switch to react native and leave cordova. If you're new to meteor, the beginning times were all about single page apps that could be wrapped up in cordova for easy development of mobile apps. That is still the goal and as such, react native is the clear future.
You can call it from the command line using child_process: https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
On the meteor server:
exec = Npm.require('child_process').exec; exec(cmd, function(err, stdout, sterr) {...});
If you want to run synchronously, you can use the meteorhacks:async package like this:
function execSync(cmd) {
var res = Async.runSync(function(done) {
exec(cmd, function(err, stdout, sterr) {
done(err, stdout);
});
});
//returns res.err and res.result
return res;
}
It's on their trello backlog, you can find the card here: https://trello.com/c/Lz07fBAm/7-server-side-rendering
On the card they also mention a couple of packages that enable server side rendering: spacebars-tohtml, meteor-ssr and cmather:handlebars-server
I haven't tried any of them but they might be a good start, what problem would you like to solve in particular?
Meteor is indeed very cool, but for making an android/iOS app you might want to take look at Ionic: http://ionicframework.com/ it's pretty cool, and for real-time magic, maby an integration of Firebase: https://www.firebase.com/ :)
Welcome back!! I as well came back to it after some 2ish years a few months ago. I as well knew blaze and iron router and so forth, but now I am very happy with react on the meteor frontend. If you would like to take that route, I suggest you learn a few hours of pure react first, it will pay off. And this article is worth reading:
Instead of:
Template.info.events({ ‘click .button’: function(e,t) { Template.instance().text.set(‘bar’) } })
You can do:
Template.info.events({ ‘click .button’: function(e,t) { t.text.set(‘bar’) } })
It is kind of weird though. There are three very different ways of accessing template instances:
Template.instance()
- in pretty much any of your template code
this
- inside created
, rendered
, and destroyed
callbacks
template
- second argument passed to event handlers
Note that Template.instance()
is also available within this.autorun
functions that are declared in a template's created
or rendered
callbacks. This gives you the choice of either binding your autoruns with this
or running Template.instance()
within the autoruns.
Helpers are the only place where you actually need to use Template.instance()
, because there's no other way to get the instance object into the helper function. I believe the Meteor dev team might eventually be making some changes to how template instances work in this regard when they implement a more complete component system (see this entry on the roadmap).
Theoretically, it wouldn't be difficult to create a wrapper for defining helpers and event handlers that receive the template instance as this
. Then to access the data context instead of this
you would use this.data
. Not sure if anyone would find that useful but it would provide a short, consistent way to access template instances and make the relationship between helpers/events and the view data more explicit.
I poked through a few Google Groups post, this thread seems to summarize it.
Sounds like the group was getting inundated with spam, and there was some discussion about moving to something (Discourse, crater.io, other) different. ServerMeta (/u/mua_dib presumably) set meteor-talk up on a dedicated server to try and get something going.
I hope something works out - I'm old at web dev, but very new to meteor, and some central community area would be great.
Funny - I am just now investigating on this topic myself (both for a meteor meetup talk and one of my projects). Have you seen the partitioner package? https://github.com/mizzao/meteor-partitioner
Also it appears to be a pain to use subdomains to identify a tenant, but that is just what I understood from Tim's reply to my thread
https://groups.google.com/forum/#!topic/meteor-talk/_tf0jH_JnGY
have you considered deploying to a Digital Ocean droplet? It might give you more control than Heroku. Plus its cheaper if you actually need to upgrade.
$495 per month will save you the trouble of having to read this article on how to deploy a Meteor application to a Digital Ocean droplet
I just finished looking through your repo, and the first thing that stuck out to me was the lack of file structure - you pretty much have all of your components in the root, which made it a little more tedious for me to explore your code considering in each of the top-level directories, there could be template files, method files, etc..
You should definitely consider splitting your client and server code into different directories entirely, as some of your files are getting quite long, which only makes it more annoying to scan where the
Meteor.isClient
ends and the Meteor.isServer
begins. I think your app is ready for a good refactoring, and the longer you put it off, the greater the mess you will make, especially in a framework as liberal as Meteor.
If you are planning to continue working on the app in the future, holler at me if you'd like me to take a look at your code again to see how it compares.
Edit: Even methods that are defined in a 'isServer' conditional can be seen by the user if they dont reside in a /server directory - https://stackoverflow.com/questions/32266548/meteor-how-to-prevent-client-from-accessing-methods/32266834#32266834
The Meteor Explained book is probably the closest you're going to find. It breaks down the parts of Meteor that seem the most "magical" to new users and explains what's actually going on behind the scenes.
Rebuilding the entire framework in a tutorial would be ridiculously difficult. Meteor does a lot.
Uploadcare makes it pretty easy and has nice features + pricing, supports cropping + a lot of image operations via their api. They support social accounts as well so people can add photos via facebook, dropbox etc.
Firebase's real-time database will give you most of the real-time reactive goodness of Meteor without managing an entire framework, and it's quite cheap. You can use it with any other platform. Not relational though.
If I cared about real-time reactivity, I would use this instead of fiddling around with Meteor, my own Node server with socket.io, etc.
Well, that's right. Because it's quite new and in Beta. But I think the "Developer Guide" from Google was pretty helpful. https://angular.io/docs/ts/latest/guide/
The only thing I'm missing are animation tutorials. But that's maybe because this part is still highly under development.
And then there is another good tutorial about setting angular 2 up in Meteor and getting started about how to use Meteor things within angular 2. http://www.angular-meteor.com/tutorials/socially/angular2/bootstrapping
I've started using Visual Studio Code which is lightweight and has git integration. Seems promising :)
Only time I have to switch to Ubuntu is when I have to build to Android. So far everything else works really smooth.
1.) Check out Slack at https://slack.com/. A16Z is an investor in it, just like in Meteor 2.) Maybe you have an interest in connecting with Meteorites in REAL TIME from other cities and actually get to know them 3.) The only way to "talk" to other Meteor developers is to go a Meetup. This sucks for everyone living in small cities. A connected community on Slack makes all the sense in the world
Ah good catch, i'll fix that really soon.
I use digital ocean (referal link) for my hosting. Really good and really cheap, and i use compose.io for mongodb
**Edit : Fixed now, thanks for the report!
So I'm about to being deploying a small application myself, and while I am planning something a bit more robust DO is simply hard to beat. Personally as I need everything hosted in Canada (legal concerns) I'm going with RunAbove which is through OVH in Canada/Eurpoe.
MUP is simply the easiest way to get your app up and running, and if you think scaling vertically is the way to go then DO and MUP are the obvious answers in my mind. If you are looking for Mongo to be a bit more robust then you can set up your own Mongo cluster fairly easily (there's lots of good guides online, including this one from DO).
If you have little to no interest in setting up your own servers then Heroku should be fine, but in my tests with it I sometimes had performance issues (though it was likely something I was doing to be honest), and I did notice lag sometimes on the free and lowest paid tiers of MonogLab.
edit: locations
I have not seen any, but the guide sets you up with a node based Stripe API package. So, you should be able to adjust the techniques in the guide I linked to meet how you're trying to use Stripe.
https://stripe.com/docs/connect/managed-accounts
A managed Stripe account will be almost completely invisible to the account holder: you will be responsible for all interactions with them and for collecting any information Stripe needs.
With managed accounts, you will have the ability to change their bank account information and modify any other information on their Stripe account programmatically. Since these users won’t be able to log into Stripe (and will most likely not even know they own a Stripe account), it’s up to you to build any onboarding, dashboard, reporting, and communication flows with them.
The only piece of information you need to create a managed account is its country: everything else can be collected and updated at a later time. The country must be the country the account holder resides in or that the business is legally established in. For example, if you are in the United States, and the business you’re creating an account for is legally represented in Canada, you would use “CA” as the country for the account being created.
I would also recommend Slingshot. You can upload straight to AWS S3, and then use a service like CloudConvert to convert them straight in S3 (or find a library and do it yourself).
Oh ok, that makes a lot more sense. It looks like Meteor doesn't support <code>$group</code> for whatever reason, so you'll need to group manually. Off the top of my head, I think it'd look something like this:
var hourGroups = []; for each hour: get all documents in that hour put them in an array push that array into hourGroups return hourGroups
How does that sound?
You should be coding locally, committing to a dev branch, pushing to a repository, and then getting changes approved. If that doesn't fit your workflow maybe look into: https://ngrok.com/ to demo locally but over the Internet to clients. Then once approved push and deploy with mup to production.
You might want to use the Meteor Vue project.
For what it's the React library has a narrow focus, in terms of what it does. A framework like Vue or Aurelia will offer much more complete picture and cohesive developer experience, perhaps even being more standards oriented.
When starting your app, you don't need to focus on code scalability and resort to architectures like React/Redux. It is worth developing your app using a simple framework, so that you can quickly validate your idea.
https://koding.com/ has a pretty good IDE and a free VM (free tier doesn't stay online 24/7). If you wanna give me 6GB storage, sign up using my link https://koding.com/R/funkytaco
What meteor package did you use for Stripe.js? I've been debating on using Stripe vs Paypal's hipster version, Braintree.
Also, what does modulus.io do as far as database management?
If you want to just get the _id
field off of each user document, you could use use Meteor.users.find({}, {fields: {_id: 1}}).fetch()
, which will give you a list of documents that contain just the _id
field. Alternatively, if you've already done a find().fetch()
on Meteor.users
, you could use _.pluck(listOfUserDocuments, '_id')
. (Underscore docs)
> I prefer it because I am one of those people who have enormous trouble getting Ruby to run properly.
What OS, if you don't mind me asking? Windows? I've always had troubles with Ruby on Windows, but on Mac it's always been pretty easy through things like brew.
Another JS/Node based static site generator is Hexo. When I was picking them a while ago I went for the most popular one, and at the time I think Hexo had that position on lockdown. Not sure what it's like now.
You would need to create a click handler, which converts the position of the click (lets assume 40%), calculate 40% of duration (90 seconds * 0.4=36 seconds) and update the audio element's currentTime, which would seek the cursor since it's reactive.
I did not have time to look into supporting IE, but it supports the audio
element: http://caniuse.com/#search=audio
It may be useful to add a polyfill like MediaElements for more advance WebAudio stuff.
To be fair, many of the core packages have no documentation. Poor documentation aside, it doesn't excuse one from actually reading code (what a scary thought). That's actually how I'd like to see documentation done, I mean, annotated source is a beautiful thing.
OT: I'd like to see core-packages as their own git repos. I mean, I feel like meteor/meteor-tool is more of a build/dependancy management solution and meteor-core is the implementation of ideas under that framework. That's just my two cents though.
Where should I define the ReactiveVar, in the getInitialState, in the getMeteorData or just make it its own key value pair? Still having trouble with this darn thing.
If you don't mind could you take another look at my code? Now getting the error
'Uncaught TypeError: Cannot read property 'set' of undefined'
So what are you trying to do with all this?
Edit: So I re read your question and will give it a shot. I don't think you need the onCreated but you do need the helpers. If you have a collection called 'Recipes', you need to make that info available to the HTML page through a helper so that a template on the HTML page can use it. The code can be seen here.
I tried the code but no luck, I set up this repo. git clone https://[email protected]/lmwdd/camera-test.git
Also asked on stack overflow and got pointed to this, I gonna explore this option as well. https://nodejs.org/api/fs.html#fs_fs_unlink_path_callback
A real simple example would be your local hairdresser.
They sign up to your online booking services, paying $x/monthly. They upload their logo, fill in their details, including PayPal/social accounts and off they go.
The online booking system allows the hair dressers customers to book in for appointments, pre-pay via the online app, possibly apply discount coupons - shared via social media.
Would also be great to have a mobile app ( Meteor ;) ) to work alongside the website in order to allow customers to re-schedule easily, ask questions, add additional services, etc, etc.
Now think about offering the a similar service to plumbers, electricians, etc where the booking system would suggest the order in which they should do their jobs.
And the main reason why I'm suggesting that you might want to consider doing it through Assembly is because you could still build the open source platform, as well as run a SAAS solution. Similar to what Ghost (https://github.com/tryghost/Ghost / https://ghost.org/) is going.
Yes, the trello card surely indicates great intent, but I also agree that package authors' slightest effort in documentation covers good ground and provides willing contributors something to start off on. Otherwise it is not always easy to read the source code and come up with a user contributed documentation. I do agree package users should give back however big or small.