mean stack web front end developer professional mean stack web developer mean stack and creative web designer based in tunisia. specialise in creative standards compliant web design and resume solution for your business. Web Design, mean stack web à Tunis, création de sites Internet. stratégie digitale, mean stack, mean stack web, responsive web design et SEO,Web Designer, web mean stack resume;full stack freelance ;mean stack developer; mean stack tunisie;developpeur Angularjs tunisie Web Design, agence web à Tunis, est leader de la création de sites Internet. stratégie digitale, webdesign, mean stack web, responsive web design et SEO.

Creativity is a drug I cannot live without
web freelance tunisia
Mean stack developer

I'm Mohamed Nasr

Mean stack developer & web designer

MEAN is a collection of JavaScript-based technologies — MongoDB, Express.js, AngularJS, and Node.js — used to develop web applications. From the client and server sides to databases, MEAN is a full-stack development toolkit. Play through the following five courses to become a MEAN stack developer and earn a new badge!

My portoflio   download CV

I'ts all about Mean stack


MongoDB Server MongoDB Server is an open-source, document database designed for ease of development and scaling.

MongoDB Atlas MongoDB Atlas is a database as a service created by the experts who design and engineer MongoDB.

MongoDB Cloud Manager MongoDB Cloud Manager is a hosted operations management solution for MongoDB.

MongoDB Ops Manager MongoDB Ops Manager is an enterprise operations management solution for MongoDB.

MongoDB Drivers MongoDB Drivers allow you to work with MongoDB databases from your favorite programming languages.

MongoDB Compass MongoDB Compass is a visual data exploration and analysis tool.

MongoDB Spark Connector MongoDB Connector for Spark provides integration between MongoDB and Apache Spark.

MongoDB BI Connector MongoDB Connector for Business Intelligence connects business intelligence tools to your MongoDB databases


Why AngularJS? HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop. Alternatives

Other frameworks deal with HTML’s shortcomings by either abstracting away HTML, CSS, and/or JavaScript or by providing an imperative way for manipulating the DOM. Neither of these address the root problem that HTML was not designed for dynamic views. Extensibility

AngularJS is a toolset for building the framework most suited to your application development. It is fully extensible and works well with other libraries. Every feature can be modified or replaced to suit your unique development workflow and feature needs. Read on to find out how.


Web Applications Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.

APIs With a myriad of HTTP utility methods and middleware at your disposal, creating a robust API is quick and easy.

Performance Express provides a thin layer of fundamental web application features, without obscuring Node.js features that you know and love.

Frameworks Many popular frameworks are based on Express.

Node js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

It's all about Mean stack

As a first I will mention one of the oldest implementations — It used to be quite nice boilerplate of all the four main ingredients of the stack. It was quite bare bones, with only a Jade html templating for server side and couple of Mocha tests thrown in. Folder structure and naming convention was maybe not the best, but it was there, and it was usable. So, I went on happily using this wonderful stack, and as it was just a boilerplate, there was no ongoing feedback from the — all the changes I noticed only when I wanted to start a next project. Suddenly I could not understand anymore how server parts of Mean are connected. There were lot more files involved now and no more crystal clear link between server.js, routes.js, express.js and config.js. Now there were some specific system modules, some things included automatically, some not. from 25+ npm packages, node_modules folder had grown to 55+. Now it also has better testing tools and good set of gulp tasks to ease development. How it all worked together — I did not know anymore. But it worked and worked quite well for its intended purpose. But it felt like has become lot more opinionated, and also they have made lot of decisions for me already — how to define menus, how to handle users, how to package different parts of code. How it all should be run together, how it should be tested. And also a bunch of custom full-stack packages built for It was just too much for me, from clean well tested boilerplate at start it had become almost a framework. Framework that adds all the complexity of framework, but not really a comparable amount of added value. I tried, but I just could’t fall in love with this stack-turned-framework. Now when looking at months later, looks like it has been growing in same direction. More framework, more magic, more packages, less clarity.


