Files
expense-control/start_dev.sh
Mateusz Gruszczyński 9a6e77a5fc first commit
2026-04-05 13:40:27 +02:00

66 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env sh
set -eu
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
API_DIR="$ROOT_DIR/api"
WEB_DIR="$ROOT_DIR/web"
ensure_install() {
APP_DIR="$1"
MARKER="$2"
if [ ! -d "$APP_DIR/node_modules" ] || [ ! -e "$APP_DIR/$MARKER" ]; then
rm -rf "$APP_DIR/node_modules"
cd "$APP_DIR"
npm install --workspaces=false
fi
}
cleanup() {
if [ -n "${API_PID:-}" ]; then kill "$API_PID" 2>/dev/null || true; fi
if [ -n "${WEB_PID:-}" ]; then kill "$WEB_PID" 2>/dev/null || true; fi
}
trap cleanup INT TERM EXIT
mkdir -p "$API_DIR/data" "$API_DIR/uploads"
ensure_install "$API_DIR" "node_modules/tsx/package.json"
ensure_install "$WEB_DIR" "node_modules/@angular/cli/package.json"
if [ -x "$WEB_DIR/node_modules/.bin/ng" ]; then
"$WEB_DIR/node_modules/.bin/ng" analytics disable --global >/dev/null 2>&1 || true
fi
export NODE_ENV=development
export CI=${CI:-true}
export NG_CLI_ANALYTICS=${NG_CLI_ANALYTICS:-false}
export APP_PORT=${APP_PORT:-4000}
export WEB_PORT=${WEB_PORT:-4200}
export DB_TYPE=${DB_TYPE:-sqlite}
export DB_PATH=${DB_PATH:-$API_DIR/data/dev.sqlite}
export DB_SYNC=${DB_SYNC:-true}
export DB_LOGGING=${DB_LOGGING:-false}
export JWT_SECRET=${JWT_SECRET:-dev-secret-key}
export JWT_EXPIRES_IN=${JWT_EXPIRES_IN:-7d}
export APP_NAME=${APP_NAME:-Expense Control Dev}
export DEFAULT_CURRENCY=${DEFAULT_CURRENCY:-PLN}
export ADMIN_EMAIL=${ADMIN_EMAIL:-admin@local.dev}
export ADMIN_PASSWORD=${ADMIN_PASSWORD:-Admin123!}
export UPLOAD_DIR=${UPLOAD_DIR:-$API_DIR/uploads}
export MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-10}
export API_CORS_ORIGIN=${API_CORS_ORIGIN:-http://localhost:$WEB_PORT}
cd "$API_DIR"
npm run dev &
API_PID=$!
cd "$WEB_DIR"
npm run start -- --host 0.0.0.0 --port "$WEB_PORT" &
WEB_PID=$!
printf '\n%s\n' '============================================================'
printf 'API: %s\n' "http://localhost:$APP_PORT/api"
printf 'Frontend: %s\n' "http://localhost:$WEB_PORT"
printf 'Admin DEV: %s\n' "$ADMIN_EMAIL"
printf 'Hasło DEV: %s\n' "$ADMIN_PASSWORD"
printf '%s\n\n' '============================================================'
wait "$API_PID" "$WEB_PID"