Sunteți pe pagina 1din 12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

Sebastian Dahlgren
Clouds. Python. JavaScript. Open Source.
RSS Email
Search Navigate

Blog Archives @LinkedIn @GitHub @Twitter

Tutorial: Writing your first Meteor application


Jul 17th, 2013 | Comments

Description
We will build a small chat application based on Meteor. It will support anonymous users and users signed in using their GitHub account. The full example code can be found at https://github.com/sebdah/meteor-chat-tutorial. The tutorial will cover the basics of: Meteor Meteorite (package system) Meteor Accounts (user management system) Handebars usage, as that is the default templating system Before we begin, please open a tab with the Metor Docs. Its a fairly good companion throughout the tutorial.

Install basic requirements


Install Meteor
First off, install Meteor itself by entering the following in your terminal.
1c u r lh t t p s : / / i n s t a l l . m e t e o r . c o m|/ b i n / s h

It will download and install Meteor for you.

Install Meteorite
Meteorite is a packagemanager for Meteor. You can use n p mto handle some packages, but Meteorite is a good choice because it supports the user submitted packages in the Atmosphere repo.
1s u d on p mi n s t a l lgm e t e o r i t e

Hint: If `npm` is not available, please install Node.JS from http://nodejs.org/ first.

Building the application


Alright, now that you have the basic components installed, lets get started with the actual development.

Project structure
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 1/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

Lets create the project


1m r tc r e a t ec h a t a p p

This command will create a basic Meteor project structure that may suit less complex web apps, but it tend get messy as the projects are growing. The default structure (which you have in your c h a t a p pfolder) looks like this:
1c h a t a p p . c s s 2c h a t a p p . h t m l 3c h a t a p p . j s 4s m a r t . j s o n

The problem is that code for both the client and server lives is within one . j sfile with an i fclause to separate code from the client and server:
1/ /S h a r e dc o d eg o e sh e r e 2 3i f( M e t e o r . i s C l i e n t ){ 4 / /C l i e n tc o d e 5} 6 7i f( M e t e o r . i s S e r v e r ){ 8 / /S e r v e rc o d e 9}

But Meteor offers an alternative project structure that we will use in this example. So, before we begin lets remove some of the example code generated by the c r e a t ecommand.
1c dc h a t a p p 2r mc h a t a p p . *

Now create two folders instead:


1m k d i rc l i e n ts e r v e r

Your c h a t a p pfolder should now have the following folders and files:
1c l i e n t / 2s e r v e r / 3s m a r t . j s o n

As you might have guessed, all code that lives within the c l i e n tdirectory will be available for the client (i.e. the browser), while all code under s e r v e r will remain on the server side. It is easier (in my opinion) to structure the code like this when the code base grows.

Writing the HTML template


Heres the basic HTML template that we will be building on top of. There are a few things to note here. First of all, theres no d o c t y p eor h t m ltags because Meteor will add that for us. Secondly there are some wierd tags like { { >w e l c o m e} } . This is all part of the Handlebars templating system. What is says is that The template with name=welcome should be inserted at {{>welcome}} Store the HTML template in a file called c l i e n t . h t m lin your c l i e n tfolder. client.html
1 < h e a d > 2 < t i t l e > C h a ta p p < / t i t l e > 3 < / h e a d > 4 5 < b o d y > 6 < h 1 > C h a t a p p < / h 1 > 7 { { >w e l c o m e} } 8 < / b o d y > 9 1 0< t e m p l a t en a m e = " w e l c o m e " > 1 1 < p > 1 2 W e l c o m et ot h ee x a m p l ec h a ta p p !P l e a s el o gi nt os h o wy o u ru s e r n a m e . 1 3 < / p >

sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/

2/12

04/04/14
1 4< / t e m p l a t e >

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

You can now launch your Meteor app with


1c dc h a t a p p 2m r t

The point your browser at http://localhost:3000. You should see something like this:

You can leave Meteor running, it will automatically update whenever you change a file in the application.

Implementing simple chat functions


Well start writing the actual code for sending messages and we will use the built-in MongoDB database to store all messages. Create a file called m o d e l s . j sin the c h a t a p p . models.js
1/ * * 2* M o d e l s 3* / 4M e s s a g e s=n e wM e t e o r . C o l l e c t i o n ( ' m e s s a g e s ' ) ;

