diff --git a/README.md b/README.md
deleted file mode 100644
index 545e9bf3a..000000000
--- a/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Analytics engineering with dbt
-
-Template repository for the projects and environment of the course: Analytics engineering with dbt
-
-> Please note that this sets some environment variables so if you create some new terminals please load them again.
-
-## License
-
-Apache 2.0
diff --git a/greenery/.gitignore b/greenery/.gitignore
new file mode 100644
index 000000000..49f147cb9
--- /dev/null
+++ b/greenery/.gitignore
@@ -0,0 +1,4 @@
+
+target/
+dbt_packages/
+logs/
diff --git a/greenery/README.md b/greenery/README.md
new file mode 100644
index 000000000..fcc7d3cf1
--- /dev/null
+++ b/greenery/README.md
@@ -0,0 +1,164 @@
+# WEEK 3
+
+
+
+## PART 1
+** What is ur overall cnversion rate?
+
+````sql
+with conversion_rate as
+(
+select
+product_id,
+name,
+cast(count(distinct (case when event_type='add_to_cart' then session_id end)) as float) as check_out,
+cast(count(distinct session_id) as float) as sessions
+
+from
+dbt.dbt_sofia.stg_greenery_events
+left join dbt.dbt_sofia.stg_greenery_products using( product_id)
+
+group by 1,2 )
+
+select
+product_id,
+name,
+sum(check_out)/sum(sessions) as cr from conversion_rate
+group by 1,2
+````
+** What is ur overall cnversion rate by product?
+````slq
+
+with conversion_rate as
+(
+select
+product_id,
+name,
+cast(count(distinct (case when event_type='add_to_cart' then session_id end)) as float) as check_out,
+cast(count(distinct session_id) as float) as sessions
+
+from
+dbt.dbt_sofia.stg_greenery_events
+left join dbt.dbt_sofia.stg_greenery_products using( product_id)
+
+group by 1,2 )
+
+select
+product_id,
+name,
+sum(check_out)/sum(sessions) as cr from conversion_rate
+group by 1,2
+````
+
+
+
+*** PART 2
+macro used in models/mart/product/event_type_per_sesssion.sql
+````sql
+{% macro get_column_values(column_name, relation) %}
+
+{% set relation_query %}
+select distinct
+{{ column_name }}
+from {{ relation }}
+order by 1
+{% endset %}
+
+{% set results = run_query(relation_query) %}
+
+{% if execute %}
+{% set results_list = results.columns[0].values() %}
+{% else %}
+{% set results_list = [] %}
+{% endif %}
+
+{{ return(results_list) }}
+
+{% endmacro %}
+
+
+{% macro get_payment_methods() %}
+
+{{ return(get_column_values('event_type', ref('stg_greenery_events'))) }}
+
+{% endmacro %}
+````
+***PART 4
+macro used in models/mart/product/event_type_per_sesssion_version2.sql
+````sql
+{%- set event_types = dbt_utils.get_column_values(
+ table=ref('stg_greenery_events'),
+ column='event_type'
+) -%}
+
+select
+session_id,
+{%- for event_type in event_types %}
+sum(case when event_type = '{{event_type}}' then 1 end) as {{event_type}}_count
+{%- if not loop.last %},{% endif -%}
+{% endfor %}
+from {{ ref('stg_greenery_events') }}
+group by 1
+
+````
+# WEEK 4
+
+## PART1
+````sql
+{% snapshot orders_snapshot%}
+{{
+ config(
+ target_schema='snapshots'
+ , strategy= 'check'
+ ,unique_key= 'order_id'
+ , check_cols=['status']
+ )
+}}
+
+select * from {{ source ('src_greenery','orders')}}
+
+{% endsnapshot %}
+````
+## PART 2
+Usng greeneery/models/mart/product/intermidiate/init_funnel.sql
+and greeneery/models/mart/product/intermidiate/fct_funnel.sql
+
+How are our users moving through the product funnel?
+
+
+
+Which steps in the funnel have largest drop off points?
+
+- from first to second
+
+### exposures:
+````sql
+version: 2
+
+exposures:
+
+ - name: tableu_dash
+ type: dashboard
+ maturity: medium
+ url: https://tableau.io
+ description: >
+ all of the data
+ depends_on:
+ - ref('fct_funnel')
+
+ owner:
+ name: sofi
+ email: sofi.svs.96@gmail.com
+
+````
+
+## Part3
+
+- My company is already implementing dbt , but is not ready yet. I think the combination of jinja and macros can automate a lot of things and give us a lot of independance.
+
+### Resources:
+- Learn more about dbt [in the docs](https://docs.getdbt.com/docs/introduction)
+- Check out [Discourse](https://discourse.getdbt.com/) for commonly asked questions and answers
+- Join the [chat](https://community.getdbt.com/) on Slack for live discussions and support
+- Find [dbt events](https://events.getdbt.com) near you
+- Check out [the blog](https://blog.getdbt.com/) for the latest news on dbt's development and best practices
diff --git a/greenery/analyses/.gitkeep b/greenery/analyses/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/greenery/dbt_project.yml b/greenery/dbt_project.yml
new file mode 100644
index 000000000..b695c572f
--- /dev/null
+++ b/greenery/dbt_project.yml
@@ -0,0 +1,46 @@
+
+# Name your project! Project names should contain only lowercase characters
+# and underscores. A good package name should reflect your organization's
+# name or the intended use of these models
+name: 'greenery'
+version: '1.0.0'
+config-version: 2
+
+# This setting configures which "profile" dbt uses for this project.
+profile: 'greenery'
+
+# These configurations specify where dbt should look for different types of files.
+# The `model-paths` config, for example, states that models in this project can be
+# found in the "models/" directory. You probably won't need to change these!
+model-paths: ["models"]
+analysis-paths: ["analyses"]
+test-paths: ["tests"]
+seed-paths: ["seeds"]
+macro-paths: ["macros"]
+snapshot-paths: ["snapshots"]
+
+target-path: "target" # directory which will store compiled SQL files
+clean-targets: # directories to be removed by `dbt clean`
+ - "target"
+ - "dbt_packages"
+
+
+# Configuring models
+# Full documentation: https://docs.getdbt.com/docs/configuring-models
+
+# In this example config, we tell dbt to build all models in the example/ directory
+# as tables. These settings can be overridden in the individual model files
+# using the `{{ config(...) }}` macro.
+models:
+ greenery:
+ # Config indicated by + and applies to all files under models/example/
+ example:
+ +materialized: view
+
+ post-hook:
+ on-run-end:
+ - "grant usage on schema {{ target.schema }} to role reporting"
+
+
+ - "grant select on all tables in schema {{ target.schema }} role reporting"
+
\ No newline at end of file
diff --git a/greenery/macros/.gitkeep b/greenery/macros/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/greenery/macros/event_types_per_session.sql b/greenery/macros/event_types_per_session.sql
new file mode 100644
index 000000000..150ffe361
--- /dev/null
+++ b/greenery/macros/event_types_per_session.sql
@@ -0,0 +1,31 @@
+
+
+
+
+{% macro get_column_values(column_name, relation) %}
+
+{% set relation_query %}
+select distinct
+{{ column_name }}
+from {{ relation }}
+order by 1
+{% endset %}
+
+{% set results = run_query(relation_query) %}
+
+{% if execute %}
+{% set results_list = results.columns[0].values() %}
+{% else %}
+{% set results_list = [] %}
+{% endif %}
+
+{{ return(results_list) }}
+
+{% endmacro %}
+
+
+{% macro get_payment_methods() %}
+
+{{ return(get_column_values('event_type', ref('stg_greenery_events'))) }}
+
+{% endmacro %}
diff --git a/greenery/models/example/expoosure_exampl.yml b/greenery/models/example/expoosure_exampl.yml
new file mode 100644
index 000000000..449ae5bdb
--- /dev/null
+++ b/greenery/models/example/expoosure_exampl.yml
@@ -0,0 +1,16 @@
+version: 2
+
+exposures:
+
+ - name: tableu_dash
+ type: dashboard
+ maturity: medium
+ url: https://tableau.io
+ description: >
+ all of the data
+ depends_on:
+ - ref('fct_funnel')
+
+ owner:
+ name: sofi
+ email: sofi.svs.96@gmail.com
diff --git a/greenery/models/example/marts/core/intermidiate/init_users_value.sql b/greenery/models/example/marts/core/intermidiate/init_users_value.sql
new file mode 100644
index 000000000..8c7f8e3ff
--- /dev/null
+++ b/greenery/models/example/marts/core/intermidiate/init_users_value.sql
@@ -0,0 +1,13 @@
+{{
+ config(
+ materialized='table'
+ )
+}}
+
+select
+stg_greenery_users.user_id,
+order_cost
+
+from {{ref('stg_greenery_users')}}
+ left join {{ref('stg_greenery_orders')}}
+on stg_greenery_users.user_id=stg_greenery_orders.user_id
diff --git a/greenery/models/example/marts/core/ltv_users.sql b/greenery/models/example/marts/core/ltv_users.sql
new file mode 100644
index 000000000..e31e83ab5
--- /dev/null
+++ b/greenery/models/example/marts/core/ltv_users.sql
@@ -0,0 +1,16 @@
+
+
+{{
+ config(
+ materialized='table'
+ )
+}}
+
+select
+user_id,
+sum(order_cost) as orders_cost
+
+from {{ref('init_users_value')}}
+ GROUP BY 1
+
+
\ No newline at end of file
diff --git a/greenery/models/example/marts/core/test.yml b/greenery/models/example/marts/core/test.yml
new file mode 100644
index 000000000..128effe6a
--- /dev/null
+++ b/greenery/models/example/marts/core/test.yml
@@ -0,0 +1,12 @@
+version: 2
+
+models:
+ - name: stg_greenery_users
+ columns:
+ - name: name
+ tests:
+ - not_null
+ - unique
+
+
+
diff --git a/greenery/models/example/marts/marketing/discount.sql b/greenery/models/example/marts/marketing/discount.sql
new file mode 100644
index 000000000..994d95582
--- /dev/null
+++ b/greenery/models/example/marts/marketing/discount.sql
@@ -0,0 +1,16 @@
+{{
+ config(
+ MATERIALIZED='table'
+ )
+}}
+
+
+
+ select
+ user_id,
+ sum(discount) acu_discount
+
+ from {{ref('init_disccount_counts')}}
+group by 1
+
+
diff --git a/greenery/models/example/marts/marketing/intermidiate/init_disccount_counts.sql b/greenery/models/example/marts/marketing/intermidiate/init_disccount_counts.sql
new file mode 100644
index 000000000..a9aebed86
--- /dev/null
+++ b/greenery/models/example/marts/marketing/intermidiate/init_disccount_counts.sql
@@ -0,0 +1,16 @@
+{{
+ config(
+ materialized='table'
+ )
+}}
+
+select
+user_id,
+order_id,
+stg_greenery_orders.promo_id
+,discount
+
+from {{ref('stg_greenery_orders')}}
+ left join {{ref('stg_greenery_promos')}}
+on stg_greenery_promos.promo_id=stg_greenery_orders.promo_id
+
diff --git a/greenery/models/example/marts/product /event_type_per_sessions.sql b/greenery/models/example/marts/product /event_type_per_sessions.sql
new file mode 100644
index 000000000..05770bdb0
--- /dev/null
+++ b/greenery/models/example/marts/product /event_type_per_sessions.sql
@@ -0,0 +1,15 @@
+{%- set event_types = get_column_values(
+ column_name='event_type',
+ relation=ref('stg_greenery_events'),
+
+) -%}
+
+select
+ session_id,
+ created_at,
+{%- for event_type in event_types %}
+sum(case when event_type = '{{event_type}}' then 1 end) as {{event_type}}_count
+{%- if not loop.last %},{% endif -%}
+{% endfor %}
+from {{ ref('stg_greenery_events') }}
+group by 1,2
diff --git a/greenery/models/example/marts/product /event_type_per_sessions_version2.sql b/greenery/models/example/marts/product /event_type_per_sessions_version2.sql
new file mode 100644
index 000000000..e78c4bbe8
--- /dev/null
+++ b/greenery/models/example/marts/product /event_type_per_sessions_version2.sql
@@ -0,0 +1,13 @@
+{%- set event_types = dbt_utils.get_column_values(
+ table=ref('stg_greenery_events'),
+ column='event_type'
+) -%}
+
+select
+session_id,
+{%- for event_type in event_types %}
+sum(case when event_type = '{{event_type}}' then 1 end) as {{event_type}}_count
+{%- if not loop.last %},{% endif -%}
+{% endfor %}
+from {{ ref('stg_greenery_events') }}
+group by 1
diff --git a/greenery/models/example/marts/product /fct_funnel.sql b/greenery/models/example/marts/product /fct_funnel.sql
new file mode 100644
index 000000000..5d6d2890c
--- /dev/null
+++ b/greenery/models/example/marts/product /fct_funnel.sql
@@ -0,0 +1,19 @@
+{{
+ config(
+ materialized = 'table'
+ )
+}}
+
+
+with t1 as (
+SELECT
+sum(CASE WHEN checkout_sum>0 THEN 1 END) as funnel3
+,sum(CASE WHEN checkout_sum>0 or add_to_cart_sum>0 THEN 1 END) as funnel2
+,sum(CASE WHEN checkout_sum>0 or add_to_cart_sum>0 or page_view_sum>0 THEN 1 END) as funnel1
+ from dbt_sofia.init_funnel )
+
+ select *,
+ funnel1 - funnel2 as dif1_2,
+ funnel2 - funnel3 as dif2_3
+from t1
+
diff --git a/greenery/models/example/marts/product /fct_sessions.sql b/greenery/models/example/marts/product /fct_sessions.sql
new file mode 100644
index 000000000..e79edefd5
--- /dev/null
+++ b/greenery/models/example/marts/product /fct_sessions.sql
@@ -0,0 +1,36 @@
+{{
+ config(
+ MATERIALIZED='table'
+ )
+}}
+
+with session_lenght as (
+
+ select
+ session_id
+ ,min(created_at ) as first_event
+ ,max(created_at) as last_event
+ from {{ref('stg_greenery_events')}}
+group by 1
+
+
+)
+
+select
+init_session_events_basic_agg.session_id
+,init_session_events_basic_agg.user_id
+,stg_greenery_users.first_name
+,stg_greenery_users.last_name
+,stg_greenery_users.email
+,init_session_events_basic_agg.add_to_cart
+,init_session_events_basic_agg.checkout
+,init_session_events_basic_agg.package_shipped
+,session_lenght.first_event as first_session_event
+,session_lenght.last_event as last_session_event
+
+
+from {{ref('init_session_events_basic_agg')}}
+left join {{ref('stg_greenery_users')}}
+on init_session_events_basic_agg.user_id="stg_greenery_users".user_id
+left join session_lenght
+on init_session_events_basic_agg.session_id=session_lenght.session_id
diff --git a/greenery/models/example/marts/product /intermidiate/init_funnel.sql b/greenery/models/example/marts/product /intermidiate/init_funnel.sql
new file mode 100644
index 000000000..1a26655b0
--- /dev/null
+++ b/greenery/models/example/marts/product /intermidiate/init_funnel.sql
@@ -0,0 +1,18 @@
+{{
+ config(
+ materialized = 'table'
+ )
+}}
+
+
+
+
+SELECT
+session_id
+,sum(DISTINCT(CASE WHEN checkout_count>0 THEN 1 END)) as checkout_sum
+,sum(DISTINCT(CASE WHEN add_to_cart_count>0 THEN 1 END)) as add_to_cart_sum
+,sum(DISTINCT(CASE WHEN page_view_count>0 THEN 1 END)) as page_view_sum
+FROM dbt_sofia.event_type_per_sessions
+GROUP BY session_id
+
+
diff --git a/greenery/models/example/marts/product /intermidiate/init_session_events_basic_agg.sql b/greenery/models/example/marts/product /intermidiate/init_session_events_basic_agg.sql
new file mode 100644
index 000000000..0bcef6334
--- /dev/null
+++ b/greenery/models/example/marts/product /intermidiate/init_session_events_basic_agg.sql
@@ -0,0 +1,18 @@
+{{
+ config(
+ materialized='table'
+ )
+}}
+
+select
+session_id
+, created_at
+,user_id
+,sum(case when event_type='package_shipped' then 1 else 0 end) as package_shipped
+,sum(case when event_type='page_view' then 1 else 0 end) as page_view
+,sum(case when event_type='checkout' then 1 else 0 end) as checkout
+,sum(case when event_type='add_to_cart' then 1 else 0 end) as add_to_cart
+from {{ref('stg_greenery_events')}}
+group by 1,2,3
+
+
diff --git a/greenery/models/example/my_first_dbt_model.sql b/greenery/models/example/my_first_dbt_model.sql
new file mode 100644
index 000000000..01dc46a66
--- /dev/null
+++ b/greenery/models/example/my_first_dbt_model.sql
@@ -0,0 +1,27 @@
+
+/*
+ Welcome to your first dbt model!
+ Did you know that you can also configure models directly within SQL files?
+ This will override configurations stated in dbt_project.yml
+
+ Try changing "table" to "view" below
+*/
+
+{{ config(materialized='table') }}
+
+with source_data as (
+
+ select 1 as id
+ union all
+ select null as id
+
+)
+
+select *
+from source_data
+
+/*
+ Uncomment the line below to remove records with null `id` values
+*/
+
+ where id is not null
diff --git a/greenery/models/example/my_second_dbt_model.sql b/greenery/models/example/my_second_dbt_model.sql
new file mode 100644
index 000000000..c91f8793a
--- /dev/null
+++ b/greenery/models/example/my_second_dbt_model.sql
@@ -0,0 +1,6 @@
+
+-- Use the `ref` function to select from other models
+
+select *
+from {{ ref('my_first_dbt_model') }}
+where id = 1
diff --git a/greenery/models/example/schema.yml b/greenery/models/example/schema.yml
new file mode 100644
index 000000000..2a5308171
--- /dev/null
+++ b/greenery/models/example/schema.yml
@@ -0,0 +1,21 @@
+
+version: 2
+
+models:
+ - name: my_first_dbt_model
+ description: "A starter dbt model"
+ columns:
+ - name: id
+ description: "The primary key for this table"
+ tests:
+ - unique
+ - not_null
+
+ - name: my_second_dbt_model
+ description: "A starter dbt model"
+ columns:
+ - name: id
+ description: "The primary key for this table"
+ tests:
+ - unique
+ - not_null
diff --git a/greenery/models/example/staging/greenery/Readme b/greenery/models/example/staging/greenery/Readme
new file mode 100644
index 000000000..72af93018
--- /dev/null
+++ b/greenery/models/example/staging/greenery/Readme
@@ -0,0 +1,61 @@
+# Analytics engineering with dbt
+
+Q1 How many users do we have?
+
+ select COUNT(DISTINCT user_id) as users from dbt.dbt_sofia.stg_greenery_users;
+R:130
+===================================
+Q2 On average, how many orders do we receive per hour?
+
+ with hours as (select
+ date_trunc('hour',created_at) as hour_order,
+ count(distinct order_id) as orders
+ from dbt.dbt_sofia.stg_greenery_orders
+ group by 1 )
+
+ select
+ sum(orders)/24 as odersperhour
+ from hours
+ R2:15.0416666666666667
+ ===================================
+ Q3 On average, how long does an order take from being placed to being delivered?
+
+ with delivertime as (
+ select
+ order_id,
+ (date_trunc('day',delivered_at)-date_trunc('day',created_at)) as daystodeliver
+ from dbt.dbt_sofia.stg_greenery_orders)
+
+ select
+ sum( daystodeliver)/count(distinct order_id)
+ from delivertime
+
+ R3:3 days 06:54:50.858726
+ ===================================
+ Q4 How many users have only made one purchase? Two purchases? Three+ purchases?
+
+ with orderperuser as(
+ select
+ user_id,count(distinct order_id) as orders
+ from dbt.dbt_sofia.stg_greenery_orders
+ group by user_id
+ )
+ select orders, count(distinct user_id) as users
+ from orderperuser
+ group by orders
+ R4:
+
+ ===================================
+
+ Q5 On average, how many unique sessions do we have per hour?
+
+
+ select
+ count(distinct session_id)/
+ date_part('hour',(date_trunc('hour',min(created_at))-date_trunc('hour',max(created_at)))) as avgsessionperhour
+ from dbt.dbt_sofia.stg_greenery_events
+
+R5:64.22222222222223
+## License
+
+Apache 2.0
diff --git a/greenery/models/example/staging/greenery/src_greenery.yml b/greenery/models/example/staging/greenery/src_greenery.yml
new file mode 100644
index 000000000..f35585e6f
--- /dev/null
+++ b/greenery/models/example/staging/greenery/src_greenery.yml
@@ -0,0 +1,31 @@
+version: 2
+
+sources:
+
+ - name: src_greenery # name of the source (this can be named whatever you want, but should be descriptive. this source (superheroes) is used for our week 1 tutorial so thats why i named it this way)
+ schema: public # this is the schema our raw data lives in
+ database: dbt # this is the name of our database
+
+ quoting:
+ database: false
+ schema: false
+ identifier: false
+
+ freshness:
+ warn_after: {count: 24, period: hour}
+ error_after: {count: 48, period: hour}
+
+ tables:
+ - name: users
+ loaded_at_field: created_at
+ description: >
+ Contains demographic information about each superhero
+ - name: addresses
+ - name: orders
+ loaded_at_field: created_at
+ - name: promos
+ - name: order_items
+ - name: products
+ - name: events
+ loaded_at_field: created_at
+
diff --git a/greenery/models/example/staging/greenery/stg_greenery_addresses.sql b/greenery/models/example/staging/greenery/stg_greenery_addresses.sql
new file mode 100644
index 000000000..ff972dfe4
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_addresses.sql
@@ -0,0 +1,23 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with addresses_source as (
+ select * from {{source('src_greenery','addresses')}}
+
+)
+
+, renamed_recast as (
+ select
+ address_id
+ ,address
+ ,zipcode
+ ,state
+ ,country
+ from addresses_source
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/models/example/staging/greenery/stg_greenery_events.sql b/greenery/models/example/staging/greenery/stg_greenery_events.sql
new file mode 100644
index 000000000..71105da1e
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_events.sql
@@ -0,0 +1,28 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with events_source as (
+ select * from {{source('src_greenery','events')}}
+
+)
+
+, renamed_recast as (
+ select
+ event_id,
+ session_id,
+ user_id,
+ event_type,
+ page_url,
+ created_at,
+ order_id,
+ product_id
+
+
+ from events_source
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/models/example/staging/greenery/stg_greenery_order_items.sql b/greenery/models/example/staging/greenery/stg_greenery_order_items.sql
new file mode 100644
index 000000000..24b06a9af
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_order_items.sql
@@ -0,0 +1,23 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with order_items_source as (
+ select * from {{source('src_greenery','order_items')}}
+
+)
+
+, renamed_recast as (
+ select
+ order_id
+ ,product_id
+ ,quantity
+
+
+ from order_items_source
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/models/example/staging/greenery/stg_greenery_orders.sql b/greenery/models/example/staging/greenery/stg_greenery_orders.sql
new file mode 100644
index 000000000..79c89f811
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_orders.sql
@@ -0,0 +1,33 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with users_orders as (
+ select * from {{source('src_greenery','orders')}}
+
+)
+
+, renamed_recast as (
+ select
+ order_id
+ ,user_id
+ ,promo_id
+ ,address_id
+ ,created_at
+ ,order_cost
+ ,shipping_cost
+ ,order_total
+ ,tracking_id
+ ,shipping_service
+ ,estimated_delivery_at
+ ,delivered_at
+ ,status
+
+
+ from users_orders
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/models/example/staging/greenery/stg_greenery_products.sql b/greenery/models/example/staging/greenery/stg_greenery_products.sql
new file mode 100644
index 000000000..7fa2f630c
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_products.sql
@@ -0,0 +1,23 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with products_source as (
+ select * from {{source('src_greenery','products')}}
+
+)
+
+, renamed_recast as (
+ select
+ product_id
+ ,name
+ ,price
+ ,inventory
+
+ from products_source
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/models/example/staging/greenery/stg_greenery_promos.sql b/greenery/models/example/staging/greenery/stg_greenery_promos.sql
new file mode 100644
index 000000000..b272c3023
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_promos.sql
@@ -0,0 +1,22 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with promo_source as (
+ select * from {{source('src_greenery','promos')}}
+
+)
+
+, renamed_recast as (
+ select
+ promo_id
+ ,discount
+ ,status
+ from promo_source
+)
+
+
+select * from renamed_recast
+
diff --git a/greenery/models/example/staging/greenery/stg_greenery_users.sql b/greenery/models/example/staging/greenery/stg_greenery_users.sql
new file mode 100644
index 000000000..92c8d7124
--- /dev/null
+++ b/greenery/models/example/staging/greenery/stg_greenery_users.sql
@@ -0,0 +1,27 @@
+{{
+ config(
+ materialized='view'
+ )
+}}
+
+with users_source as (
+ select * from {{source('src_greenery','users')}}
+
+)
+
+, renamed_recast as (
+ select
+ user_id
+
+ ,first_name
+ ,last_name
+ ,email
+ ,phone_number
+ ,created_at as created_at_utc
+ ,updated_at as update_at_utc
+ ,address_id as address_guid
+ from users_source
+)
+
+
+select * from renamed_recast
\ No newline at end of file
diff --git a/greenery/packages.yml b/greenery/packages.yml
new file mode 100644
index 000000000..1718c48cc
--- /dev/null
+++ b/greenery/packages.yml
@@ -0,0 +1,8 @@
+
+packages:
+ - package: dbt-labs/dbt_utils
+ version: 0.8.0
+ - package: calogica/dbt_expectations
+ version: 0.5.1
+ - package: dbt-labs/codegen
+ version: 0.5.0
\ No newline at end of file
diff --git a/greenery/seeds/.gitkeep b/greenery/seeds/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/greenery/snapshots/.gitkeep b/greenery/snapshots/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/greenery/snapshots/orders_snapshot.sql b/greenery/snapshots/orders_snapshot.sql
new file mode 100644
index 000000000..fefbd3127
--- /dev/null
+++ b/greenery/snapshots/orders_snapshot.sql
@@ -0,0 +1,13 @@
+{% snapshot orders_snapshot%}
+{{
+ config(
+ target_schema='snapshots'
+ , strategy= 'check'
+ ,unique_key= 'order_id'
+ , check_cols=['status']
+ )
+}}
+
+select * from {{ source ('src_greenery','orders')}}
+
+{% endsnapshot %}
diff --git a/greenery/tests/.gitkeep b/greenery/tests/.gitkeep
new file mode 100644
index 000000000..e69de29bb