meteor

Topics related to meteor:

Getting started with meteor

Using Meteor with a Proxy Server

Accessing Meteor build machines from Windows

On Mac and Linux, the meteor command line tool assumes that the ssh command line tool, used to make secure connections to other computers, is always present. On Windows, this tool needs to be installed. Below are listed two options for setting it up and using it.

Publishing Data

Within Meteor's data subsystem, a server publication and its corresponding client subscriptions are the main mechanisms of reactive, live data transport where the underlying data is constantly synchronized between the server and the client.

MongoDB

Blaze Templating

Electrify - Compiling Meteor as a Locally Installable App

Wrapping asynchronous methods into a Fiber for synchronous execution.

Retrieving data from a Meteor.call

Directory Structure

client
All code in the client directory is run only in the client-side, or web browser.

client/compatibility
The compatibility directory contains legacy or 3rd party code, such as jQuery libraries, etc.

lib
The lib directory is loaded before other directories in your Meteor project, and is loaded on both the server and client. This is the preferred place to define data models, isomorphic libraries, and business logic.

imports
The imports directory is a directory on the server that is available to both the server and client, but only before the client bundle gets shipped to the client.

packages
The packages directory is where custom packages are stored during local development. When using the standard command meteor add package:name to add a package, Meteor will look first in this directory if a local package has the corresponding description name in its package.js file. If not, it will poll Atmosphere as usual.

private
The private directory contains static files that should only be available on the web server.

public
The public directory contains static files that are only available on the application client. This may including branding assets, etc.

server
The server directory contains server-side assets. This can include authentication logic, methods, and other code that may need security consideration.

tests
The tests directory is omitted by default when your application is bundled and deployed.

As suggested by Richard Silverton it is a convenient idea to put not only the meteor project directory under version control, but also its parent directory.

That way you can keep files under version control without having meteor to deal with it.

Integration of 3rd Party APIs

File Uploading

Meteor + React

React is a JavaScript library for building user interfaces. It's open source, developed and maintained by Facebook. Meteor has production-ready support for React.

Resources:

Environment Variables

Full Installation - Mac OSX

Performance Tuning

Offline Apps

Logging

Deployment with Upstart

Debugging

Assets

Mobile Apps

Horizontal Scaling

Mongo Database Management

If you're not opposed to running a Ruby utility, Genghis is a classic: http://genghisapp.com/

But for scalable production use, get yourself to MongoHQ.
http://www.mongohq.com/

Also, the Mongo Monitoring Service, from 10Gen, the makers of Mongo:
https://mms.mongodb.com/

MongoClient is written in Meteor, Completely Free, Open Source And Cross-Platform.

RoboMongo Native cross-platform MongoDB management tool

Mongo Schema Migrations

It's often necessary to run maintenance scripts on your database. Fields get renamed; data structures get changed; features that you used to support get removed; services get migrated. The list of reasons why you might want to change your schema is pretty limitless. So, the 'why' is pretty self explanatory.

The 'how' is a little more unfamiliar. For those people accustomed to SQL functions, the above database scripts will look strange. But notice how they're all in javascript, and how they're using the same API as we use throughout Meteor, on both the server and client. We have a consistent API through our database, server, and client.

Run the schema migration commands from the meteor mongo shell:

# run meteor
meteor

# access the database shell in a second terminal window
meteor mongo

ES2015 modules (Import & Export)

ESLint

Environment Detection

MongoDB Aggregation

Development Tools

Publishing A Release Track

Blaze User Interface Recipes (Bootstrap; No jQuery)

The above Blaze examples are highly compatible with the http://bootsnipp.com/ library, which only provides the HTML and CSS for components, and leaves the javascript up to the developer. This allows for components to share the same underlying sorting, filtering, query, and cursor methods.

Replica Sets and Sharding

For those not familiar, a Replica Set is defined as a redundant configuration of three servers. A Sharded Database is defined as a horizintally scalled database, where each Shard is defined as a Replica Set. Therefore, a sharded Mongo cluster involves a minimum of 11 servers for a 2 shard cluster, and increases by three servers for each additional shard. So, a sharded cluster always has 11, 14, 17, 20, 23, etc server instances. That is, there's 2 shards of 3 servers each, 3 more config controllers, and 2 routers. 11 servers total for a 2 shard cluster.

Using Polymer with Meteor

Node/NPM

Background tasks

The package cron-tick is a very simple package for background tasks but it does not support multiple processes, if you run your app in multiple processes (or containers) use percolate:synced-cron instead.

Beginner guide to Installing Meteor 1.4 on AWS EC2

Routing

Mongo Collections

A useful way to think about Mongo collections is in terms of Who, What, When, Where, Why, and How. Mongo has the following optimizations for different types of data:

Where - GeoJSON
When - ObjectID timestamps
Who - Meteor Account Strings
How - JSON for decision trees

Which leaves the default document in Mongo roughly representing a 'What'.

Nightwatch - Configuration & Setup

Meteor User Accounts

Acceptance Testing (with Nightwatch)

Reactive (Vars & Dictionaries)

Continuous Integration & Device Clouds (with Nightwatch)

Basic Codeship Setup for Automated Testing

Use Private Meteor Packages on Codeship

Continuous Deployment to Galaxy from Codeship

Meteor + React + ReactRouter