A Streamlit web application that automates Snowflake account setup for the dbt Zero to Hero Udemy course. This app helps students quickly configure their Snowflake environment with the necessary databases, users, roles, and sample data.
Now with zero-downtime deployments!
- 🚀 Automated Snowflake account setup
- 👤 Creates dbt user with appropriate roles and permissions
- 🗄️ Sets up AIRBNB database with RAW and DEV schemas
- 📊 Imports sample AirBnB data from S3
- ✅ Validates data import with row count checks
- 🎯 Creates REPORTER role for dashboard access
# Install dependencies (requires Python 3.13)
uv sync
# Run the Streamlit app
uv run streamlit run streamlit_app.py# Using docker-compose (easiest)
docker-compose up -d
# Or pull from registry
docker run -p 8501:8501 registry.nordquant.com/dbt-bootcamp-setup:latestAccess the app at http://localhost:8501
- Python 3.13
- uv package manager
- Docker (for containerized deployment)
# Install dependencies
uv sync
# Install dev dependencies
uv sync --extra dev
# Run tests
docker-compose --profile test up test --exit-code-from test.
├── streamlit_app.py # Main Streamlit application
├── course-resources.md # SQL setup commands (from course)
├── pyproject.toml # Python dependencies (uv format)
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml # Docker compose with test profile
├── build_push.sh # Build script for multi-platform images
└── DOCKER.md # Docker documentation
This project uses a multi-stage Docker build optimized for caching:
- Base: Python 3.13 Alpine with build tools
- Dependencies: Python packages (cached when dependencies unchanged)
- Final: Application code (rebuilt on code changes)
# Build and push for both amd64 and arm64
./build_push.sh
# Build only (no push)
./build_push.sh --build-only --platform linux/arm64
# Custom tag
./build_push.sh --tag v1.0.0
# See all options
./build_push.sh --helpSee DOCKER.md for detailed Docker documentation.
The app creates the following Snowflake resources:
- User:
dbt(password:dbtPassword123) - Roles:
TRANSFORM,REPORTER - Database:
AIRBNB - Schemas:
RAW,DEV - Tables:
raw_listings,raw_hosts,raw_reviews
The project includes a CI/CD pipeline that:
- Builds Docker images for amd64 and arm64
- Runs health checks and integration tests
- Pushes to
registry.nordquant.com/dbt-bootcamp-setup:latest
Required GitHub secrets:
REGISTRY_USERNAMEREGISTRY_PASSWORD
See .github/workflows/build-and-push.yml for details.
Main dependencies (pinned to major.minor versions):
streamlit>=1.51,<1.52- Web application frameworksqlalchemy>=2.0,<2.1- Database ORMsnowflake-sqlalchemy>=1.7,<1.8- Snowflake dialectsnowflake-connector-python>=3.18,<3.19- Snowflake driverpydantic>=2.12,<2.13- Data validationurllib3>=2.5,<2.6- HTTP client (required for Python 3.13)
See pyproject.toml for full dependency list.
This project is part of the dbt Zero to Hero Udemy course materials.
For issues or questions about:
- The application: Check the logs in the Streamlit interface
- Docker deployment: See DOCKER.md
- The dbt course: Refer to the Udemy course materials# Test change for manual workflow trigger