This is a basic boilerplate for the MEAN stack (MongoDB, Express, AngularJS and Node.js) on IBM Cloud.
This application uses the IBM Cloud Databases for MongoDB service and Node.js runtime on IBM Cloud.
The code and detailed steps are discussed in the IBM Cloud solution tutorial titled Modern web application using MEAN stack.
- MVC project structure
- Create, edit and delete user accounts
- Authentication with username/password
- Protected routes that can only be accessed by authenticated users
- Bootstrap CSS framework & Cosmo theme
- HTTPS built-in if deployed to IBM Cloud
- Mongoose for MongoDB interactions.
- PassportJS for authentication, with over 300 authentication strategies to pick from.
- Clone or download this repo onto your machine.
- Install application requirements if not done so already.
- Open application directory in your terminal and run
npm install
- If you don't have an account, create a free one here.
- Login to your account via the command line:
ibmcloud login
- Target your account ORG and SPACE
ibmcloud target --cf
- Create the instance of IBM Cloud Databases for MongoDB on IBM Cloud:
ibmcloud cf create-service databases-for-mongodb standard mean-starter-mongodb
- Rename
.env.example
file to.env
and runibmcloud cf service-key mean-starter-mongodb "Service credentials-1"
for MONGODB_URL and CERTIFICATE_BASE64. Choose your own SESSION_SECRET. - Run
node server.js
to start your app - Open a browser to the link provided in the terminal prompt to view your app
Note that the code assumes a secured connection to MongoDB using SSL and a certificate. This way you can run the app locally but connect to IBM Cloud Databases for MongoDB.
An alternative way of running locally is using the provided Dockerfile
.
- Install docker on your machine and build the docker image
docker build . -t mean-stack:v1.0.0
- Run the app locally
docker run -p 6020:6020 -ti mean-stack:v1.0.0
Option 1 (launch this app directly from this repo):
Option 2 (deploy from your local machine):
- Clone or download this repo onto your machine.
- Open a terminal prompt to the directory of your application.
- If you don't have an account, create a free one here.
- Login to your account via the command line:
ibmcloud login
- Target your account ORG and SPACE
ibmcloud target --cf
- Create the instance of IBM Cloud Databases for MongoDB on IBM Cloud:
ibmcloud cf create-service databases-for-mongodb standard mean-starter-mongodb
- Push your app to IBM Cloud with
ibmcloud cf push
- Done, the app should be looking like:
Create a GitHub issue for questions or problems occurs using this demo.
File | Description |
---|---|
manifest.yml | File that defines deployment paramaters. More info here |
.env.example | Set custom environment variables for your application. This is the proper way to store credentials and other sensitive values. |
server.js | Main server file that the Node.js runtime uses. It contains all the server logic. |
/server | Folder for files used by the Node.js server |
/server/models/user.model.js | Model for storing users in MongoDB |
/public | Folder for files delivered to users, such as html and css files |
/public/js/app.js | Angular application for manipulating and rendering data in browser |
- MongoDB stores user account information and persists sessions (so that a server crash does not log out all users.)
- Express functions Node.js middleware to handle all HTTP requests and routing.
- Angular handles HTML templating and data manipulation.
- Node.js is the runtime for the application.
There is also generous commenting throughout the application which helps explain critical parts of the application.
Please create a pull request with your desired changes.
The primary source of debugging information for your app is the logs. To see them, run the following Cloud Foundry command using the IBM Cloud CLI:
$ ibmcloud cf logs <application-name> --recent
If you are not sure what your application name is, use this command to print your application name(s):
$ ibmcloud cf apps
For more detailed information on troubleshooting your application, see the Troubleshooting section in the documentation.
See LICENSE.MD for license information.