Process Phases
 

Understanding the Development Process

Development in the City of Austin begins with your vision for using a piece of property. You then bring that vision to the City to confirm that your plans meet safety, sustainability, and zoning regulations. Once your plans are approved, you obtain the required permits and build the project with successful inspections along the way. Then, your vision becomes an active part of the City. While each project is unique with its own considerations, the following information broadly explains the general steps in the City's development process.

 

iconPHASE 1: Create Your Project

PHASE 1: Create Your Project

create your project

During this phase, you are completely in control of creating your project's vision. You study the land and building(s) you are looking to purchase, gather finances, begin discussions with professional designers for conceptual designs, check against published regulations, design the plans, buy the property, and collect information or documentation in the format requested by the City for review. Ideally, your design is complete and compliant due to the work you completed in this stage, and the City needs only to confirm compliance.

iconPHASE 2:  Review and Revise

PHASE 2:  Review and Revise

Development Services Department employee reviewing building permit application

Once in the Review and Revise phase, the developing project becomes a partnership between you and the City, primarily guided by the City’s processes. The City has experts look at multiple areas of regulations to help the client ensure their designs are compliant. Ideally, you submitted a plan that meets all regulatory requirements, and the staff must check everything for approval. Typically, this phase will involve multiple attempts (cycles) of design and documentation modifications to submit your project that meets all requirements. Together, we work to achieve regulatory compliance.

 

2.1
Zoning Review

You submit your design to the City, and we confirm that it is an appropriate development for the designated zoning. If not, then your project design team and the Zoning Review team discuss options for moving forward.

2.2
Subdivision Review

Once it is determined that the project is an appropriate type of development for its location, the City works with the applicant to ensure the project is on a legally-defined portion of land and that it will be sufficiently connected with the surrounding parts of the City. If the plans are missing requirements, then the Subdivision Review team and your design team work together to reach a compliant solution.

2.3
Site Plan Review

After the legality of the land is confirmed and recorded and planned connections will ensure the project is integrated into the rest of the City, the site specifics are examined. This stage ensures that all site development standards are met, including placement of site development features such as structures and parking, drainage and water quality standards, environmental requirements, utility requirements, etc. If anything in the site design is non-compliant at this stage, the applicant’s design team and the Site Plan Review team collaborate to reach a solution.

2.4
Building Plan Review

Once there is an agreement with site development standards, the plans for the structure itself come under review. The Building Plan Review team checks that plans for physical structures will be safe and usable by occupants and visitors. Should any discrepancies be found, your design team and City staff work to find a compliant solution.

2.5
Permits

Your approved plan will now generate a permit that needs to be activated by a registered contractor. The Service Center staff handles building, mechanical, electrical, plumbing, and irrigation permit activation requests. Construction cannot start until the permits have been issued and activated.

iconPHASE 3:  Build and Inspect

PHASE 3:  Build and Inspect

build

With your permits activated, your project moves into the Build and Inspect phase. This is when you lead, with the City as a supporting partner, through inspections. You take the approved plans and bring them to life on the development site. The goal is to build a compliant and safe development project that will become part of the Austin landscape. Ideally, everything that was decided in the plans is built to the same specifications, and City inspections are there to offer a confirmation that it has been built as approved. Minor changes sometimes need to happen in the field to ensure the final building is safe.

 

3.1
Inspections

With permits in hand, you are now ready to build. You will coordinate each stage of construction with the appropriate inspections by the City. The Inspections process uses these opportunities to ensure that everything is being built as approved and following public health and safety regulations.

3.2 
Occupancy

Once everything is built according to approved plans and has successfully passed all required inspections, you will receive a Certificate of Occupancy. This allows the building and site to be used and enjoyed.

<script>

// DSD Web Modernization Toolbox V1, documentation pending

// Content Accordions

// Go through each accordion
var accordions = document.querySelectorAll('.ckeditor-accordion-container');

