This guide explains how to set up and develop SmartBlogger.
- Python 3.11+
- uv (recommended) or pip
- Ollama (for local LLM support)
# Clone the repository
git clone <repository-url>
cd SmartBlogger
# Install dependencies
uv sync
# Activate the virtual environment (optional, uv can run commands directly)
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate# Clone the repository
git clone <repository-url>
cd SmartBlogger
# Install dependencies
pip install -e .# Run the application
uv run streamlit run app.py# Run the application
streamlit run app.pyWhen adding new dependencies, update pyproject.toml and regenerate the lock file:
# Add a new dependency
uv add <package-name>
# Or manually update pyproject.toml and regenerate lock file
uv lock# Run all tests
uv run python -m pytest
# Run specific tests
uv run python test_mlx.py
uv run python test_ocr.py# Format code with black (if configured)
uv run black .
# Sort imports with isort (if configured)
uv run isort .SmartBlogger/
├── app.py # Main application entry point
├── pyproject.toml # Project configuration and dependencies
├── uv.lock # Locked dependencies (generated by uv)
├── README.md # Project overview
├── docs/ # Documentation files
├── models/ # LLM management and model utilities
├── nodes/ # Workflow nodes
├── services/ # External service integrations
├── ui/ # User interface components
│ ├── theme.py # Custom theme and styling
│ ├── sidebar.py # Sidebar components
│ ├── dashboard.py # Main dashboard components
│ ├── loading_screen.py # Loading screen components
│ ├── footer.py # Footer components
│ └── components.py # Reusable UI components
├── utils/ # Utility functions
└── workflows/ # Workflow definitions
-
Run the MLX test to verify Apple Silicon optimizations:
uv run python test_mlx.py
-
Run the image processing test to verify image processing:
uv run python test_image_processing.py
-
Start the application to test end-to-end functionality:
uv run streamlit run app.py
If you encounter dependency conflicts:
# Regenerate lock file
uv lock --upgrade
# Or resolve conflicts manually
uv sync --resolution highestIf the environment becomes corrupted:
# Remove virtual environment
rm -rf .venv
# Recreate environment
uv sync- Fork the repository
- Create a feature branch
- Make your changes
- Run tests to ensure everything works
- Submit a pull request