This will define a new MongoDB collection called m e s s a g e s . Now lets extend our c l i e n t . h t m lto support messages. Add a new { { >m e s s a g e s } } tag right under { { >w e l c o m e } }and add the following < t e m p l a t e >snipped at the end of your HTML code. client.html
1< t e m p l a t en a m e = " m e s s a g e s " > 2 { { # e a c hm e s s a g e s } } 3 < s t r o n g > { { n a m e } } : < / s t r o n g >{ { m e s s a g e } } < b r > 4 { { / e a c h } } 5< / t e m p l a t e >

Heres some more Handlebars tags that will loop over each message object in a list of messages and print the n a m eand m e s s a g eattributes. Finally we need to expose the m e s s a g e slist to the m e s s a g e stemplate. To do that we need to create a new file under c l i e n tcalled c l i e n t . j s client.js
1/ * * 2* T e m p l a t e s 3* / 4T e m p l a t e . m e s s a g e s . m e s s a g e s=f u n c t i o n( ){ 5 r e t u r nM e s s a g e s . f i n d ( { } ,{s o r t :{t i m e :1} } ) ; 6}

Lets break down this abit. T e m p l a t e . m e s s a g e s . m e s s a g e srefers to T e m p l a t e . < t e m p l a t e n a m e > . < t e m p l a t e v a r i a b l e > . In our case we will return all documents from MongoDB and sort them on the t i m eattribute.

Sending messages (manually)


Its time to introduce the concept of databases everywhere . In Meteor, the database API is not soley for the backend (server) to use. Its also exposed to the client using an JavaScript API that simulates MongoDB. Lets see what it looks like. Run the following in your browsers JavaScript console:
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 3/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren


1M e s s a g e s . i n s e r t ( { n a m e :" S e b a s t i a n " ,m e s s a g e :" M yf i r s tm e s s a g e " ,t i m e :D a t e . n o w ( ) } ) ; 2M e s s a g e s . i n s e r t ( { n a m e :" A n d r e w " ,m e s s a g e :" H i ! " ,t i m e :D a t e . n o w ( ) } ) ; 3M e s s a g e s . i n s e r t ( { n a m e :" S e b a s t i a n " ,m e s s a g e :" Y o ! " ,t i m e :D a t e . n o w ( ) } ) ;

You will now see the messages in your chat app.

This works because we exposed the M e s s a g e svariable in the m o d e l s . j sto both the client and the server. Therefore we have access to the M e s s a g e s variable in the JavaScript console in the browser. Security warning: This exposes a security hole as any client will be able to modify the database (and delete messages for example). Its of course possible to fix. Read more at http://docs.meteor.com/#dataandsecurity.

Sending messages
Now well write a function so that anyone can post messages (without using the JavaScript console :)). Extend your HTML template with a new { { > i n p u t } }tag that you place between { { >w e l c o m e } }and { { >m e s s a g e s } } . The new < t e m p l a t e >looks like this: client.html
1< t e m p l a t en a m e = " i n p u t " > 2 < p > M e s s a g e :< i n p u tt y p e = " t e x t "i d = " m e s s a g e " > < / p > 3< / t e m p l a t e >

We will now need to catch the event and send the message when the user is pressing enter. Thats all done in the c l i e n t . j s . Add the following just undet the T e m p l a t e . m e s s a g e s . m e s s a g e scode: client.js
1 T e m p l a t e . i n p u t . e v e n t s={ 2 ' k e y d o w ni n p u t # m e s s a g e ':f u n c t i o n( e v e n t ){ 3 i f( e v e n t . w h i c h= =1 3 ){/ /1 3i st h ee n t e rk e ye v e n t 4 v a rn a m e=' A n o n y m o u s ' ; 5 v a rm e s s a g e=d o c u m e n t . g e t E l e m e n t B y I d ( ' m e s s a g e ' ) ; 6 7 i f( m e s s a g e . v a l u e! =' ' ){ 8 M e s s a g e s . i n s e r t ( { 9 n a m e :n a m e , 1 0 m e s s a g e :m e s s a g e . v a l u e , 1 1 t i m e :D a t e . n o w ( ) , 1 2 } ) ; 1 3 1 4 d o c u m e n t . g e t E l e m e n t B y I d ( ' m e s s a g e ' ) . v a l u e=' ' ; 1 5 m e s s a g e . v a l u e=' ' ; 1 6 } 1 7 } 1 8 } 1 9}

sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/

4/12

04/04/14
T e m p l a t e . i n p u t . e v e n t sis the callback

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

for all events triggered withing the i n p u ttemplate. In this case were listening to k e y d o w ni n p u t # m e s s a g e which means any time a key is pressed with in the i n p u t # m e s s a g eselector. The syntax for the events are e v e n ts e l e c t o r . You can now write messages directly in your app!

Add user authentication


Before we start writing the actual code for user authentication we need to install a c c o u n t s u iand a c c o u n t s g i t h u bto support the user management and OAuth signing with GitHub. Run the following in your c h a t a p pfolder.
1m r ta d da c c o u n t s u i 2m r ta d da c c o u n t s g i t h u b

The a c c o u n t s u ipackage is bundled with a UI for us to use right out of the box. Just add { { l o g i n B u t t o n sa l i g n = " r i g h t " } } < b r >just above < h 1 > C h a t a p p < / h 1 >in your c l i e n t . h t m lfile. Your HTML should now look like this: client.html
1 < h e a d > 2 < t i t l e > C h a ta p p < / t i t l e > 3 < / h e a d > 4 5 < b o d y > 6 { { l o g i n B u t t o n sa l i g n = " r i g h t " } } < b r > 7 < h 1 > C h a t a p p < / h 1 > 8 { { >w e l c o m e} } 9 { { >i n p u t} } 1 0 { { >m e s s a g e s} } 1 1< / b o d y > 1 2 1 3< t e m p l a t en a m e = " w e l c o m e " > 1 4 < p > 1 5 W e l c o m et ot h ee x a m p l ec h a ta p p ! 1 6 < / p > 1 7< / t e m p l a t e > 1 8 1 9< t e m p l a t en a m e = " m e s s a g e s " > 2 0 { { # e a c hm e s s a g e s } } 2 1 < s t r o n g > { { n a m e } } : < / s t r o n g >{ { m e s s a g e } } < b r > 2 2 { { / e a c h } } 2 3< / t e m p l a t e > 2 4 2 5< t e m p l a t en a m e = " i n p u t " > 2 6 < p > M e s s a g e :< i n p u tt y p e = " t e x t "i d = " m e s s a g e " > < / p > 2 7< / t e m p l a t e >

Lets throw some CSS on this app. Create a c l i e n t . c s sfile under c l i e n twith the following code: client.css
1h t m l{ 2 p a d d i n g :1 0 p x ; 3 f o n t f a m i l y :V e r d a n a ,s a n s s e r i f ; 4} 5 6. l o g i n b u t t o n s d r o p d o w n a l i g n r i g h t{ 7 f l o a t :r i g h t ; 8}

We should also make sure to store the name of the user is the m e s s a g e sdatabase, currently we have hard coded A n o n y m o u sas the name for all users. Update the T e m p l a t e . i n p u t . e v e n t sto look like this: client.js
1 T e m p l a t e . i n p u t . e v e n t s={ 2 ' k e y d o w ni n p u t # m e s s a g e ':f u n c t i o n( e v e n t ){ 3 i f( e v e n t . w h i c h= =1 3 ){/ /1 3i st h ee n t e rk e ye v e n t 4 i f( M e t e o r . u s e r ( ) ) 5 v a rn a m e=M e t e o r . u s e r ( ) . p r o f i l e . n a m e ; 6 e l s e 7 v a rn a m e=' A n o n y m o u s ' ; 8 v a rm e s s a g e=d o c u m e n t . g e t E l e m e n t B y I d ( ' m e s s a g e ' ) ; 9 1 0 i f( m e s s a g e . v a l u e! =' ' ){ 1 1 M e s s a g e s . i n s e r t ( { 1 2 n a m e :n a m e , 1 3 m e s s a g e :m e s s a g e . v a l u e ,

sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/

5/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren


1 4 t i m e :D a t e . n o w ( ) , 1 5 } ) ; 1 6 1 7 d o c u m e n t . g e t E l e m e n t B y I d ( ' m e s s a g e ' ) . v a l u e=' ' ; 1 8 m e s s a g e . v a l u e=' ' ; 1 9 } 2 0 } 2 1 } 2 2}

M e t e o r . u s e r ( )will hold

profile information about the currenly signed in user. If no user is signed in it will return n u l l . So now were storing the users full name in the database rather than just A n o n y m o u s . Open your application in a browser. You will see that the GitHub login button is red. This is because you will need to configure the GitHub OAuth the first time you use it. Just click the button and follow the instructions in order to get your Client ID and Client Secret from GitHub.

When this is all done you should be able to login to the chat app using your GitHub credentials.

Test it in two browsers


Now, just to test the actual chatting, open another browser and point at http://localhost:3000 as well. Do not log in with this second browser. You should
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 6/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

now have two different browsers. One logged in with your GitHub account and one that is not logged in at all. Then try to write some messages and see that they are popping upp in the other window directly (without having to reload).

Full code
To get the full code please checkout https://github.com/sebdah/meteor-chat-tutorial/tree/master/chatapp.

If you liked this tutorial, star it!


If you liked this tutorial, please star the repo at https://github.com/sebdah/meteor-chat-tutorial. Thanks! Posted by Sebastian Dahlgren Jul 17th, 2013 javascript, meteorjs
Tw eet 96 23 Like Share 39 people like this.

Password confirmation in WTForms Add routing to Meteor JS

Comments
38 Comments
Sort by Best

Sebastian Dahlgren's blog


Share

Login
Favorite

Join the discussion


Christian Fei
7 months ago

Hey Sebastian, nice tut! I wanted to post here this comment to let people know about a similar, yet fully featured realtime web chat built with Meteor called 'OpenTalk' at http://opentalk.me I made the source code available here https://github.com/christian-f... Would love to know what you think
4
Reply Share

sebastiandahlgren

Mod

Christian Fei 7 months ago

Great work Christian! I like the look and feel :).


sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 7/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

I'd suggest that you add a list of popular or active chat rooms on the start page to get people started. Keep up the good work!
Reply Share

Christian Fei

sebastiandahlgren 7 months ago

Thanks Sebastian, I will certainly consider your suggestion!


Reply Share

Frankiezzy 1

3 months ago

Best tutorial I've read & followed so far. Thank you very much. Looking forward to reading more of your MeteorJS tutorials
Reply Share
4 months ago

Thomas Schmidt 1

This tutorial is so great. I like that you build everything step by step from scratch rather than taking an example application.
Reply Share

sebastiandahlgren 1 jtnix

Mod

Thomas Schmidt 4 months ago

Thank you for the feedback, I really appreciate it.


Reply Share

20 hours ago

neat, but what happened to server/ ? seems like a red-herring... to be continued??


Reply Share

sebastiandahlgren

Mod

jtnix 14 hours ago

I do not really get what you mean, there is no real server part (or at least no server-side code) in this application, so there is no server/ directory? Sorry if I misunderstood you!
Reply Share

Graham

a day ago

When I tried to add {{loginButtons}}, I kept getting a blank page, and I was close to giving up trying to learn Meteor. Even copying the code in this tutorial directly didn't work! Finally I looked at the console, and found that I have to use {{> loginButtons}} instead of {{loginButtons}}. I don't know if this is a recent change, but none of the tutorials I've looked at use the ">".
Reply Share

sebastiandahlgren

Mod

Graham 20 hours ago

That is likely due to the release of MeteorJS 0.8. Check out http://docs.meteor.com/#accoun.... I'll see if I can review the example app to suite MeteorJS 0.8 Did you find any other issues?
Reply Share

Kevin Paul

3 days ago

Im new to meteor and this tutorial is really good! I did every step exept I used facebook auth instead of the github. Thanks for this tutorial and nice work!
Reply Share

Luiz Jos de Lemos

16 days ago

Congrats @sebastiandahlgren great tuto. Thanks! :)


Reply Share

sebastiandahlgren

Mod

Luiz Jos de Lemos 16 days ago

Thanks @Luiz Jos de Lemos, much appreciated with the feedback :)