accordions.forEach(function (accordion, index) {


var contentSections = accordion.querySelectorAll('dt');

contentSections.forEach(function (contentSection, index) {




var contentAccordionExists = contentSection.querySelector('[id*="content-accordion"]');
var openAccordionExists = contentSection.querySelector('[id*="open-accordion"]');


if (contentAccordionExists == '[object HTMLSpanElement]') {



const classList = contentSection.querySelector('[id*="content-accordion"]').getAttribute('id');

var newContentAccordion = document.createElement("div");
newContentAccordion.className = classList;


accordion.parentNode.insertBefore(newContentAccordion, accordion.prevSibling);

let accordionHTML = contentSection.nextElementSibling.innerHTML.split('<hr>');

// content top
let contentTop = accordionHTML[0]

// content bottom
let contentBottom = accordionHTML[1];

let accordionTop = '<div class="accordion-top accordion-trigger"><div class="accordion-inner">'+ contentTop +'</div></div>'

let accordionBottom = '<div class="accordion-bottom accordion-content"><div class="accordion-inner">'+ contentBottom +'</div></div>'

newContentAccordion.innerHTML += accordionTop + accordionBottom;


newContentAccordion.querySelector('.accordion-trigger').addEventListener("click", accordionReveal);


// Open version of accordion
} else if (openAccordionExists == '[object HTMLSpanElement]') {

const classList = contentSection.querySelector('[id*="open-accordion"]').getAttribute('id');


var newOpenAccordion = document.createElement("div");
newOpenAccordion.className = classList;


accordion.parentNode.insertBefore(newOpenAccordion, accordion);

let accordionHTML = contentSection.nextElementSibling.innerHTML;

// content
let content = accordionHTML;

newOpenAccordion.innerHTML += '<div class="accordion-content"><div class="accordion-inner">'+ content +'</div></div>';


}


});

var contentAccordionExists = accordion.querySelector('[id*="content-accordion"]');
var openAccordionExists = accordion.querySelector('[id*="open-accordion"]');


if ((contentAccordionExists == '[object HTMLSpanElement]') || (openAccordionExists == '[object HTMLSpanElement]')) {

accordion.remove();
}


});



function accordionReveal(){
this.parentNode.closest('.content-accordion').querySelector('.accordion-content').classList.toggle('is-active');
}







// Feature Cards

var featureCards = document.querySelectorAll('[id*="feature-card"]');

featureCards.forEach(function (featureCard, index) {


var classList = featureCard.getAttribute('id');

var parentTable = featureCard.parentNode.closest('.table-responsive');


var newFeatureCard = document.createElement("div");
newFeatureCard.className = classList + ' row';


parentTable.parentNode.insertBefore(newFeatureCard, parentTable);

let cardImage = parentTable.querySelector('td img').outerHTML;

let cardContent = parentTable.querySelector('td').innerHTML;


newFeatureCard.innerHTML += '<div class="col-md-4 card-image">'+ cardImage +'</div><div class="col-md-8 card-content">'+ cardContent +'</div>';

parentTable.remove();

});


// Horizontal Cards

var horizontalCards = document.querySelectorAll('[id*="horizontal-card"]');

horizontalCards.forEach(function (horizontalCard, index) {


var classList = horizontalCard.getAttribute('id');

var parentTable = horizontalCard.parentNode.closest('.table-responsive');

var tableRows = parentTable.querySelectorAll('tr');

var newHorizontalCards = document.createElement("div");

newHorizontalCards.className = 'horizontal-cards row';

tableRows.forEach(function (tableRow, index) {

parentTable.parentNode.insertBefore(newHorizontalCards, parentTable.prevSibling);

let cardImage = tableRow.querySelectorAll("td")[0].innerHTML;

let cardContent = tableRow.querySelectorAll("td")[1].innerHTML;

newHorizontalCards.innerHTML += '<div class="card ' + classList + '"><div class="col-lg-3 card-image">'+ cardImage +'</div><div class="col-lg-9 card-content">'+ cardContent +'</div></div>';

});

parentTable.remove();

});

// Vertical Cards

var horizontalCards = document.querySelectorAll('[id*="vertical-card"]');

horizontalCards.forEach(function (horizontalCard, index) {


var classList = horizontalCard.getAttribute('id');

var parentTable = horizontalCard.parentNode.closest('.table-responsive');

var tableRows = parentTable.querySelectorAll('tr');

var newHorizontalCards = document.createElement("div");



newHorizontalCards.className = "vertical-cards row ";

tableRows.forEach(function (tableRow, index) {

parentTable.parentNode.insertBefore(newHorizontalCards, parentTable.prevSibling);

let cardImage = tableRow.querySelectorAll("td")[0].innerHTML;

let cardContent = tableRow.querySelectorAll("td")[1].innerHTML;

newHorizontalCards.innerHTML += '<div class=" ' + classList + ' vertical-card card"><div class="card-inner"><div class="card-image">'+ cardImage +'</div><div class="card-content">'+ cardContent +'</div></div></div>';

});

parentTable.remove();

});





// Open an accordion open when going to an anchor link

var anchorLinkButtons = document.querySelectorAll('p [href*="#"], li [href*="#"]');

