A framework for rapidly developing Python-based AWS Cloud Native applications.
Da Vinci uses AWS CDK for application deployment and infrastructure management. It provides patterns for managing multiple stacks under a single application while handling CloudFormation dependencies.
Full documentation is available at https://docs.davinciproject.dev/
Using pip:
pip install --extra-index-url https://packages.davinciproject.dev/simple/ da-vinci da-vinci-cdkUsing Poetry:
poetry source add --priority=explicit davinciproject https://packages.davinciproject.dev/simple/
poetry add da-vinci --source davinciproject
poetry add da-vinci-cdk --source davinciprojectUsing uv:
uv add da-vinci da-vinci-cdk --extra-index-url https://packages.davinciproject.dev/simple/The framework is split into two libraries:
da_vinci- Core runtime library for application business logicda_vinci-cdk- CDK library for infrastructure declarations
Note: CDK destroy operations may attempt to delete resources in an incorrect order that violates defined dependencies. While deployment honors dependencies correctly, destroy operations can fail due to CDK not properly reversing the dependency order. Manual cleanup may be required in some cases.
- AWS-native development patterns
- Infrastructure from table definitions
- Built-in configuration management, error handling, and service communication
- Direct access to AWS services and boto3 when needed
- Stay Close to AWS: Framework wraps AWS services without hiding them
- Eliminate Repetition, Not Control: Handle boilerplate while preserving flexibility
- Operational First: Built-in patterns for configuration, errors, and events
- Single Source of Truth: Table definitions drive infrastructure
This library uses Semantic Versioning (SemVer). The version number format is MAJOR.MINOR.PATCH where:
MAJOR- Incompatible API changesMINOR- Backward-compatible functionality additionsPATCH- Backward-compatible bug fixes
For example: 2.0.0, 2.1.0, 2.0.1
Check the Changelog for specifics about what changed.
from da_vinci_cdk.application
env = 'prototype'
app = Application(
app_name='my_app',
install_id=f'rosser-{env}',
)
app.synth()Ratio is the best current example application/framework that was built using the Da Vinci framework.