EncircledMe is a project I started in the summer of 2015 with the purpose of teaching myself how to use the MEAN stack. The idea of the project is that people can create their own profiles that look like my website and they can customise it with their own picture (obviously) and they can also change the links on the page (the logos too). The initial idea works, but a lot of refining needs to be done. I only work on the project in my free time (so not that much), but you’re welcome to have a look at the code and play with it… maybe send some pull requests into my direction: GitHub
As I said in the beginning, I started EncircledMe because I wanted to learn how to use the technologies in the MEAN stack. This bundle includes MongoDB as the database (non-relational), ExpressJs for the server part (API), AngularJs for the client side and NodeJS for the backend server.
The structure of the project is based on a tutorial by Travis Tidwell I saw before starting the project (you can find that here). It has two parts, the server and the client. The server acts like an API and it can sit separately from the user code. For example you can have the server (NodeJS, ExpressJS) sitting at http://api.encircled.me and the client(AngularJS) code sitting at http://encircled.me . On the client side I use a module called Restangular that makes it easier to direct all your REST calls to the server. You can just set a base url (your API address) and then create factories to direct your calls to a certain route in the API. Definitely check out this module, it’s really awesome!
The user authentication is done through session tokens, but I plan to introduce single sign-on at some point so users can authenticate using their google, facebook, etc.
You can generate a a project with the same structure by installing a Node module I wrote called mean-gen. Install it with:
npm install -g mean-gen
Even though they are coming slow, I planned a lot of things for improvements. Most of them can be found on my GitHub. If you like the idea of the project, or just want to get your head around this kind of architecture, let me know, maybe we can develop this together.
Feel free to follow the project on GitHub if you want to be notified about future changes to the codebase.