Reply Share

Aaron Stromberg

2 months ago

Hi Sebastian! Thought the tutorial was the bomb, totally killed it. I'm also having log-in issues with newer versions of meteor. I log in, don't receive any errors, but my account information doesn't appear to actually get pulled, and I'm still coming up as anonymous. I'm running Meteor 0.7.0.1 and Meteorite 0.7.0.1. I heard the accounts-ui was changed again, so I would not be surprised if this has something to do with it. Anyway, I'm too lazy to figure out exactly what needs to be changed (if indeed I'm correct it fails with this version, and I am not the mistake), I got exactly what I wanted out of this tutorial, and that was a great introduction to Meteor! Kudos and much love!
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 8/12

04/04/14

and much love!


Reply Share

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

sebastiandahlgren

Mod

Aaron Stromberg 2 months ago

Thanks for your kind words Aaron, glad that you liked the tutorial! Happy Meteor hacking :)
1 lt
4 months ago

Reply Share

great tutorial. had fun following along.


Reply Share

aidanxyz

4 months ago

It was really easy to read and understand! Thanks so much!)


Reply Share

sebastiandahlgren

Mod

aidanxyz 4 months ago

Great, thank you so much aidanxyz :)


Reply Share

JGallardo

5 months ago

This is an excellent tutorial thank you so much. By the way, even though Iogged in with Github. I was still showing up as anonymous. How exactly do we pull in their names from their github profile?
Reply Share

