#!/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 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"