Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
Guidelines to deploy a production MEAN Stack app.
I'm beginning with Full Stack development and I'm studying news topics every week. But, it's really common to find something new that should be used in the beginning of the project.
My first glance with this gave me this kind of checklist:
Node Express API.
MongoDB running.
Angular Connecting on API.
Them, I've started to find some online solutions like Heroku, Modulus and MongoLab for Heroku. Later, Grunt, Karma, GitHub, Travis CI and lots of 'understandings' that changed my code.
I don't have a 'checklist' and I think that I will do it using Grunt in the future. So, when I create a new app, my steps are the following:
TDD: Karma on Backend, Mocha on Frontend.*
Node Express API with JWT, Mongoose, ENV variables and connecting on DB.
MongoLab setted up.
Public code should be uglified and minified. And images should be sprites.*
Angular App connecting on API.
Git Push to 'Staging'.
Travis CI run tests.
Heroku upload the build if tests pass.
*I don't know, yet, how to do that.
Well, I'm not doing anything commercial yet, but I pretend to launch some solo applications soon. And this really annoys me. I've read about 10 technical books, finished dozens of online courses and followed a lot of tutorials in the past 6 months. All about MEAN related things, but I don't feel confident yet to deploy a full production app on the cloud.
I know that there may be some subjective answers, but that answers will be objective in the end, because I do know that we have a market standard. Someone may disagree with specific tool, but will use similar tool to accomplish the same goal. Someone may not use 100%, but will use 90% or so.
So, I want to know what should be done to get things done and running in the market standard?
Answer to on hold
As I've said, answers can't be too broad because there is a market standard. Someone may use some technologies to accomplish the same goal as someone who uses another technologies. I'm looking for guidelines that can be specific, I'm not looking for specific platforms. An full answer could include agile methods and software requirements while a simpler answer can include a text editor, a version control and a integration phase. If this is not enough, I'll read the rules again and forget about this question. Thanks, anyway.
Guidelines to deploy a production MEAN Stack app.
On top of this, I like to use yeoman with angular fullstack generator with a grunt based app
TDD: Mocha with chai on Backend, Karma with jasmine on Frontend.
Node Express API with JWT, Mongoose, ENV variables and connecting on DB. With babel if you want ECMAScript 2015. I like promise too, in my case, with bluebird.
MongoLab setted up. heroku addons:create mongolab
Angular App connecting on API. I choose ui-router, and edit a little bit angular code generated, for ex., change to controllerAs instead of use scope.
Public code should be concate, uglified and minified. And images should be sprites. This and much more do it by grunt build task to make a new dist folder with a prod like app.
Regarding test, grunt test will do the work. Or grunt test:server and grunt test:client separately.
generator heroku deploy yo angular-fullstack:heroku
BTW, I do like your question, same happends to me, maybe still happens. But I don't aim to answer your question, I just want to share my experience.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I just starting to learn AngularJS (Version 1.5.0) with Material Design for Angular - damn looks so freaking sweet :)
For building and deployment i use Gulp to automate my tasks.
So far so good, but while googling my way to more questions i found Frameworks like MEAN Stack, Meteor, lumX, Ionic and many many more.
Im wondering if its better to start with one of the Frameworks or if Gulp + AngularJS + Material Design for Angular is just fine.
Before i played a bit with Foundation for Apps which looks sweet too but i really like the look and feel from Material Design. Before i used Zurb Foundation for my Responsive Webdesign Projects but consider to jump to Material Design (which is based on FlexBox) even i miss support for some older browsers.
So im bit confused if im wasting time to learn Angular Version 1 now and better straight jump to Angular2 beta. My concern is that i may run in a lack of documentation and help. Also i have to learn more about ES6 (which is necessary in the next time anyway but makes it more hard to start). I guess lot of the stuff i will learn from Angular v1 i can later on use in Angular v2 anyway, or?
Another question for me as a Freelance Web Developer is if its not better to stick with Angular v1 for a while and learn more about it and later jump to Angular v2 when its out of beta. Because the goal is later to get into some projects and i can imagine that the companies stick with v1 for a while till v2 gets more stable.
For some starting projects i wanted to create a few Templates and Apps for my Wordpress Sites based on Angular with Material Design on a LAMP Enviroment. My Webspace sadly doesn't provide NOSQL databases yet so i guess i will keep coding on PHP / MySQL for a bit.
So in short, if you guys where in my place (experienced in Web Development but new to Angular) where would you start right now?
What Frameworks, Extensions and Tools do you recommend for Application Development with Angular?
From a business point of view when do you think will Angular2 be widely be used on live projects and is it better to start learning Angular v1 or go to v2?
Thanks for your replies.
Cheers bin2hex
Instead of giving a biased opinion, I'll just provide for you a few links of project structures that are being used currently that might serve you some guidance.
https://github.com/TheLarkInn/angular-starter-es6-webpack (This one is Shamelessly authored by me).
https://github.com/AngularClass/angular2-webpack-starter
https://github.com/AngularClass/NG6-starter (I took some pieces from this repo to create mine).
I'd recommend looking into writing Angular in the 'Component Style' (like the above links). It is a new way to start out using Angular 1/2 for the future and at the least you can use these repositories as thought-provoking brain-food for your own standards.
There are also other bundling platforms such as Browserify and JPSM, however Webpack provides a lot of awesome out of the box functionality that makes Angular development really awesome.
I don't know much about AngularJS V2, but I made some AngularJS V1 projects last year. Here tools I use to make my AngularsJS V1 projects:
As project generator:
Yeoman
As depedency manager (included in Yeoman angular generators):
Bower
As task runner (included in Yeoman angular generators):
Grunt
Set of prebuilt UI components based on AngularJS directives:
Angular Material
Angular Strap
Angular UI
Actually in my opinion is better use AngularJS V1 for production purpose.
The most important thing is something you haven't considered. All that matters is that you get your html/css/javascript to the browser. Everything in-between is trivial and leg work.
Now that Angular belongs to google, they have started very rapid development to support developers of all sorts. Either way it's going to be very stable, and if you keep your code modulare and clean, it's easy to transfer. I would say just make something, make what you need, and keep working on it over time and as the framework evolves, and change your code to match. If you keep waiting for the next big thing nothing will get done, so it's better to choose a framework and stick to it.
I word my answer like this because your question is very subjective, and you should experiment and find an answer based on your needs. As a web developer, you have to learn many different languages anyway, so start with where you think is best, and grow as you figure out what you need.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I wanted to get into full-stack JS development. I was about to start with the usual MEAN stack (MeanJS). I stumbled upon these articles:
http://wiki.dandascalescu.com/essays/why_meteor http://wiki.dandascalescu.com/essays/meteor_js_vs_the_mean_stack/
That are convincing. I am really confused how to get started. What are the pros and cons of using a frontend-backend-database framework like meteor over the conventional MEAN?
Due to the nature of the question, I'll try to answer it broadly. After using the MEAN stack for over 2 years and Meteor for a few months, I much prefer Meteor.
If you're just starting, Meteor has amazingly simple conventions. Try the angular-meteor tutorial to get started. Meteor offers one line installs, perhaps most notably including user authentication. You get the power of observables & latency compensation as a default.
The MEAN stack requires much more configuration and setup, as well as a strong developer foundation in Node.js. You have to do the work, but it may be worth it to understand the full stack. Much of what Express handles in dozens of lines of code can be handled in one line of code in Meteor.
Having said that, it is sometimes difficult to hack together Angular with Meteor. For example, I'm currently having difficulty using the new-angular-router with overlapping Meteor conventions. Consider MEAN has a much longer trusted history and wider support.
I think you are going to get a lot of opinionated answers, but to be honest every user is different and you won't really know until you try each out. I took a look at all the tutorials that were available for the ones that interested me.
ReactJs:
I was never a fan of reactjs, until the 3rd time I went through the tutorial, and thought this is kind of easy to get the hang of :
http://facebook.github.io/react/docs/tutorial.html
ReactJs is a framework by facebook and is doing pretty well. It works by updating the DOM and the syntax reminds me of that of programming a game. It uses states and props.
AngularJS:
I didn't prefer angular js as much because I didn't really give it much of a try (atleast more than twice). I was hypocritical about it. I thought of it as too much to remember and the tutorial I tried with it was this one :
https://thinkster.io/mean-stack-tutorial/
I think it is a great tutorial to get you into the stack. I can't say much about it but Angular 2.0 is coming out soon.
MeteorJS:
I never gave it a full go, but it looked interesting and from what I read, it was mobile friendly and great for single page app. Recently I've been following this tutorial:
https://scotch.io/tutorials/building-a-slack-clone-in-meteor-js-getting-started.
This is the next project I'm going to try to do in Reactjs(in meteor first).
I think its all really preference and you should just give all of it whirl. Some might be better at some functionality then others, some may be more syntax friendly, some may just be easier to use. All depends on the type of person you are.
Since Meteor is built upon NodeJS, it may be obvious that it was created to enhance development over the MEAN stack.
Meteor relieves the pain of writing hundreds of lines of code to accomplish a simple real time app, for example.
So if your question begins with "I wanted to get into full-stack JS development...", I strongly recommend you Meteor over MEAN.
At the end of the day:
"Meteor will be the JavaScript framework that will rule them all"
After having been convinced to learn and use Angular.js, I was going to start a concrete web UI application so as to launch the learning wheel of experience. ( The app is going to be some kind of personal planning, to do list, reminder, pomodoro technique oriented, and so on...)
One of the tutorial videos I have seen, by the author of Angular, is about best practices. And one of the best practices is to start with the angular-seed project.
That is what I was going to do, but after googling a little, there are already at least two other projects that claim to be the good starting point:
angular-enterprise-seed
angular-sprout
I'm beginner, but I like to invest in the long term. Should I worry about using something else than angular-seed ? I feel like it's too early to ask myself this question, but if there are already two other projects, maybe there are some good reasons.
I've found that though many people use various seed projects, the easiest & most consistent starting point for an angular app (or any javascript web app) is Yeoman.
This app is a scaffolding tool that allows you to specify generators which will build the up the kernel of your application, complete with whatever libraries you desire (via bower) and a working grunt build file (most generators come stock with a build task, server task for live editing, and testing task)
Though an app like this is necessarily opinionated, the scaffolding it produces is still very generic.
example:
mkdir my-app
cd my-app
npm install generator-angular
npm install generator-karma
yo angular
They all have different merits so it depends on what you are looking to do. I wrote angular-enterprise-seed and can speak to its relative merits.
It is server-agnostic. This is important since a core tenet of AngularJS, and one of many things that make it attractive, is that it follows the Client MVC paradigm. This means it is entirely decoupled from any and all server technologies. Many existing seeds tie AngularJS to server technologies, such as angular-sprout (NodeJS) or grilled-feta (Google App Engine/Java). In the case of the aforementioned projects, if NodeJS and/or Java environments aren't already on your system, then you will have to go through several hoops just to see the seed come up. This can be alienating to PHP and Python developers, which results in limiting the project's community.
Up and running in seconds. Because it is server-agnostic, it can be run in any container (heck the filesystem for that matter). Suggested method is running "python -m SimpleHTTPServer" from the root directory -- this comes native on Mac and Linux so there are no additional steps.
Live preview. It's cheap to check on status of the project because a live version is always hosted on github. Because it's server agnostic, this is automatically done by copying master to the gh-pages branch from a cron job.
Rich styling. It includes Twitter Bootstrap and custom/buildable LESS out of the box, along with Angular-UI, Angular-NG, fonts, and a myriad of other tools to provide rich styling and responsiveness capabilities.
Widgets. Like Angular-Seed and Angular-Sprout, Angular-Enterprise-Seed exemplifies "best practice" layout, routing, etc. But it also provides a host of pre-built components that can be taken off the shelf and immediately reused. This is a bit difficult to do as it can require the convergence of several technologies. For example, to create the grid example, I combined angular-ui, angular-ng, angular-js, and jquery styling. There are component examples for modals, pagination, alerts, grids, and more.
Angular-seed is great as an academic exercise if you want to learn how the pieces work, but it will leave you longing for a more substantial jump-off point.
I haven't used angular-sprout so I can't speak to its merits. Maybe there is some room to merge angular-sprout and angular-enterprise-seed?
I recognize that this is an older question, but it seems to have a fair number of views, so it makes sense to recommend what has recently become a very popular alternative to both Yeoman and angular-seed: ng-boilerplate. ng-boilerplate differs from angular-seed in that it's designed from the ground up for large production web apps, and therefore is a better solution than angular-seed in my opinion.
To explain the differences between the Yeoman and ng-boilerplate methods of app kickstarting, I'll quote ngbp's creator, Josh D. Miller:
Yeoman is awesome. But the problem I have with the generators for AngularJS is that they package by layer rather than by feature. If we store all controllers in a "controllers" folder and all services in a "services" folder, etc., and all our tests someplace else entirely, it can be quite challenging to reuse our components.
This is also pretty good discussion by Josh on the Yeoman angular-generator issues forum, that goes more in depth regarding the setup of ng-boilerplate vs. yeoman.
Just to be clear, Yeoman is not a generator. Yeoman is a format/system for making generators. There are several generators made with Yeoman that you can use to generate an AngularJS application. People often mistakenly refer to one or another of them as "the" Yeoman generator. But there are many. Confused yet? Yeoman isn't the only generator making system. Brunch is another one.
To answer your question, here is a very comprehensive side-by-side comparison of many AngularJS generators one can use to start making a web application with AngularJS. Currently, it contains over 200 different aspects of these things. One of them is file organization style. So you can easily see which ones organize the files by feature if that's important to you. It is to me.
There are still several of these left to be added. The two mentioned in this thread are new to me. But this comparison should give you a good idea of the options and how they compare. It's editable too, so if any of you are experts in any of these things, feel free to share what you know.
God only knows why people keep making more and more of these things instead of just helping to improve the existing ones. If you have any guesses, I would love to have that mystery solved.
EDIT: to gain access to the doc I ask that you either complete a questionnaire to share your knowledge of something or lobby the experts to do so.
Go here to do a questionnaire:
http://www.dancancro.com/technology-questionnaires/
I like using Yeoman as well. Try these to get a good scaffold:
npm install -g generator-angular # install generator
yo angular # scaffold out a AngularJS project
bower install angular-ui # install a dependency for your project from Bower
grunt test # test your app
grunt server # preview your app
grunt # build the application for deployment
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
To create a web application on Google's AppEngine I was looking for a framework. During my research I came across Groovy and Grails. I'm a Java kind of guy so I prefer something Java-like above Python frameworks (like Django). So I scraped together some information and decided that Groovy and Grails are both to my liking.
While trying to dig deeper into Grails in combination with AppEngine I found that the Grails GAE Plugin hasn't been updaten in two years and on the website it says it "works with the latest Grails 1.3 RC2 release and above"[3]. The newest version of Grails (as of today) is 2.1.1[4]. So I'm wondering if the plugin is still maintained. Of course, the plugin could be so good, that it doesn't need maintenance - but in my experience this really looks like the plugin is dead.
So what I would like to know if there are people out there currently working with (or have recently worked with) a recent version of Grails on AppEngine and whether it is a pain in the... fingertip or a solid framework.
If you believe that Grails on App-Engine is dead I would really like to hear about alternatives, so please let me know if you used a framework on AppEngine, what you used and how the experience was.
To be a bit more precise on my requirements; a framework I would want to use should
be Java-like or Java
run on Google AppEngine
have some degree of scaffolding mechanism (I'm really lazy when it comes to writing code that could easily be able to generate)
take away the pain of database handling with SQL by providing a solid NoSQL persistence layer
Before you link any other Stackoverflow posts in your answers, please be aware that I have done my research on stackoverflow before asking this, sadly I found no up-to-date information - of course I could have overlooked something, but please don't link articles older than a year, it doesn't help here.
Sorry for the long text, shorten if you like and deem it necessary.
Thank you in advance for your helpful answers.
I tried out Grails on App Engine using the plugin mentioned above. I wrote a series of blog postings about it. I don't think the Grails App Engine plugin is actively maintained anymore.
I personally switched to Gaelyk which is a lightweight web toolkit for App Engine written in Groovy. It should fulfill all your requirements.
The App Engine plugin for Grails has not been updated for 2.X. The announcement from Graem Rocher can be found here
Grails currently throws a error when you attempt to run-app against 2.1.1. An issue concerning this has been raised here
I tried Grails with Google App Engine long time ago. As in previous answers was stated - there is no current version of the plugin. However if this is an option for you to consider, try CloudFoundry service. It's fully compatible with Grails.
Update 2017 : There is a new tutorial for Grails 3.2.9
http://guides.grails.org/grails-google-cloud/guide/index.html
Consider the Play Framework a light weight framework for Web Applications.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed last month.
Improve this question
I'm curious to know how other developers deal with versioning of web-apps and deploying different versions. The fundamental problem is that someone might be using your web-app when you deploy a new version, at which point the Javascript etc they have not he client-side is out of date.
Versioning the media on the client-side is easy enough, but if you version that you also need to version your business logic and the database, which is where things could get messy...
So I see a couple of ways of dealing with this:
Display a "Upgrading" notice on the site when deploying a new version.
Version tag client-side and reject any submissions to the new version from old client-side sources. Fair enough, but it doesn't really go hand in hand with continuous deployment.
Continuous DB migration - running multiple version of the app at the same time (migrating users to the new version when possible). This would need any updates on the old DB schema to be "forward ported" to the new schema. Seems the most attractive for deployment, but also could be horribly complex.
Somewhere in the middle of all three.
I should note that I know worrying about this kind of thing is beyond the needs of most apps, but I was thinking about it and I'm curious to know how others deal with it.
This is really an amazing question.
Most important and effective tool is Git that is currently used for versioning tool though there are many tools but I found git the most efficient as it tracks the working of every employee.We can also took suggestions from public contributors for testing purpose. We can make different branches from main that help us to keep our code present in all versions with or without new features. And auto deployment is not a positive step you should test that several times and use different test cases for that.
There are plenty of tools available for your exact requirements. Like Phing, and Phingistrano. Git also makes it simple but that wont display offline notice and DB deployment . I recommend dont go for auto deployment on live server, use auto deployment on staging and manual deployment on live. Also look for continuous integration on google and try teamcity