anchorLinkButtons.forEach(function (anchorLinkButton, index) {

anchorLinkButton.addEventListener("click", function () {

var anchorFlag = anchorLinkButton.getAttribute('href').replace(/\#/g, "");;



var targetAccordion = document.querySelector('#' + anchorFlag);



targetAccordion.parentElement.click();
});



});


</script>
<!-- Core Styles -->
<style>

h3 {
margin-top: 0;
margin-bottom: 20px;
}


.col-sm-6.center-left {
width: 75%;
}

.center-right {
/* removes right-side */
display: none;
}

/* colors */
.background-orange,
.orange-background {
background-color: #F2E4DC !important;
}

.background-green,
.green-background {
background-color: #5EA642 !important;
}

.background-blue,
.blue-background {
background-color: #14436B !important;
}

.background-light-orange {
background-color: #FFE7D5!important;
}

.background-light-green {
background-color: #DBEDCF !important;
}

.background-light-blue {
background-color: #14426b1e !important;
}


.card-content {
margin-bottom: 20px;
}

.card h4 a,
.card h4 {
/*color: #5EA642;*/
color: black;
text-decoration: none;
margin-top: 0;
}



#converted-row h4 {
text-align: left;
}

#converted-row .card {
border-bottom: 6px solid transparent;
}

#converted-row .card:hover {
border-bottom: 6px solid #D56B27;
}

.open-accordion,
.content-accordion {
padding: 30px;
margin-bottom: 60px;
position: relative;
overflow: visible;
}

.open-accordion:last-child {
margin-bottom: 0;
}

.open-accordion .accordion-content {
margin: 0;
}

.accordion-trigger {
cursor: pointer;
}

.accordion-content {
margin: 20px 0;
transition: all 0.1s ease-out;
height: 0;
visibility: hidden;
opacity: 0;
position: absolute;
width: 100%;
overflow: hidden;
}

.accordion-content:last-child,
.accordion-content .horizontal-card:last-child {
margin-bottom: 0;
}

.open-accordion .accordion-trigger {
cursor: auto;
}

.open-accordion .accordion-content,
.accordion-content.is-active {
transition: all 1s ease-out;
opacity: 1;
height: auto;
visibility: visible;
position: relative;
}

.mini-accordion.row,
.horizontal-cards.row {
margin-left: 0;
margin-right: 0;
}

.accordion-content.card {
border-bottom: 0 !important;
cursor: auto !important;
}

.horizontal-card {
display: flex;
flex-direction: row;
padding: 20px;
margin: 0 0 40px 0;
background: white;
}

.horizontal-card p {
font-size: 15px;
}



.horizontal-card h4 {
/*color: #5EA642; */
color: black;
font-size: 20px;
margin: 0 0 10px 0;
padding: 0;
line-height: 120%;
}

.horizontal-card .card-content {
margin: 0;
display: flex;
flex-direction: column;
}


.vertical-cards {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}

.vertical-card {
display: flex;
flex-direction: column;
margin-bottom: 30px;
border: 0;
position: relative;
min-height: 1px;
padding-left: 15px;
padding-right: 15px;
width: 33.333%;
}

.column-5.vertical-card {
width: 20%;
}

.column-4.vertical-card {
width: 25%;
}

.column-3.vertical-card {
width: 33.333%;
}

.column-2.vertical-card {
width: 50%;
}

.column-1.vertical-card {
width: 100%;
}

.vertical-card .card-inner {
background: white;
height: 100%;
}

.vertical-card .card-image {
margin-bottom: 20px;
}


.icon-images .card-image img {
max-width: 220px !important;
display: block;
padding: 20px 20px 0 20px;
margin: auto auto;
}

.has-border .card-inner {
border: 1px solid black;
}

.no-background .card-inner,
.background-none {
background: none;
}

a.learn-more,
button.learn-more {
margin: auto 0;
display: block;
text-align: left;
background: #5EA642;
color: white;
padding: 10px 20px;
border: 0;
text-align: center;
width: 130px;
margin-top: 20px;
cursor: pointer;
font-weight: 500 !important;
text-decoration: none !important;
}

a.learn-more:hover,
button.learn-more:hover {
color: white;
text-decoration: none;
}

.accordion-trigger .learn-more {
pointer-events: none;
}

.horizontal-cards .card {
padding-top: 20px;
}



.feature-card .card-image,
.feature-card img {
position: relative;
height: 100%;
margin: 0;
}

.feature-card .card-content {
margin-top: 0;
margin-bottom: 0;
padding-top: 0;
padding-bottom: 0;
}