Second big contender of Mean space is Mean.js. Fork of authored by one of original creators. It was forked around the time when introduced packages and modules, so it contains same of that unfortunate complexity as well. It is just as complex as when it comes to server side code. And it also includes almost the same amount of npm packages. However, it feels a lot less pushy on what should be used and how. It comes as a nice Yeoman generator, that is kind enough to ask if you at least some preferences for Angular, even if not much else. Also it comes with set of Grunt tasks, which is handy. Overall, this is not bad place to start Mean journey, there will be some stuff harder to understand in server side, but as long as you will not deviate from path set by Mean.js authors, that should not be a problem. All the setup works, only, same problem as for — more it becomes a framework, less obvious the code is, the more dependent it is on the size of community and amount of documentation.

MEAN Boilerplate

This is our third participant in today's mean development list. Compared to previous two, MEAN Boilerplate maintains its boilerplate nature of it directly in its name. There are no framework motive beneath, it is really just a boilerplate. On a server side, it has only 20+ npm packages, and on client side about the same amount of bower components as and Mean.js. There are some more optimizations, fixes and presets for client side, but not too many. However, this boilerplate is not configurable, and if you take it, you will also have to agree with Jade instead of Html, CoffeeScript instead of Javascript, Less instead of CSS and YAML instead of pure Javascript for configurations. This particular part was a biggest downside for me, as I do not want to move to Coffeescript right now. And also YAML feels like a redundant supplement to Mean stack. Boilerplate does not have Gulp or Grunt scripts, however it has hot code reload with nodemon preconfigured. Also there is a ruby dependency for scheduler, which could be removed rather easily if not used. Compared to other boilerplates, there are no good usage examples included, when starting up server it shows only a logo with one input field showing off basic Angular code. No Articles, Users or To-do list to see all MVC in action. Overall — good choice if you are experienced Mean stack user and also fond of Coffeescript. If not — still useful to at least peak around the code, probably there are some goodies for you to find and pick up. However, I would not suggest this as a starting point into Mean journey.

AngularJS Full-Stack generator

It does not have anything resembling logo, so I will omit that. It is featuring Angular proudly in its name, and rest of the Mean stack applications only in description. In essence it is advanced Yeoman generator for Mean stack. Compared to Mean.js generator, this lets you pick and choose almost every part of the stack. CSS preprocesors, JavaScript vs CoffeeScript, Html vs Jade and Angular routers. As a bonus, most common oAuth integrations and integration. Grunt setup is advanced with linting, testing, minifying, uglyfying and separate dist folder. All well prepared to do good coding and deployment practices right from the start. There are also some rather full usage examples included, for Users and for Things in main page. Examples let you immediately see how to use Angular, Node and Mongo in conjunction both in client and server side as well as presents proposed naming conventions, which are quite good as well. Right now it seems that generated Html version contains full example, while Jade version is missing interactive part. I have reported that here. In general development of this generator seems active, issues are being answered and new code is being commited. This is good choice for newcomer to Mean stack, as well as to seasoned developer. It delivers exactly what is required, and lets you choose alternatives wherever needed. No extra magic code, no extra libraries. And even if it feels like there are no extra libraries, it still manages to bring hefty 75 npm modules to the battle — the most among today's contenders.

I'ts all about Mean stack

What Meteor gives you for free

Meteor gives you a lot more out of the box. The client and the server communicate data updates seamlessly and automatically, without you having to write any boilerplate data sync code

The MEAN stack is just MongoDB, Express, Angular and Node.js bundled together, but there's nothing seamless about it. You have to do all the wiring-up yourself between MongoDB and Node.js, between Express and Angular, create REST endpoints and consume them etc. - all this just to get a basic web app going, without any features that Meteor gives you for free: hot code reload, mobile development (web, Android and iOS apps from the same code base), reactive templates that update automatically when data on the server changes (try to write code for that manually and make it run correctly over intermittent network connections, and make sure it's secure), session management, packages that can install components both on the server and on the client (e.g. server-side autocomplete - you won't find this anywhere else; Twitter's Typeahead and the like are client-only solutions).