sebastiandahlgren

Mod

JGallardo 5 months ago

That seems a bit strange. The user's name is fetched from GitHub using the Meteor package called accounts-github (so it's part of the MeteorJS core offering). Does you user have a first / last name defined at GitHub? I'm not really sure what would be displayed in case the GitHub profile does not have first or last name defined, but I would really expect e.g. the username to be displayed.
Reply Share

JGallardo

sebastiandahlgren 5 months ago

This is my repo https://github.com/JGallardo/t... and I logged in with my own github account. so expected to see my name. thank you.
Reply Share

sebastiandahlgren

Mod

JGallardo 5 months ago

You're missing some parts of the client.js above. Compare your client.js with mine here https://github.com/sebdah/mete.... Look specifically for the name variable.
1 Guest
5 months ago

Reply Share

Not sure what I missed here. in the beginning you tell us to remove all the files with the command rm chatapp.* but then I got this error: Your app is crashing. Here's the latest log. => Errors prevented startup: While building the application: client/client.html:21: bad formatting in HTML template => Your application has errors. Waiting for file change.
Reply Share

sebastiandahlgren

Mod

Guest 5 months ago

The removal of chatapp.* is not related to the error below. It's simply some syntactical error in your HTML file. Please double check with the client.html above or by checking our the example code from GitHub (https://github.com/sebdah/mete....
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 9/12

