#!/usr/bin/env python3 """ Quick start script for NoteDiscovery Run this to start the application without Docker """ import sys import os import subprocess from pathlib import Path try: import colorama colorama.just_fix_windows_console() except ImportError: colorama = None def get_port(): """Get port from: 1) ENV variable, 2) config.yaml, 3) default 8000""" # Priority 1: Environment variable if os.getenv("PORT"): return os.getenv("PORT") # Priority 2: config.yaml config_path = Path("config.yaml") if config_path.exists(): try: import yaml with open(config_path, 'r', encoding='utf-8') as f: config = yaml.safe_load(f) if config and 'server' in config and 'port' in config['server']: return str(config['server']['port']) except Exception: pass # Fall through to default # Priority 3: Default return "8000" def main(): print("šŸš€ Starting NoteDiscovery...\n") # Check if requirements are installed try: import fastapi import uvicorn except ImportError: print("šŸ“¦ Installing dependencies...") subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"]) # Create data directories Path("data").mkdir(parents=True, exist_ok=True) Path("plugins").mkdir(parents=True, exist_ok=True) # Get port from config or environment port = get_port() print("āœ“ Dependencies installed") print("āœ“ Directories created") print("\n" + "="*50) print("šŸŽ‰ NoteDiscovery is running!") print("="*50) print(f"\nšŸ“ Open your browser to: http://localhost:{port}") print("\nšŸ’” Tips:") print(" - Press Ctrl+C to stop the server") print(" - Your notes are in ./data/") print(" - Plugins go in ./plugins/") print(f" - Change port with: PORT={port} python run.py") print("\n" + "="*50 + "\n") # Run the application subprocess.call([ sys.executable, "-m", "uvicorn", "backend.main:app", "--reload", "--host", "0.0.0.0", "--port", port ]) if __name__ == "__main__": main()