A time-tracker as Angular web-application with a Nodejs backend.
In the following section Compile and Setup, it is described how to download all code in one step, plus how to setup the environment for running it.
The mongodb collections and the authentification currently only support one user: so no multi user support, yet.
- Start-Stop entries (with time stamps)
- Summarized Start-Stop entries (between two moment in times)
- Configurable to link to different web application (via the config.json in client folder)
- ...
The following described is intended for a Linux - system (e.g. on on a virutal private server (VPS)).
git clone --recurse-submodules --remote-submodules https://github.com/JensUngerer/time-tracker.git tt
cd tt
cd ./client
git checkout master
cd ..
cd ./common
git checkout master
cd ..
cd ./documentation
git checkout master
cd ..
cd ./server
git checkout masterInstall MongoDB.
Please, adjust the /etc/mongod.conf, so that it runs on port 27021:
# network interfaces
net:
port: 27021
bindIp: 127.0.0.1
In order to see this change in the mongod.conf, please restart mongod:
systemctl stop monogd and systemctl stop mongod.
cd tt
cd database
createDatabase.shcd tt
cd ./client
npm i
cd ..
cd ./server
npm i
cd ..
cd ./common
npm icd tt
cd user-management
touch .envDATA_BASE_STRING=mongodb://localhost:27021
DATA_BASE_NAME=express-session
npm i
npm run build:ci
npm run start:ci- client
- server
- server
- create
server/certsfolder - insert
*.keyand*.cerinserver/certsfolder - edit their names in .env
- create
cd tt
cd ./client
ng build --prod=true
cd ./..
cd ./server
npm run build:prod-linuxmkdir /var/www/timeTracker
mkdir /var/www/timeTracker/server
cd tt
cd server
cp -r ./dist /var/www/timeTracker/server
chmod u+x /var/www/timeTracker/server/dist/tt-server.js
cp .env /var/www/timeTracker/server/
touch /var/log/timeTracker/timeTracker.logmkdir /var/www/timeTracker/client
cd tt
cd client
cp -r ./dist/ /var/www/timeTracker/clientCompare the corresponding Stackoverflow article.
touch /etc/systemd/system/timeTracker.service[Unit]
Description=TheTimeTrackerServer
[Service]
ExecStart=/var/www/timeTracker/server/dist/tt-server.js
Restart=always
DynamicUser=yes
LogsDirectory=timeTracker
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/timeTracker/server
[Install]
WantedBy=multi-user.target
touch /etc/nginx/sites-available/tt-http-reverse-proxyserver {
listen 80;
ssl_certificate /var/www/timeTracker/server/certs/your-cer.cer;
ssl_certificate_key /var/www/timeTracker/server/certs/your-key.key;
server_name _;
access_log /var/log/nginx/timeTracker-http.log;
charset utf-8;
location / {
proxy_pass https://first.second.third.fourth:3021;
}
}
ln -s /etc/nginx/sites-available/tt-http-reverse-proxy /etc/nginx/sites-enabled/tt-http-reverse-proxytouch /etc/nginx/sites-available/tt-reverse-proxyserver {
listen 443 ssl;
ssl_certificate /var/www/timeTracker/server/certs/your-cer.cer;
ssl_certificate_key /var/www/timeTracker/server/your-key.key;
server_name _;
access_log /var/log/nginx/timeTracker-https.log;
charset utf-8;
location / {
proxy_pass https://first.second.third.fourth:3021;
}
}
ln -s /etc/nginx/sites-available/tt-reverse-proxy /etc/nginx/sites-enabled/tt-reverse-proxysystemctl stop nginxsystemctl start nginxsystemctl start timeTracker