# University of Toronto Entrepreneurship
**Source**: https://entrepreneurs.utoronto.ca/
**Parent**: https://defygravitycampaign.utoronto.ca/news-and-stories/u-of-t-celebrates-opening-of-schwartz-reisman-innovation-campus/
### An innovation powerhouse
The U of T Entrepreneurship community consists of 12+ accelerators across our three campuses. Our entrepreneurial initiatives leverage the diverse strengths of a globally recognized university to provide an incredible range of unique offerings to current and aspiring innovators.
#
1
in Canada for research-based startups
top
5
in the world for university startup incubators
1500
+
venture-backed companies created
20
K+
jobs created
$
14
B+
funding raised
[Learn More about US](https://entrepreneurs.utoronto.ca/about/about-us/)
[2025 UTE annual report](https://entrepreneurs.utoronto.ca/ute-annual-report-2024-2025/)
## Startup spotlight
Explore U of T’s innovative startups with their world-class strengths ranging from advanced materials and manufacturing to regenerative medicine and AI.
[### This is the place to target genetic diseases](https://entrepreneurs.utoronto.ca/spotlight/this-is-the-place-to-target-genetic-diseases/)
University of Toronto startup Deep Genomics is using artificial intelligence to find better drugs for genetic disorders and to get them into the clinic faster. Ever since scientists fully sequenced…
[Innovations & Partnerships Office (IPO)](https://entrepreneurs.utoronto.ca/company/innovations-partnerships-office-ipo/ "company")
[Deep Genomics](https://entrepreneurs.utoronto.ca/startup/deep-genomics/ "startup")
[UTEST](https://entrepreneurs.utoronto.ca/accelerator/university-of-toronto-early-stage-technology-utest/ "accelerator")
[Creative Destruction Lab](https://entrepreneurs.utoronto.ca/accelerator/creative-destruction-lab/ "accelerator")
[### This is the place to help kids walk](https://entrepreneurs.utoronto.ca/spotlight/this-is-the-place-to-help-kids-walk/)
A small boy wearing Trexo Robotics assistive technology smiles as a helper shows him a tablet display University of Toronto startup Trexo Robotics is designing innovative assistive technology that supports…
[Trexo Robotics](https://entrepreneurs.utoronto.ca/startup/trexo-robotics/ "startup")
[### This is the place to expand the internet into space](https://entrepreneurs.utoronto.ca/spotlight/this-is-the-place-to-expand-the-internet-into-space/)
U of T startup Kepler Communications’ tiny internet satellites are helping scientists share field data. The more field data that scientists analyze from around the world, the better we’ll be…
[Kepler Communications Inc.](https://entrepreneurs.utoronto.ca/startup/kepler-communications/ "startup")
## Recent news
<div v-html="post.card\_html" class="vue-card"></div>
// POST COMPONENT
Vue.component('post', {
template: '#post-template',
props: {
'post': Object,
'updatePostTags': Boolean,
'filterNames': Object,
'matchingTerms': Array,
'taxonomyQueriesObj': Object,
'requiredFields': Object,
'showMatchingTagsOnly': Boolean
},
data: function() {
return {
isHovering: false
}
},
computed: {
cardType() {
return this.post.card\_type ? "single-post--" + this.post.card\_type : '';
},
overline() {
return "spotlight" !== this.post.card\_type ? this.post.overline : '';
},
linkTarget() {
return "external" === this.post.link\_location ? "\_blank" : "\_self";
}
},
methods: {
tagType(taxonomy) {
return "tag--" + taxonomy;
},
tagTitle(term) {
const taxonomy = term.taxonomy;
const termName = term.name;
// console.log(term, taxonomy, termName)
let niceName = taxonomy.replace(/-/g, ' ');
niceName = taxonomy.replace(/\_/g, ' ');
return niceName + ": " + termName;
},
showTag(term) {
return term && 'Uncategorized' !== term.name && this.matchingTerms && this.matchingTerms.includes(term.id.toString()) ? true : false;
},
},
mounted() {
this.$nextTick(() => {
// The whole view is rendered, so I can safely access or query
// the DOM. ¯\\_(ツ)\_/¯
ute.animateCards(jQuery);
})
}
});
<div class="pagination">
<template v-if="pages.length > 1">
<button v-on:click="updatePageNum('prev')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === 1}">Previous Page</button>
<form class="pagination\_\_form">
<label class="pagination\_\_item" :class="{' pagination\_\_item--current': page === pageNum}" v-for="(page, key) of pages">
<template v-if="separate(page, key)">...</template>
<span v-html="page"></span>
<input type="radio" :value="page" v-model="pageNumber">
</label>
</form>
<button v-on:click="updatePageNum('next')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === pages[pages.length - 1]}">Next Page</button>
</template>
</div>
// PAGINATION
Vue.component('posts-pagination', {
template: '#pagination-template',
props: {
pages: Array,
pageNum: Number
},
data: function () {
return {
pageNumber: this.pageNum ? this.pageNum : ""
}
},
watch: {
/\* watch for updates in page number and push data to instance
(will trigger new fetch) \*/
pageNumber: {
handler(val) {
this.$emit("update-page", val);
}
}
},
methods: {
separate: function(page, key) {
var current = this.pages[key];
var previous = this.pages[key - 1];
var gap = page - previous;
return gap && gap > 1 ? true : false;
},
// update page number based on click of pre / next buttons
updatePageNum: function(direction){
if(direction === "prev" && this.pageNumber > 1) {
this.pageNumber = this.pageNumber - 1;
} else if(direction === "next" && this.pageNumber < this.pages[this.pages.length - 1]) {
this.pageNumber++;
}
}
}
});
<div :class="classes">
<div class="btn">
<span class="btn\_\_text" @click="$emit('update-page', increasedPageNum)">{{loading ? 'Loading ...' : label}}</span>
</div>
</div>
Vue.component('load-more', {
template: '#loadmore-template',
props: {
label: {
type: String,
required: false
},
totalResults: {
type: Number,
required: true
},
postsPerPage: {
type: String,
required: true
},
pageNum: {
type: Number,
required: true
},
loading: {
type: Boolean,
required: false
}
},
computed: {
increasedPageNum() {
let currentPageNum = this.pageNum;
return currentPageNum + 1;
},
classes() {
let totalPages = this.totalResults / this.postsPerPage;
return totalPages >= this.pageNum ? 'loadmore' : 'loadmore loadmore--hidden';
}
}
});
There are no Results for your current selection. Try resetting the filters or clearing your search term to view all
There are no results available ...
[more news](https://entrepreneurs.utoronto.ca/news/)
## Community events
Upcoming
Past
<div v-html="post.card\_html" class="vue-card"></div>
// POST COMPONENT
Vue.component('post', {
template: '#post-template',
props: {
'post': Object,
'updatePostTags': Boolean,
'filterNames': Object,
'matchingTerms': Array,
'taxonomyQueriesObj': Object,
'requiredFields': Object,
'showMatchingTagsOnly': Boolean
},
data: function() {
return {
isHovering: false
}
},
computed: {
cardType() {
return this.post.card\_type ? "single-post--" + this.post.card\_type : '';
},
overline() {
return "spotlight" !== this.post.card\_type ? this.post.overline : '';
},
linkTarget() {
return "external" === this.post.link\_location ? "\_blank" : "\_self";
}
},
methods: {
tagType(taxonomy) {
return "tag--" + taxonomy;
},
tagTitle(term) {
const taxonomy = term.taxonomy;
const termName = term.name;
// console.log(term, taxonomy, termName)
let niceName = taxonomy.replace(/-/g, ' ');
niceName = taxonomy.replace(/\_/g, ' ');
return niceName + ": " + termName;
},
showTag(term) {
return term && 'Uncategorized' !== term.name && this.matchingTerms && this.matchingTerms.includes(term.id.toString()) ? true : false;
},
},
mounted() {
this.$nextTick(() => {
// The whole view is rendered, so I can safely access or query
// the DOM. ¯\\_(ツ)\_/¯
ute.animateCards(jQuery);
})
}
});
<div class="pagination">
<template v-if="pages.length > 1">
<button v-on:click="updatePageNum('prev')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === 1}">Previous Page</button>
<form class="pagination\_\_form">
<label class="pagination\_\_item" :class="{' pagination\_\_item--current': page === pageNum}" v-for="(page, key) of pages">
<template v-if="separate(page, key)">...</template>
<span v-html="page"></span>
<input type="radio" :value="page" v-model="pageNumber">
</label>
</form>
<button v-on:click="updatePageNum('next')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === pages[pages.length - 1]}">Next Page</button>
</template>
</div>
// PAGINATION
Vue.component('posts-pagination', {
template: '#pagination-template',
props: {
pages: Array,
pageNum: Number
},
data: function () {
return {
pageNumber: this.pageNum ? this.pageNum : ""
}
},
watch: {
/\* watch for updates in page number and push data to instance
(will trigger new fetch) \*/
pageNumber: {
handler(val) {
this.$emit("update-page", val);
}
}
},
methods: {
separate: function(page, key) {
var current = this.pages[key];
var previous = this.pages[key - 1];
var gap = page - previous;
return gap && gap > 1 ? true : false;
},
// update page number based on click of pre / next buttons
updatePageNum: function(direction){
if(direction === "prev" && this.pageNumber > 1) {
this.pageNumber = this.pageNumber - 1;
} else if(direction === "next" && this.pageNumber < this.pages[this.pages.length - 1]) {
this.pageNumber++;
}
}
}
});
<div :class="classes">
<div class="btn">
<span class="btn\_\_text" @click="$emit('update-page', increasedPageNum)">{{loading ? 'Loading ...' : label}}</span>
</div>
</div>
Vue.component('load-more', {
template: '#loadmore-template',
props: {
label: {
type: String,
required: false
},
totalResults: {
type: Number,
required: true
},
postsPerPage: {
type: String,
required: true
},
pageNum: {
type: Number,
required: true
},
loading: {
type: Boolean,
required: false
}
},
computed: {
increasedPageNum() {
let currentPageNum = this.pageNum;
return currentPageNum + 1;
},
classes() {
let totalPages = this.totalResults / this.postsPerPage;
return totalPages >= this.pageNum ? 'loadmore' : 'loadmore loadmore--hidden';
}
}
});
There are no Results for your current selection. Try resetting the filters or clearing your search term to view all
There are no results available ...
[VIEW ALL EVENTS](https://entrepreneurs.utoronto.ca/events/events-calendar/)
<div v-html="post.card\_html" class="vue-card"></div>
// POST COMPONENT
Vue.component('post', {
template: '#post-template',
props: {
'post': Object,
'updatePostTags': Boolean,
'filterNames': Object,
'matchingTerms': Array,
'taxonomyQueriesObj': Object,
'requiredFields': Object,
'showMatchingTagsOnly': Boolean
},
data: function() {
return {
isHovering: false
}
},
computed: {
cardType() {
return this.post.card\_type ? "single-post--" + this.post.card\_type : '';
},
overline() {
return "spotlight" !== this.post.card\_type ? this.post.overline : '';
},
linkTarget() {
return "external" === this.post.link\_location ? "\_blank" : "\_self";
}
},
methods: {
tagType(taxonomy) {
return "tag--" + taxonomy;
},
tagTitle(term) {
const taxonomy = term.taxonomy;
const termName = term.name;
// console.log(term, taxonomy, termName)
let niceName = taxonomy.replace(/-/g, ' ');
niceName = taxonomy.replace(/\_/g, ' ');
return niceName + ": " + termName;
},
showTag(term) {
return term && 'Uncategorized' !== term.name && this.matchingTerms && this.matchingTerms.includes(term.id.toString()) ? true : false;
},
},
mounted() {
this.$nextTick(() => {
// The whole view is rendered, so I can safely access or query
// the DOM. ¯\\_(ツ)\_/¯
ute.animateCards(jQuery);
})
}
});
<div class="pagination">
<template v-if="pages.length > 1">
<button v-on:click="updatePageNum('prev')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === 1}">Previous Page</button>
<form class="pagination\_\_form">
<label class="pagination\_\_item" :class="{' pagination\_\_item--current': page === pageNum}" v-for="(page, key) of pages">
<template v-if="separate(page, key)">...</template>
<span v-html="page"></span>
<input type="radio" :value="page" v-model="pageNumber">
</label>
</form>
<button v-on:click="updatePageNum('next')" class="pagination\_\_button" :class="{' pagination\_\_button--disabled': pageNum === pages[pages.length - 1]}">Next Page</button>
</template>
</div>
// PAGINATION
Vue.component('posts-pagination', {
template: '#pagination-template',
props: {
pages: Array,
pageNum: Number
},
data: function () {
return {
pageNumber: this.pageNum ? this.pageNum : ""
}
},
watch: {
/\* watch for updates in page number and push data to instance
(will trigger new fetch) \*/
pageNumber: {
handler(val) {
this.$emit("update-page", val);
}
}
},
methods: {
separate: function(page, key) {
var current = this.pages[key];
var previous = this.pages[key - 1];
var gap = page - previous;
return gap && gap > 1 ? true : false;
},
// update page number based on click of pre / next buttons
updatePageNum: function(direction){
if(direction === "prev" && this.pageNumber > 1) {
this.pageNumber = this.pageNumber - 1;
} else if(direction === "next" && this.pageNumber < this.pages[this.pages.length - 1]) {
this.pageNumber++;
}
}
}
});
<div :class="classes">
<div class="btn">
<span class="btn\_\_text" @click="$emit('update-page', increasedPageNum)">{{loading ? 'Loading ...' : label}}</span>
</div>
</div>
Vue.component('load-more', {
template: '#loadmore-template',
props: {
label: {
type: String,
required: false
},
totalResults: {
type: Number,
required: true
},
postsPerPage: {
type: String,
required: true
},
pageNum: {
type: Number,
required: true
},
loading: {
type: Boolean,
required: false
}
},
computed: {
increasedPageNum() {
let currentPageNum = this.pageNum;
return currentPageNum + 1;
},
classes() {
let totalPages = this.totalResults / this.postsPerPage;
return totalPages >= this.pageNum ? 'loadmore' : 'loadmore loadmore--hidden';
}
}
});
There are no Results for your current selection. Try resetting the filters or clearing your search term to view all
There are no results available ...