With the MEAN stack, when you make a REST request for a table/collection, you're essentially saying "Send me the results of this query". With Meteor, you subscribe to the results of that query, and any newly created or modified documents that matched will be automatically sent to the client over a fast WebSocket connection.

Thanks to its isomorphic APIs (the same methods work on the client and the server, e.g., Meteor makes it easier for one developer to build an entire full-stack app, or for a team to have a better understanding of the code base across the project. The MEAN stack adds to the separation between the server and the client due to different APIs being used.

Which is easier to learn?

But isn't that a lot to take in all at once? Actually, not. Thanks to Meteor's focus on simplicity (one of its Seven core principles), Meteor in its entirety is far easier to learn than Angular alone. Many have found Angular to be a pain to learn and ended up frustrated - see An Unconventional Review of AngularJS: " Angular is... band-aids over self-inflicted wounds" You can get the basics on Meteor in just one hour - head over to Meteor's documentation is also very well-written. By comparison, the documentation for the stack is in such a shape that today I went through the Packages section and found an embarrassing number of typos in just a few minutes, all within two pages of the documentation. Packages seem to have no documentation, either. And not to discredit the authors, but you can't easily find who the core team is - the link in Credits is broken. The documentation for the alternative, the MEAN.JS fork, starts with,"After downloading the source code go over the official documentation of MongoDB, ExpressJS, AngularJS, and Node.js, then continue with the MEAN.JS Documentation." Given that it really takes only one hour to make something useful with Meteor, from scratch, it's worth simply giving it a try first, to have a reference before starting to learn or MEAN.JS. Of course, you'll still need to learn MongoDB well for a production app, but Meteor doesn't send you there to get started. The 80% most common cases of using Mongo are already explained in the Meteor documentation.


Meteor also saves you from having to research what libraries to use for the various layers of the application (transport, data synchronization, API, security, CRUD operations, templating etc.). All the pieces that make up Meteor function together very well. By contrast, when considering the MEAN stack, you start with the choice between and MEAN.JS. The short story is that the main contributor, Amos Haviv, Forked out of an open-source conflict in January 2014. You can read more about the story and differences on StackOverflow. This has split the community into ~6k GitHub stars for .io and ~2k for .js. Meteor by comparison has 23,000 GitHub stars. On StackOverflow, right now there are over 10,000 questions tagged meteor, and about 1,100 total tagged mean, and meanjs More more details on the community size, see the Community section in Why Meteor.

When not to use Meteor

As with any tool, Meteor is not always the right solution. I've expanded on when not to use Meteor in the corresponding section of my Why Meteor article (e.g. when you're building a client-only app, or when you require interfacing with databases other than MongoDB). To compare apples to apples, have in mind that the MEAN stack includes a server and MongoDB. So let's see when a MEAN stack might be a better choice for a new web application: If you already have most of the pieces of your app written using the MEAN stack. Meteor provides many extra niceties, but make sure they justify the migration cost. If you're only building a web service/REST API and don't need any client functionality. Meteor is a client-server platform. (Side note: if you're considering REST, consider GraphQL instead) If you don't really need your web app to be real-time. There is a RAM and CPU cost for providing real-time data sync between the server and subscribed clients, even though one $5/mo low-specs DigitalOcean server can handle a basic Meteor app. If you're building a website, rather than a web application, and it's more important to deliver the first page as fast as possible, rather than be able to prototype or develop very fast If you already need to scale your app to millions of users right now - though with Meteor 1.3, two new developments will help in this area: The Galaxy scalable hosting platform Meteor's Livedata system now supports tunable queries to help scale large apps.

I'ts all about Mean stack

Set up your environment