04/04/14
Reply Share

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

ay13

5 months ago

Just followed this tutorial and when you are logged in via github your name does not appear next to the sign out button and every time you type a message the name is 'null' instead of your name. I dont know if there was a change since you published this but wanted to bring to your attention. Meteor: 0.6.6.2 Meteorite: 0.6.15
Reply Share

Christoph Geschwind

ay13 5 months ago

That is the case if you don't set a public name on your profile. You can alternatively use the nickname from 'services.github.username'
Reply Share

Joe Cullin

Christoph Geschwind 2 months ago

I ran into the same issue, since I was using a newly-created github account. I then filled out my profile info in Github, but still had the same null display in the demo app. Then I realized that meteor seems to pull the profile details once and store them. So it was still re-using the null details that it had originally gotten from github. I wiped all my data (just used "meteor reset"), tried again with the same github account, and now my name displays correctly. Thanks for the great tutorial, Sebastian.
Reply Share

sebastiandahlgren

Mod

Joe Cullin 2 months ago

Ah, nice spotted Joe. Thanks for sharing!


Reply Share

sebastiandahlgren

Mod

ay13 5 months ago

Thanks for the input. It should work fine, but I will test it later today!
Reply Share

Eliezer

6 months ago

Is there a way as simple as adding Github login to add FB or Google login?


Reply Share

Eliezer

Eliezer 6 months ago

Found the answer here: http://docs.meteor.com/#accoun... Just as easy to add FB or Google login. (I was looking in the wrong place before).
Reply Share

sebastiandahlgren

Mod

Eliezer 6 months ago

Yeah, it's just as easy, as you found out. Although I want to see a good way to combine the user accounts in the background if you are using many of the services to authenticate your users.
Reply Share

Eliezer

6 months ago

Excellent tutorial. So so simple. (Both the tut and Meteor).


Reply Share

sebastiandahlgren

Mod

Eliezer 6 months ago

Thank you so much Eliezer! Glad you enjoyed it :)


Reply Share

ference

8 months ago

