Shraga is a modern AI application with a backend based on FastAPI and a frontend built with React.
- Python 3.11 or higher
- Pip
- Poetry (for dependency management)
- Node.js and pnpm (for frontend)
First, install Poetry if you don't have it already:
pipx install poetryClone the repository and install dependencies:
git clone <repository-url>
cd shraga
poetry install --no-root
poetry run pre-commit installTo activate the virtual environment:
poetry shell
which python # Verify the correct Python interpreter is being usedSeveral command-line tools are included with this package to help with development and management tasks:
# Create a user with basic authentication (interactive mode)
poetry run create-basic-auth-user
# Create a user with command-line arguments
poetry run create-basic-auth-user <email> <password> <config_file>
# Example
poetry run create-basic-auth-user user@example.com mypassword123 config.demo.yamlThis tool will:
- Prompt you to enter a user email address (with validation)
- Securely collect and validate a password
- Ask for the configuration file to update
- Generate a bcrypt hash of the password
- Save the credentials to a text file for reference
- Update the specified configuration file with the new user
To run the backend server with hot-reloading enabled:
SHRAGA_FLOWS_PATH=flows CONFIG_PATH=config.demo.yaml uvicorn main:app --reloadTo run the frontend development server:
cd frontend
pnpm install # Only needed first time or when dependencies change
pnpm run devBy default, the frontend will be available at http://localhost:5000 and will connect to the backend API running on http://localhost:8000.
Shraga uses YAML configuration files to manage its settings. The repository includes:
config.demo.yaml: A template configuration file with documentation
You can specify which configuration file to use with the CONFIG_PATH environment variable.
To run the demo flow without requiring an LLM, Elasticsearch, or Opensearch:
-
Use the demo configuration file:
export CONFIG_PATH=config.demo.yaml -
Run the backend:
export SHRAGA_FLOWS_PATH=flows uvicorn main:app --reload
/frontend: React web interface/flows: Flow definitions
Pre-commit hooks enforce code style:
poetry run pre-commit installThis project is licensed under the Apache License 2.0 - see the LICENSE file for details.