.feature-card .card-content h3 {
margin-top: 0;
}

.table-responsive img {
width: 180px !important;
}

.feature-card .card-content img {
display: none;
}

@media only screen and (min-width: 780px) {
.horizontal-cards img {
width: 100%;
display: block;
}

.reverse-order {
display: flex;
}

.reverse-order .card-image {
order: 2;
}


.reverse-order .card-content {
order: 1;
}


}

@media only screen and (max-width: 991px) {
.col-12 {
width: 100%;
}

.horizontal-cards .card,
.horizontal-card {
flex-direction: column;
}


.horizontal-cards .card-image {
order: 1;
}

.horizontal-cards .card-content {
order: 2;
}

button.learn-more {
width: 100%;
}

.block-region-centerleft {
background: none;
border-top: none;
padding: 0;
}

body.toolbar-fixed.toolbar-vertical.toolbar-tray-open.toolbar-fixed {
margin-left: 0;
}

body.toolbar-fixed.toolbar-vertical.toolbar-tray-open .navbar-fixed-top {
left: 0;
}

body.toolbar-vertical.navbar-is-fixed-top header {
top: 0 !important;
}

.col-sm-6.center-left {
width: 100%;
}

.button-list:before,
.button-list:after {
display: none;
}

.vertical-card {
width: 100% !important;
}
}

@media only screen and (min-width: 1650px) {
.block-region-centerleft {
width: 120%;
margin-left: 30px;
}
}

.feature-card .card-content h3 {
margin-top: -22px;
}

</style>
<!-- Page specific styles -->
<style>
/* Typography */
h2 {
margin-top: 0;
font-size: 30px;
}

h3 {
font-size: 24px;
}

.block-region-centerleft p {
font-size: 15px ! important;
}


.block-region-centerleft a {
color: #14436B;
}


hr {
border: 0;
border-top: 1px solid #14436B;
flex-grow: 1;
width: 100%;
opacity: .5;
margin-bottom: 20px;
}



.feature-card .card-content h3 {
margin-top: -15px;
}


.horizontal-card .card-content,
.horizontal-card .card-image {
padding-left: 0;
padding-right: 0;
}


.accordion-content {
overflow: visible;
}



.accordion-inner > h3 {
background: #d56b28;
color: white;
margin: -30px -30px 25px -30px;
padding: 10px 30px;
line-height: 110%;
font-size: 20px;
text-transform: uppercase;
letter-spacing: 0px;
font-weight: 400;
font-family: "National 2";
}

.accordion-inner > h3 strong {
font-weight: 500;
font-family: "National 2 Bold";
text-transform: none;
}


.horizontal-card.process-card {
padding: 0;
}

.horizontal-card.process-card .card-content {
padding: 20px;
}

.horizontal-card.process-card .card-image {
padding: 20px;
background: darkgrey;
}


.horizontal-card.process-card .card-image h4 {
color: white;
font-family: "National 2 Bold";
font-size: 22px;
}

.horizontal-card.process-card .card-image h4 em {
font-style: normal;
font-family: "National 2";
font-size: 16px;
}


.background-light-orange .horizontal-card.process-card .card-image,
.background-light-orange .accordion-inner > h3 {
background: #d56b28;
}

.background-light-blue .horizontal-card.process-card .card-image,
.background-light-blue .accordion-inner > h3 {
background: #1b355d;
}

.background-light-green .horizontal-card.process-card .card-image,
.background-light-green .accordion-inner > h3 {
background: #6aa342;
}



.open-accordion:before,
.open-accordion .horizontal-card:before {
content: '';
display: block;
height: 60px;
width: 1px;
border-left: 4px dashed #636d77;
position: absolute;
top: 100%;
left: 110px;
}

.open-accordion .horizontal-card:before {
left: 81px;
}

.open-accordion .horizontal-card {
margin-bottom: 40px;
position: relative;
}

.open-accordion:last-child:before,
.open-accordion .horizontal-card:last-child:before {
border: 0;
}


.open-accordion.build-and-inspect:before {
border: 0;
}



@media only screen and (min-width: 780px) {
.horizontal-card .card-content{
padding-left: 32px;
}

.feature-card .card-content {
margin-top: -15px;
}



}






@media only screen and (max-width: 991px) {

body .feature-card .card-content {
padding: 30px 0 0 0;
}

body .horizontal-card .card-content {
padding: 0;
}

.horizontal-card.process-card .card-image h4 br {
display: none;
}

.horizontal-card.process-card .card-image h4 em {
padding-right: 4px;
}


}



</style>