Excellent tutorial keeping it simple and relate-able with a tangible example. I finally have the gist of templates, handlebars, and collections. Muchas Gracias!
Reply Share

sebastiandahlgren

Mod

ference 8 months ago

Thank you Ference, glad that it came to use :)


Reply Share

sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/

10/12

04/04/14
Rich
9 months ago

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

Really great tutorial Sebastien, thanks! It has motivated me to go and learn as much as possible about Meteor as it seems so much more powerful than express for example, almost angular js power within a full blown framework. Very exciting. In fact, on to the next tutorial here as I've just seen the title is about routing. Perfect. Much appreciated. Just one bug in this tutorial is that the first time the input is added it has a 'name' instead of an 'id' and so the live update and keydown don't work unless you overwrite all your code as you go through which I didn't. Many thanks again Rich
Reply Share

sebastiandahlgren

Mod

Rich 9 months ago

Thanks for the comment Rich! I'm happy that you liked the tutorial. I have corrected the name/id issue now. Thanks for pointing it out!
Reply Share

ALSO ON SEBASTIAN DAHLGREN'S BLOG

WHAT'S THIS?

MongoDB pipeline for Scrapy - Sebastian Dahlgren


4 comments 9 months ago

Accessing GitHub user data in Meteor client


2 comments 5 months ago

s ebas t iandahlgren Thanks, Delbor! I have fixed the typo

s ebas t iandahlgren I write almost everything in Sublime Text

now :)

3. It's a pretty good tool. http://www.sublimetext.com/3 However, I do not

Using Celery to handle asynchronous tasks in Django


2 comments a year ago

Bootstrap3 with accounts support in MeteorJS


1 comment 3 months ago

s ebas t iandahlgren Thank you Stefan!

Manea E ugen why mrt add accounts-ui-bootstrap-3 is

adding :( #login-buttons {display: none;}

Subscribe

Add Disqus to your site

Tag Cloud
awk(1) aws(10) bash(2) bootstrap(1) celery(1) cloudformation(1) datatables(1) django(3) documentation(1) dynamodb(8) ebs(1) ec2(1) flask(1) git(2) github(1) javascript(5) jekyll(3) jquery(1) json(1) linux(1) markdown(1) meteorjs(5) mongodb(1) nodejs(1) octopress(1) paramiko(1) python(17) scrapy(1) ssh(1) Sublime(1) sublime(1) testing(1) travis-ci(1) windows(1) wtforms(1)

GitHub Repos
dynamic-dynamodb Dynamic DynamoDB provides auto scaling for AWS DynamoDB scrapy-mongodb MongoDB pipeline for Scrapy. This module supports both MongoDB in standalone setups and replica sets. This module will insert the items to MongoDB as soon as your spider finds data to extract. meteor-autocompletion Autocompletion using data from MeteorJS collections git-pylint-commit-hook
sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/ 11/12

04/04/14

Tutorial: Writing your first Meteor application - Sebastian Dahlgren

Git pre-commit hook to check Python code quality with pylint. You can use this hook to prohibit Python code with a bad syntax to be checked in. github-kanban meteor-chat-tutorial Example Meteor chat application supporting GitHub authentication. chartista.js JavaScript library for graphing watchtower Pythonic monitoring software markdown-docs markdown-docs is a documentation generator for projects using Markdown. The problem with having Markdown files spread around your project is that it is hard to get an overview of all your documentation. markdown-docs solves this by collecting all of your Markdown files into one browsable HTML hierarchy. yayson Yay! Beautiful JSON on the command line! password-generator Simple password generator module for Python python-inspector Used to track down which Python module and script that called your method / function. It will show you the exact Python file, line number and the actual line that made the call. The module is plug'n'playable, just import it and place a non-interfering hook in your code. elliot.js Near real time graph library, see web page or demo.html for examples relic AWS Cloud management tool written in Python 2.7 and Django gitstats scripture Scripture is a project for easy log management. The initial goal of the project is to simplify the logging from Python applications via a queue to AWS S3 or to file. Even though Python + S3/file logging is the initial step, we will implement more languages and backends as the project moves forward. beaver Booking system answering-robot Fooling around with Python and text searching @sebdah on GitHub Copyright 2014 - Sebastian Dahlgren - Powered by Octopress

sebastiandahlgren.se/2013/07/17/tutorial-writing-your-first-metor-application/

12/12

S-ar putea să vă placă și