If you’re using a Windows machine, you have a couple of extra steps to do before you start: install Python 2.7.x install Microsoft Visual Studio C++ 2012 Express On Windows/Mac/Other: install Node.js install Git You can read more about Git in my post over here: Do you git it? Open source tips and tricks When downloading the software above, get the most recent versions for your operating system and follow the prompts to do the installations. The default settings will work just fine. Once you’ve installed the software above, you’re set to use almost any Node.js based code.

Get a good IDE for web development

IDE stands for integrated development environment. IDE software provides lots of tools in one place. Most developers that I know use: Webstorm or Sublime text. I use Webstorm, because I’m familiar with it, and it’s easier for me to jump across to Android Studio to do Android development, as they are both based on IntelliJ IDEA. You should use whatever you’re comfortable with.

Start the global MEAN Stack installation

We begin the installation process by using Node.js to install a few key programs globally on your computer. Installing something globally means that you install it once, and you can use it for all of your apps. Quick Tip: The installation process for the MEAN Stack uses the command line (e.g. command prompt, powershell, xcode). If you’re running Windows, then you need to start your command line tool as an administrator. To do this, find the icon for the application that you want to run, right click on it and select “Run as administrator”. Now that we’ve got the command line open. Let the installations begin! We’ll use npm – Node’s package manager to install a set of packages. Look for for all the references of npm below. Quick Tip: When you see the “$” icon next to the code below – the “$” sign is a universal way to indicate that a line of code should go into your command line program. So, don’t copy the $ symbol, but do type (or copy) the text that comes after it into your command line program (command prompt, powershell, xcode). Install Bower globally: Bower is another package manager. It can be used when you want to add packages of code to your web app, Bower can help you quickly install the code, and help you upgrade to newer versions. Why do we need two package managers? At a high level, npm (Node’s package manager) is used for node and server side packages, whereas Bower is often used for client side packages. $ npm install -g bower Install Grunt globally: Grunt helps you automate repetitive tasks. Grunt comes in lots of different varieties, and its job is to make your job easier. $ npm install -g grunt-cli Install Yo globally: Yo is a scaffolding tool. It can be used to create and set-up your app by asking you questions, taking your input and pre-filling parts of your app based on your preferences. It can also help you to quickly create and extend parts of your app. $ npm install -g yo What Flavours of MEAN can I get? There are quite a few variations of the MEAN Stack on GitHub. The two key repos are: Mean.js I think that MEAN.JS is a good place to start for beginners, especially to leverage Yo. Install the MEAN.JS generator: The MEAN.js generator is the MEAN based code that will be used by Yo to help you pre-populate parts of your app. $ npm install -g generator-meanjs

Create your MEAN App

Now we’ll use Yo and tell it to take the mean.js generator, and create a new app. The next set of installations will all be done ‘locally’ – within the folder of our new app. Almost there! Create and Navigate into the directory where you want to create your project. For example: if I wanted to set up my MEAN app in a new folder called myMEANProject, I would do the following: $ cd C:\Users\Jane $ mkdir myMEANProject $ cd C:\Users\Jane\myMEANProject Run the MeanJS Generator The last step is to generate a new MEAN app using Yo and the MEAN generator that we installed above: $ yo meanjs This tells ‘Yo’ to use the ‘meanjs generator’ to ask you a set of questions – answer each question and hit the Enter key to move onto the next question. Once you get to the end, the relevant dependencies (the packages of code that your app will use) for the MEAN stack will be installed. Grab some hot chocolate (or a coffee, vodka, wine, beer – however you roll). This will take a few minutes. Help! It didn’t work! If you get to the end and the process fails, then do the following: Only if the install fails, try one of these: 1. $ npm cache clean 2. $ npm update 3. $ bower update Leave your command line tool open. You’ll need it again in a few minutes. If you’re riding high on the sweet smell of hot chocolate, then please take the crease, you’re about to smash a six. Set up a MongoDB database: We’re going to set up a free sandbox account. Go to Compose or Mongolab and log-in or register for a new account. If you’re using Compose, I’ve updated the steps to creating a sandbox environment using Compose here. Why did we just create a Database? Because we need the connection details for our MEAN app to connect to it and save data.