develop branch for the latest and greatest
Check theMore info on that is happening in the develop branch can be found here
loopback-angular-admin
The goal is to have a starter project which can be used to quickly build an API with a frontend that are easily extended.
This software is not ready for production! It is still being developed and it will change in the future.
![Gitter](https://badges.gitter.im/Join Chat.svg)
Try it now!
Deploy an instance on your Heroku account to play around with it!
An alternative way to get it running at Heroku is to install the Heroku Toolbelt and follow these steps:
git clone https://github.com/beeman/loopback-angular-admin.git my-project
cd my-project
heroku apps:create my-project
git push heroku master
Users
After an installation the following users are created:
- Admin user: Email:
admin@admin.com
, password:admin
- Regular user: Email:
user@user.com
:, passworduser
Please note, at this moment there is no difference in permissions for admin users or regular users. This needs to change in the future!
Features and implemented projects
- A LoopBack REST API with authentication enabled built on the LoopBack Generator
- A GUI built with AngularJS based on the Angular Generator
- Angular UI-Router
- JSON-based forms by angular-formly
- Notifications by angular-toasty
- File upload with LoopBack storage services
- Admin template powered by almasaeed2010/AdminLTE
- Markdown Editor with live preview with angular-markdown-editor
- Bunch of useful filters for AngularJS: a8m/angular-filter
- t4t5/sweetalert provided by oitozero/ngSweetAlert
- Automatically growing textarea's by monospaced/angular-elastic
- Social authentication with LoopBack passport
- Multi-language support by rubenv/angular-gettext
- User management
- Loading indicators chieffancypants/angular-loading-bar?
TODO:
- Permissions on user actions (non-admins cannot access advanced functions)
- permissions on content items (non-admins can only edit own content, etc)
- Detect if API is online HubSpot/offline?
- Map API roles to Narzerus/angular-permission
- Add tests
- Add Dockerfile
- Add Vagrantfile
Screenshots
Dashboard
Markdown Editor
SweetAlert
File uploads
Events
Installation
Dependencies
Installation depends on node
/npm
with grunt
and bower
installed globally.
$ npm install -g bower grunt-cli
issue if this one does not work!)
The one-liner install (please create angit clone https://github.com/beeman/loopback-angular-admin.git && cd loopback-angular-admin && npm install && grunt build && grunt serve
The steps above:
Checkout the project:
git clone https://github.com/beeman/loopback-angular-admin.git
Install the Node packages:
npm install
Run grunt build:
grunt build
Run grunt serve to start the API and frontend:
grunt serve
Running
The project is separated in a server and a client.
Server
To run the server you issue the command:
npm start
Or to run it with nodemon (needs nodemon
installed globally). This will
automatically restart the server when you change its code:
npm run dev
The command grunt serve
explained below wil automatically start the API.
Client
Rebuild the lb-services.js file with the correct API_URL
for development.
API_URL=http://0.0.0.0:3000/api grunt
To run the client you issue the command. This will also start the API.
grunt serve
It will open the project in your default browser with livereload enabled. This will take care of reloading the page when you change your code.
Connect to a database
You can specify the URL to the MongoDB database you want to use with the MONGODB_URL
environment variable.
MONGODB_URL="mongodb://localhost:27017/loopback-angular-admin" npm start
Set INITDB
to true if you want to load the initial dataset, which creates the admin user. The memory database (default) does this automatically.
INITDB=true MONGODB_URL="mongodb://localhost:27017/loopback-angular-admin" npm start
This also works with the free hosted MongoDB instances at compose.io and mongolab.com!
API Security
WARNING: Most models don't have an ACL configured. This means that anyone with access to the API can edit most of it's content.
To access models with access control enable you need an AccessToken. You can get an access token by logging in to the API.
To ease development you can create an AccessToken while starting the server by setting the DEV_ACCESS_TOKEN environment variable.
DEV_ACCESS_TOKEN=MySecretToken npm run dev
Development
If you want to share your work through a Pull Request, be sure to make it a clean branch (one functionality per PR) and base it off master.
If you plan on making a big change or replace a core function with something else it is probably best to first open an issue to discuss it with me. This will enhance the chance of the eventual changes getting merged a lot :)
The API is built with generator-loopback.
The GUI is built with generator-angular but is no longer compatible due to refactoring the project into modules.
These should help you quickly add code to your project. Further details tailored to this project might follow in the future.
Unit Testing using Karma/Jasmine
$ node_modules/.bin/karma start client/test/karma.conf.js
INFO [karma]: Karma v0.12.31 server started at http://localhost:8080/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Linux)]: Connected on socket aLJmRuSNUH2rPfpWgS3l with id 89641972
PhantomJS 1.9.8 (Linux): Executed 1 of 1 SUCCESS (0.007 secs / 0.029 secs)
Useful commits
These commits might be useful when extending the functionality.
WebSockets / socket.io
At this moment there is no integration for socket.io or websockets, nor will there be in the near future. Once LoopBack has integrated support for it we will leverage from that.
Having that said, it's certainly possible to integrate socket.io, check this pull request by @movibe.
Related Projects
Here are some projects that are related to what this project does. Please send a PR or create an issue if you have any additions to this list.
Issues
If you have any problems please contact me.