- nodejs
- git
- sourcetree (gui for git)
- mysql
- mysqlworkbranch (gui for mysql) (perhaps we'll use postresql)
- Angular Files ^1.6.2
- Debugger for Chrome ^4.10.1
- EditorConfig for VS Code ^0.12.4
- TSLint ^1.0.39
- TypeScript Hero ^2.3.2
- TypeScript Import ^1.17.0
git clone https://github.com/abdellaui/SoPlan.git
cd SoPlan/
npm i -g @angular/cli
npm install
npm install @angular/core@7.1.0
npm install @angular/animations@7.1.0
npm start
Please read the apis of following frameworks/libs:
- typescript (javascript)
- rx/js
- angular
- testing languages:
- jasmine
- protractor
- testing languages:
- electron
- testing:
- spectron
- testing:
- typeorm
- decorators:
- relation
- validation
- decorators:
- bootstrap
- nebular (ui-kit)
- theme: components
angular is just a client-side framework, but we want to use native resources etc. So we need a bridge between backend and fronted.
We are communicating on ipc (inter-process-communication), which is a module of electron api. Electron is not aviable on the browser.
The communication is between ipcRendererServices (inside angular) and **/*.slot.ts files.
./backend/slot.ts shows adaptering the ipcMain to a http-server (express).
./src/app/services/ipcRendererServices.ts shows adaptering the ipcRenderer to a http-client.
Why we not use http always? so, we want to create a standalone executable application, which doesnt only wrap a webpage into a webview and we wont let run a ghost server which listen always to a port, and how we can know to handle with taken ports?
use following schema for *.slot.ts files!
import { on, send } from './../../slots';
export function init() {
on('get/channel/name', (event: any, arg: any) => {
// doSmth();
send(event, 'get/channel/name', arg);
// end(event);
});
// ...
}please always develop on the develop branch. Do your experiments always on a new branches spawned from develop branch. if your experiment goals, then merge it back to develop. run the test, if anything causes problem, merge it to master. never branch from master for solving new problems.
please set your editor correctly, .editorconfig will help you. maybe you can import it directly, otherwise check if your auto-formatter changes some correct codes or change you editor, vscode is good option. If nothing changes on auto-formatting, you're ready to use git. This step is very important to save useless change-reports by git.
use sourcetree!
electron starts at main.ts. On serve mode it will just wrap http://localhost:4200, on build mode it will wrap and include /dist.
you can disactivate "Developer Tools" by commenting win.webContents.openDevTools(); in main.ts.
library imported in main.ts (electron) should be installed per npm dependencies (not devDependencies) with npm install --save. It will be loaded by electron during build phase and added to the final package.
note that you can't use electron or nodejs native libraries in this case inside angular.
| Command | Description |
|---|---|
npm start |
Execute the app (electron on serve mode) |
npm run electron:local |
Execute the app (electron on build mode) |
npm run ng:web |
Execute the app in the browser |
npm run clear |
Removes /out-tsc /release /dist folders |
npm run test |
Runs angular unit-testing |
npm run e2e |
Rungs angular end-to-end testing |
npm run compile:linux |
Builds your application and creates an app consumable on linux system |
npm run compile:windows |
On a Windows OS, builds your application and creates an app consumable in windows 32/64 bit systems |
npm run compile:mac |
On a MAC OS, builds your application and generates a .app file of your application that can be run on Mac |
** Application is optimised. Only /dist folder and node dependencies are included in the executable.**
npm will show something like scroll to bottom, because we use packages like karma and protractor, which are test-frameworks. it is usual, that test-frameworks arent safe.
found 36 vulnerabilities (6 low, 22 moderate, 8 high) in 45411 scanned packages
for more information check ./_doc/presentation.pdf



