Angular Full Stack
The frontend is generated with Angular CLI. The backend is made from scratch. Whole stack in TypeScript.
This project uses the MEAN stack:
- Mongoose.js (MongoDB): database
- Express.js: backend framework
- Angular 2+: frontend framework
- Node.js: runtime environment
Other tools and technologies used:
- Angular CLI: frontend scaffolding
- Bootstrap: layout and styles
- Font Awesome: icons
- JSON Web Token: user authentication
- Angular 2 JWT: JWT helper for Angular
- Bcrypt.js: password encryption
- stylelint: style linter
- htmllint: html linter
Prerequisites
- Install Node.js and MongoDB
- Install Angular CLI:
npm i -g @angular/cli
- From project root folder install all the dependencies:
npm i
Run
Development mode
npm run dev
: concurrently execute MongoDB, Angular build, TypeScript compiler and Express server.
A window will automatically open at localhost:4200. Angular and Express files are being watched. Any change automatically creates a new bundle, restart Express server and reload your browser.
Production mode
npm run prod
: run the project with a production bundle and AOT compilation listening at localhost:3000
Deploy (Heroku)
- Go to Heroku and create a new app (eg:
your-app-name
) - Install Heroku CLI
heroku login
mkdir your-app-name && cd your-app-name
git init
heroku git:remote -a your-app-name
- Download this repo and copy all files into
your-app-name
folder npm i
- Edit
package.json
as following:- add this line to scripts:
"postinstall": "tsc -p server && ng build -aot -prod"
- move the following packages from devDependencies to dependencies:
@angular/cli
,@angular/compiler-cli
,@types/jasmine
,@types/node
,chai
,chai-http
andtypescript
.
- add this line to scripts:
- Edit
.env
and replace the MongoDB URI with a real remote MongoDB server. You can create a MongoDB server with Heroku or mLab. git add .
git commit -m "Going to Heroku"
git push heroku master
heroku open
and a window will open with your app online
Preview
Please open an issue if
- you have any suggestion to improve this project
- you noticed any problem or error
To do
- More tests
Running frontend unit tests
Run npm run test:front
to execute the unit tests via Karma.
Running frontend end-to-end tests
Run ng e2e
to execute the end-to-end tests via Protractor.
Before running the tests make sure you are serving the app via npm start
.
Running backend tests
Run mongod
to run an instance of MongoDB, then run npm run test:back
to execute the backend tests via Mocha.
Running lint
Run npm run lint:front
for frontend
Run npm run lint:back
for backend
Run npm run lint:style
for style
Run npm run lint:html
for html
Or npm run lint
for all kind of linter
Wiki
To get more help about this project, visit the official wiki.
Further help
To get more help on the angular-cli
use ng --help
or go check out the Angular-CLI README.