-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetting-started.html
111 lines (109 loc) · 71.7 KB
/
getting-started.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Getting Started | Ts.ED a modern Node.js/Bun.js framework built with TypeScript on top of Express.js/Koa.js</title>
<meta name="description" content="Start your first Ts.ED project with the CLI or clone a starter project. Ts.ED provides a conventional base structure for your project, making it easy to get started. Choose from a variety of starter projects to find the one that best suits your needs.">
<meta name="generator" content="VitePress v1.5.0">
<link rel="preload stylesheet" href="/assets/style.BaoJCequ.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.pfw-cN2H.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BFeT2n_I.js">
<link rel="modulepreload" href="/assets/chunks/framework.JWorlyEv.js">
<link rel="modulepreload" href="/assets/getting-started.md.DRLIGG8r.lean.js">
<link rel="icon" type="image/png" href="/tsed-og.png">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16">
<link rel="icon" href="/apple-touch-icon.png" type="image/x-icon" sizes="180x180">
<meta name="theme-color" content="#5f67ee">
<meta property="og:type" content="website">
<meta property="og:locale" content="en">
<meta property="og:title" content="Ts.ED a modern Node.js/Bun.js framework built with TypeScript on top of Express.js/Koa.js">
<meta property="og:site_name" content="Ts.ED">
<meta property="og:image" content="https://tsed.dev/tsed-og.png">
<meta property="og:url" content="https://tsed.dev/">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-3M3Q4QME6H&cx=c&_slc=1"></script>
<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-3M3Q4QME6H");</script>
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="keywords" content="installation ts.ed framework express koa aws cli di rest graphql typescript node.js bun.js javascript native ESM decorators jsonschema class models providers pipes middlewares testing developer">
<link rel="canonical" href="https://tsed.dev/getting-started.html">
</head>
<body>
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!--[--><img class="VPImage logo" src="/tsed.svg" alt data-v-ab19afbb><!--]--><!----><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>Getting started</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuGroup" data-v-20ed86d6 data-v-a6b0397c><p class="title" data-v-a6b0397c>Introduction</p><!--[--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/what-is-tsed.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>What is Ts.ED?</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/what-is-news-v8.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>What's new in v8?</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/capabilities.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Capabilities</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/getting-started.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Installation</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/create-your-first-controller.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Create your first controller</span><!--]--></a></div><!--]--><!--]--></div><!--]--><!--[--><div class="VPMenuGroup" data-v-20ed86d6 data-v-a6b0397c><p class="title" data-v-a6b0397c>Migration</p><!--[--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/migrate-from-v7.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Migrate from v7</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/migrate-from-v6.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Migrate v6 to v7</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-a6b0397c data-v-7eeeb2dc><a class="VPLink link" href="/introduction/migrate-from-express.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Migrate from Express</span><!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>Documentation</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/configuration/" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Configuration</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/controllers.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Controllers</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/providers.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>DI & Providers</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/model.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Models</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/json-mapper.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Json Mapper</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/middlewares.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Middlewares</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/pipes.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Pipes</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/interceptors.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Interceptors</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/validation.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Validation</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/authentication.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Authentication</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/hooks.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Hooks</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/response-filter.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Response filter</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/exceptions.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Exceptions</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/logger.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Logger</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/request-context.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Context</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/cache.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Cache</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/platform-api.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Platform API</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/platform-serverless.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Platform Serverless</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/platform-serverless-http.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Platform Serverless HTTP</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/command.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Command</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/custom-endpoint-decorators.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Custom decorators</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/templating.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Templating</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/session.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Session & Cookies</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/testing.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Testing</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/upload-files.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Upload files</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/docs/not-found-page.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Customize 404</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/api.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Api references</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>Tutorials</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/agenda.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Agenda</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/ajv.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>AJV</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/aws.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>AWS</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/bullmq.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>BullMQ</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/graphql.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>GraphQL</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/ioredis.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>IORedis</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/jest.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Jest</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/keycloak.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Keycloak</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/mikroorm.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>MikroORM</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/mongoose.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Mongoose</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/objection.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Objection.js</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/oidc.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>OIDC</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/passport.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Passport.js</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/prisma.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Prisma</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/pulse.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Pulse</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/scalar.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Scalar</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/server-sent-events.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Server-sent events</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/serverless.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Serverless</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/socket-io.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Socket.io</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/stripe.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Stripe</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/swagger.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Swagger</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/temporal.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Temporal</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/terminus.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Terminus</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/typeorm.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>TypeORM</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/vike.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Vike</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/tutorials/vitest.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Vitest</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/plugins/index.html" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Plugins</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-afb2845e data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-bfe7971f><span class="text" data-v-bfe7971f><!----><span data-v-bfe7971f>8.7.1</span><span class="vpi-chevron-down text-icon" data-v-bfe7971f></span></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><div class="items" data-v-20ed86d6><!--[--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://github.com/tsedio/tsed/releases" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Releases</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://v7.tsed.dev" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>v7 (maintenance)</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://v6.tsed.dev" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>v6 (obsolete)</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://v5.tsed.dev" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>v5 (obsolete)</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link vp-external-link-icon" href="https://github.com/tsedio/tsed/blob/production/CONTRIBUTING.md" target="_blank" rel="noreferrer" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Contributing</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-20ed86d6 data-v-7eeeb2dc><a class="VPLink link" href="/more/team.html" data-v-7eeeb2dc><!--[--><span data-v-7eeeb2dc>Team</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/tsedio/tsed" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><a class="VPSocialLink no-icon" href="https://slack.tsed.io" aria-label="slack" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-slack"></span></a><a class="VPSocialLink no-icon" href="https://x.com/TsED_io" aria-label="twitter" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-twitter"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>Appearance</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/tsedio/tsed" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><a class="VPSocialLink no-icon" href="https://slack.tsed.io" aria-label="slack" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-slack"></span></a><a class="VPSocialLink no-icon" href="https://x.com/TsED_io" aria-label="twitter" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-twitter"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav empty fixed" data-v-d8b57b2d data-v-2488c25a><div class="container" data-v-2488c25a><!----><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2488c25a data-v-883964e0><button data-v-883964e0>Return to top</button><!----></div></div></div><!----><div class="VPContent" id="VPContent" data-v-d8b57b2d data-v-9a6c75ad><div class="VPDoc has-aside" data-v-9a6c75ad data-v-e6f2a212><!--[--><!--]--><div class="container" data-v-e6f2a212><div class="aside" data-v-e6f2a212><div class="aside-curtain" data-v-e6f2a212></div><div class="aside-container" data-v-e6f2a212><div class="aside-content" data-v-e6f2a212><div class="VPDocAside" data-v-e6f2a212 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-cb998dce data-v-f610f197><div class="content" data-v-f610f197><div class="outline-marker" data-v-f610f197></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-f610f197>On this page</div><ul class="VPDocOutlineItem root" data-v-f610f197 data-v-53c99d69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e6f2a212><div class="content-container" data-v-e6f2a212><!--[--><!--]--><main class="main" data-v-e6f2a212><div style="position:relative;" class="vp-doc _getting-started" data-v-e6f2a212><div><h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to "Getting Started""></a></h1><h2 id="try-it-online" tabindex="-1">Try it online <a class="header-anchor" href="#try-it-online" aria-label="Permalink to "Try it online""></a></h2><p>You can try Ts.ED directly in your browser on <a href="https://codesandbox.io/p/devbox/tsed-mongoose-example-omkbm" target="_blank" rel="noreferrer">CodeSandbox</a>.</p><h2 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h2><p>To get started, you can either scaffold the project with the Ts.ED CLI, or clone a starter project.</p><p>To scaffold the project with the CLI, run the following commands. This will create a new project directory, and populate the directory with the initial core Ts.ED files and supporting modules, creating a conventional base structure for your project. Creating a new project with the CLI is recommended for first-time users.</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-RJnr2" id="tab-Y82KDze" checked><label data-title="npm" for="tab-Y82KDze">npm</label><input type="radio" name="group-RJnr2" id="tab-zmrfLp9"><label data-title="yarn" for="tab-zmrfLp9">yarn</label><input type="radio" name="group-RJnr2" id="tab-LOwiccJ"><label data-title="pnpm" for="tab-LOwiccJ">pnpm</label><input type="radio" name="group-RJnr2" id="tab-EXscl-I"><label data-title="bun" for="tab-EXscl-I">bun</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @tsed/cli</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tsed</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> set</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> version</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> berry</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dlx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @tsed/cli</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tsed</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --package=@tsed/cli</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dlx</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tsed</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bnx</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @tsed/cli</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tsed</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> init</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div></div></div><p>You will be greeted with a few simple questions:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose the target platform: (Use arrow keys)</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Express.js</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Koa.js</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose the architecture for your project: (Use arrow keys)</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Ts.ED</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Feature</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose the convention file styling: (Use arrow keys)</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Ts.ED</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Angular</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Check the features needed for your project (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;"> ◉</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Swagger</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> ◯ OpenID Connect provider</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;"> ◉</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Testing</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯</span><span style="--shiki-light:#28a745;--shiki-dark:#34d058;"> ◉</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Linter</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> ◯ Commands</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> ◯ TypeGraphQL</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> ◯ Database</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose unit framework (Use arrow keys)</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Jest</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Mocha + Chai + Sinon</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose linter tools framework (Use arrow keys)</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ EsLint</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose extra linter tools (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;"> ◉</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Prettier</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯</span><span style="--shiki-light:#28a745;--shiki-dark:#34d058;"> ◉</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Lint on commit</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose the runtime:</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Node.js</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Node.js + Babel</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Node.js + Webpack</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Node.js + SWC</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Bun.js (experimental)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">?</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Choose the package manager:</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> NPM</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> Yarn</span></span>
<span class="line"><span style="--shiki-light:#1b7c83;--shiki-dark:#39c5cf;">❯ Yarn Berry</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>By default, it's recommended to select the following options: Express, Ts.ED (convention), Swagger, Jest and Eslint + prettier.</p></div><p>When all options are selected, the CLI will generate all files. When it's done, run one of this command:</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-n26jJ" id="tab-NlJIxfT" checked><label data-title="npm" for="tab-NlJIxfT">npm</label><input type="radio" name="group-n26jJ" id="tab-Z0N30GT"><label data-title="yarn" for="tab-Z0N30GT">yarn</label><input type="radio" name="group-n26jJ" id="tab-u2kP_K4"><label data-title="pnpm" for="tab-u2kP_K4">pnpm</label><input type="radio" name="group-n26jJ" id="tab-T8vVcg_"><label data-title="bun" for="tab-T8vVcg_">bun</label></div><div class="blocks"><div class="language-sh vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span></span></code></pre></div><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bun</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span></span></code></pre></div></div></div><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.798] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Loading EXPRESS platform adapter... </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+2ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.800] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Injector created... </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+2ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.934] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Build providers </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+134ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.986] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Settings and injector loaded... </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+52ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.986] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Mount app context </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+0ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.986] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Load routes </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+0ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.990] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Routes mounted... </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+4ms</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.990] [INFO ] [TSED] - </span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">┌───────────────┬───────────────────┬────────────────────────────┐</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">│ Method │ Endpoint │ Class method │</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">│───────────────│───────────────────│────────────────────────────│</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">│ </span><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">GET</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> │ /rest/hello-world │ HelloWorldController.get() │</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">│───────────────│───────────────────│────────────────────────────│</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">│ </span><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">GET</span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;"> │ / │ IndexController.get() │</span></span>
<span class="line"><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">└───────────────┴───────────────────┴────────────────────────────┘</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.993] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Listen server on http://0.0.0.0:8083</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.993] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">[default] Swagger JSON is available on http://0.0.0.0:8083/doc/swagger.json</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.993] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">[default] Swagger UI is available on http://0.0.0.0:8083/doc/</span></span>
<span class="line"><span style="--shiki-light:#28a745;--shiki-dark:#34d058;">[2024-02-18T12:51:22.993] [INFO ] [TSED] - </span><span style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;">Started in 197 ms </span><span style="--shiki-light:#dbab09;--shiki-dark:#ffea7f;">+3ms</span></span></code></pre></div><h2 id="update-dependencies" tabindex="-1">Update dependencies <a class="header-anchor" href="#update-dependencies" aria-label="Permalink to "Update dependencies""></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If you have to upgrade Ts.ED dependencies, keep in mind this point:</p><p>It's really important to keep the same version for all <code>@tsed/*</code> (excepted @tsed/logger) packages. To prevent errors, fix the version for each Ts.ED packages:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "dependencies"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/common"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/di"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/core"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/exceptions"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/platform-express"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "@tsed/swagger"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"7.53.0"</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div><h2 id="project-examples" tabindex="-1">Project examples <a class="header-anchor" href="#project-examples" aria-label="Permalink to "Project examples""></a></h2><p>Alternatively, you can check out one of these projects:</p><div class="bg-gray-100 rounded-md my-5 p-5"><ul class="mb-5 reset-list flex flex-wrap items-center gap-5" type="projects"><!--[--><li class=""><a href="https://github.com/tsedio/tsed-getting-started" outbound="false" title="Kit basic" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit basic" data-url="/tsed.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit basic</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/borjapazr/express-typescript-skeleton" outbound="false" title="Kit production-ready template" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit production-ready template" data-url="/tsed.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit producti...</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-react" outbound="false" title="Kit React" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit React" data-url="/react.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit React</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-vuejs" outbound="false" title="Kit Vue.js" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Vue.js" data-url="/vuejs.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Vue.js</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-prisma" outbound="false" title="Kit Prisma" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Prisma" data-url="/prisma-2.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Prisma</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-typeorm" outbound="false" title="Kit TypeORM" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit TypeORM" data-url="/typeorm.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit TypeORM</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-mongoose" outbound="false" title="Kit Mongoose" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Mongoose" data-url="/mongoose.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Mongoose</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-socketio" outbound="false" title="Kit Socket.io" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Socket.io" data-url="/socketio.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Socket.i...</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-passportjs" outbound="false" title="Kit Passport.js" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Passport.js" data-url="/passportjs.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Passport...</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-aws" outbound="false" title="Kit AWS" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit AWS" data-url="/aws.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit AWS</figcaption></figure><!--]--></a></li><li class=""><a href="https://github.com/tsedio/tsed-example-passport-azure-ad" outbound="false" title="Kit Azure AD" class="button-badge block reset-link" innerpadding="0" liclass><!--[--><figure data-testid="button-badge-content" class="text-xxs flex flex-col transition-all relative no-underline"><span class="flex items-center justify-center relative z-2 rounded-2xl overflow-hidden mb-2 bg-white shadow-none" style="width:65px;height:65px;"><img alt="Image: Kit Azure AD" data-url="/azure.png" class="rounded-2xl w-full opacity-0 transition-all no-shadow"></span><!----><figcaption style="width:65px;" class="font-normal flex items-center justify-center whitespace-pre">Kit Azure AD</figcaption></figure><!--]--></a></li><!--]--></ul></div><p>If none of previous solutions are satisfying maybe you are in these cases:</p><ul><li><a href="/introduction/migrate-from-v6.html">I want to migrate my application from Ts.ED v6</a></li><li><a href="/introduction/migrate-from-express.html">I want to migrate my application from Express.js</a></li></ul><h2 id="what-s-next" tabindex="-1">What's next? <a class="header-anchor" href="#what-s-next" aria-label="Permalink to "What's next?""></a></h2><p>Now you can follow one of these links to develop your new application:</p><ul><li><a href="/introduction/create-your-first-controller.html">Create your first controller</a></li><li><a href="/docs/configuration/">Change server configuration</a></li><li><a href="/docs/configuration/">Load configuration from files</a></li><li><a href="/docs/platform-api.html">What is the Platform API</a></li></ul></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><div class="edit-info" data-v-1bcd8184><div class="edit-link" data-v-1bcd8184><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/tsedio/tsed/edit/production/docs/getting-started.md" target="_blank" rel="noreferrer" data-v-1bcd8184><!--[--><span class="vpi-square-pen edit-link-icon" data-v-1bcd8184></span> Edit this page<!--]--></a></div><div class="last-updated" data-v-1bcd8184><p class="VPLastUpdated" data-v-1bcd8184 data-v-1bb0c8a8>Last updated: <time datetime="2025-03-23T18:42:07.000Z" data-v-1bb0c8a8></time></p></div></div><!----></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter" data-v-d8b57b2d data-v-566314d4><div class="container" data-v-566314d4><p class="message" data-v-566314d4>Released under the MIT License.</p><p class="copyright" data-v-566314d4>Copyright © 2019-present Romain Lenzotti</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api.md\":\"BGKqLH5F\",\"contributing.md\":\"BoJW1_S7\",\"docs_authentication.md\":\"B7OYW9Vn\",\"docs_cache.md\":\"ARQ2pr85\",\"docs_command.md\":\"Cvd35_fE\",\"docs_configuration.md\":\"Ca0tZOGW\",\"docs_configuration_express.md\":\"C6tXWORR\",\"docs_configuration_index.md\":\"CVyvR9uo\",\"docs_configuration_koa.md\":\"Dq6jRESG\",\"docs_configuration_load-configuration-from-file.md\":\"DxB_qzGW\",\"docs_controllers.md\":\"eBRcZl8F\",\"docs_custom-endpoint-decorators.md\":\"DyTpxkPn\",\"docs_custom-providers.md\":\"CAgWpUzj\",\"docs_exceptions.md\":\"CeyIvCc5\",\"docs_hooks.md\":\"BEU3kuuk\",\"docs_injection-scopes.md\":\"Dm-NTN_e\",\"docs_interceptors.md\":\"C00TO-fu\",\"docs_json-mapper.md\":\"BqUQFXi5\",\"docs_koa.md\":\"BBRPpyhI\",\"docs_logger.md\":\"DJ8w-izU\",\"docs_middlewares.md\":\"Dh_1eDB3\",\"docs_model.md\":\"BgE94cOd\",\"docs_not-found-page.md\":\"Ydh6gP8k\",\"docs_pipes.md\":\"k4FNrTGk\",\"docs_platform-api.md\":\"B7fm22jN\",\"docs_platform-serverless-http.md\":\"4q8gzG1c\",\"docs_platform-serverless.md\":\"9885KNrk\",\"docs_providers-lazy-loading.md\":\"Dqhnn-Dw\",\"docs_providers.md\":\"CjLETSxB\",\"docs_request-context.md\":\"CvhxPtnJ\",\"docs_response-filter.md\":\"D8T3gmIb\",\"docs_serve-files.md\":\"FxHixoDu\",\"docs_session.md\":\"BDHGFWW4\",\"docs_templating.md\":\"CjDdEeZ_\",\"docs_testing.md\":\"3Gy4WGjB\",\"docs_upload-files.md\":\"sWfxAUGx\",\"docs_validation.md\":\"DDjSNlCj\",\"getting-started.md\":\"DRLIGG8r\",\"index.md\":\"wBjS6_uw\",\"introduction_capabilities.md\":\"BLNIu_ez\",\"introduction_create-your-first-controller.md\":\"Dt_x7uTZ\",\"introduction_getting-started.md\":\"DYgd8iCJ\",\"introduction_migrate-from-express.md\":\"xhw3Vgnn\",\"introduction_migrate-from-v6.md\":\"CMgmTNwr\",\"introduction_migrate-from-v7.md\":\"Dwv82kdA\",\"introduction_what-is-news-v8.md\":\"qCsNcmXS\",\"introduction_what-is-tsed.md\":\"BqcXwAXJ\",\"more_team.md\":\"92pEV1LI\",\"plugins_index.md\":\"CR3WjcSe\",\"tutorials_agenda.md\":\"DZPyRUJz\",\"tutorials_ajv.md\":\"B8co_ddB\",\"tutorials_aws.md\":\"DhRgYFS9\",\"tutorials_bullmq.md\":\"BADAzsop\",\"tutorials_graphql-apollo.md\":\"Ie9_CMEd\",\"tutorials_graphql-nexus.md\":\"C0Ts6O-5\",\"tutorials_graphql-typegraphql.md\":\"YfIyVryU\",\"tutorials_graphql-ws.md\":\"CViLhElE\",\"tutorials_graphql.md\":\"CK0Z9i8d\",\"tutorials_ioredis.md\":\"CdaPqaCv\",\"tutorials_jest.md\":\"SxdqPUNC\",\"tutorials_keycloak.md\":\"rObQbfp4\",\"tutorials_mikroorm.md\":\"Crh_2VBT\",\"tutorials_mongoose.md\":\"CJl1HxPl\",\"tutorials_objection.md\":\"DNbFb8R4\",\"tutorials_oidc.md\":\"BJbad-ld\",\"tutorials_passport.md\":\"CMdmiwua\",\"tutorials_prisma.md\":\"Cufwolwb\",\"tutorials_pulse.md\":\"B8szE0Do\",\"tutorials_scalar.md\":\"Cl7SzXnk\",\"tutorials_server-sent-events.md\":\"B2lAdd0H\",\"tutorials_serverless.md\":\"tfEqQBys\",\"tutorials_snippets_graphql_graphql-ws.md\":\"CiYGS0Uo\",\"tutorials_socket-io.md\":\"C5iuy9AR\",\"tutorials_stripe.md\":\"Crm6bW3N\",\"tutorials_swagger.md\":\"DmqZn_FV\",\"tutorials_temporal.md\":\"C9vFbzZA\",\"tutorials_terminus.md\":\"Dy6GK7hn\",\"tutorials_typeorm.md\":\"e-kFFF12\",\"tutorials_vike.md\":\"Bcc6n7gs\",\"tutorials_vitest.md\":\"CQuhyHoK\",\"warehouse_index.md\":\"DzcNmxte\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Ts.ED a modern Node.js/Bun.js framework built with TypeScript on top of Express.js/Koa.js\",\"description\":\"Ts.ED offers a flexible and easy-to-learn structure designed to enhance the developer experience. It provides decorators, guidelines, and supports Node.js, Bun.js, Express, Koa, CLI, and serverless architectures (e.g., AWS).\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/tsed.svg\",\"siteTitle\":false,\"apiUrl\":\"/api.json\",\"team\":[{\"title\":\"Romain Lenzotti\",\"job\":\"Tech Lead Fullstack\",\"src\":\"https://avatars3.githubusercontent.com/u/1763311?v=4\",\"github\":\"Romakita\",\"twitter\":\"RomainLenzotti\",\"website\":\"https://tsed.io\",\"country\":\"France\",\"city\":\"Paris\",\"role\":\"Framework Author\"},{\"title\":\"Loriane Eymann\",\"job\":\"Developer Fullstack\",\"src\":\"https://avatars.githubusercontent.com/u/34451946?v=4\",\"github\":\"LorianeE\",\"country\":\"France\",\"city\":\"Paris\",\"role\":\"Framework\"},{\"title\":\"Camfou\",\"job\":\"Tech lead Fullstack\",\"src\":\"https://avatars.githubusercontent.com/u/282491?v=4\",\"github\":\"Camfou\",\"country\":\"France\",\"city\":\"Paris\",\"role\":\"Framework - OIDC expert\"},{\"title\":\"Artem Derevnjuk\",\"job\":\"Developer\",\"src\":\"https://avatars.githubusercontent.com/u/38690835?v=4\",\"github\":\"derevnjuk\",\"country\":\"USA\",\"city\":\"NoWhere\",\"role\":\"Framework - Mikro ORM expert\"},{\"title\":\"Nino Bergen\",\"job\":\"Developer Fullstack\",\"src\":\"https://avatars.githubusercontent.com/u/39458340?v=4\",\"github\":\"xCryzed\",\"country\":\"Germany\",\"city\":\"Aachen\",\"role\":\"Framework - Keycloak expert\"},{\"title\":\"Emilien Leroy\",\"job\":\"Developer Fullstack\",\"src\":\"https://avatars.githubusercontent.com/u/31723722?v=4\",\"github\":\"EmilienLeroy\",\"country\":\"France\",\"city\":\"NoWhere\",\"role\":\"Contributor\"},{\"title\":\"Oliver Christen\",\"job\":\"Developer\",\"src\":\"https://avatars.githubusercontent.com/u/25102041?v=4\",\"github\":\"ochrstn\",\"country\":\"Germany\",\"city\":\"NoWhere\",\"role\":\"Contributor\"},{\"title\":\"Ralph Khreish\",\"job\":\"Developer Fullstack\",\"src\":\"https://avatars.githubusercontent.com/u/35776126?v=4\",\"github\":\"Crunchyman-ralph\",\"twitter\":\"RalphEcom\",\"country\":\"France\",\"city\":\"Paris\",\"role\":\"Contributor\"},{\"title\":\"Abenet Tamiru\",\"job\":\"Developer\",\"src\":\"https://avatars.githubusercontent.com/u/7523903?v=4\",\"github\":\"abenerd\",\"country\":\"\",\"city\":\"NoWhere\",\"role\":\"Contributor\"},{\"title\":\"Abenet Tamiru\",\"job\":\"Developer\",\"src\":\"https://avatars.githubusercontent.com/u/20899975?v=4\",\"github\":\"EinfachHans\",\"country\":\"Germany\",\"city\":\"Cologne\",\"role\":\"Contributor\"}],\"apiRedirectUrl\":\"\",\"repo\":\"tsedio/tsed\",\"githubProxyUrl\":\"https://api.tsed.io/rest/github/tsedio/tsed\",\"editLink\":{\"pattern\":\"https://github.com/tsedio/tsed/edit/production/docs/:path\"},\"search\":{\"provider\":\"algolia\",\"options\":{\"appId\":\"DH8VVM2E1E\",\"apiKey\":\"9a1620e0f36bc5dc3b0982fdcbdd6f5f\",\"indexName\":\"ts_ed\"}},\"nav\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"What is Ts.ED?\",\"link\":\"/introduction/what-is-tsed\"},{\"text\":\"What's new in v8?\",\"link\":\"/introduction/what-is-news-v8\"},{\"text\":\"Capabilities\",\"link\":\"/introduction/capabilities\"},{\"text\":\"Installation\",\"link\":\"/introduction/getting-started\"},{\"text\":\"Create your first controller\",\"link\":\"/introduction/create-your-first-controller\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Migrate from v7\",\"link\":\"/introduction/migrate-from-v7\"},{\"text\":\"Migrate v6 to v7\",\"link\":\"/introduction/migrate-from-v6\"},{\"text\":\"Migrate from Express\",\"link\":\"/introduction/migrate-from-express\"}]}]},{\"text\":\"Documentation\",\"items\":[{\"text\":\"Configuration\",\"link\":\"/docs/configuration/\"},{\"text\":\"Controllers\",\"link\":\"/docs/controllers\"},{\"text\":\"DI & Providers\",\"link\":\"/docs/providers\"},{\"text\":\"Models\",\"link\":\"/docs/model\"},{\"text\":\"Json Mapper\",\"link\":\"/docs/json-mapper\"},{\"text\":\"Middlewares\",\"link\":\"/docs/middlewares\"},{\"text\":\"Pipes\",\"link\":\"/docs/pipes\"},{\"text\":\"Interceptors\",\"link\":\"/docs/interceptors\"},{\"text\":\"Validation\",\"link\":\"/docs/validation\"},{\"text\":\"Authentication\",\"link\":\"/docs/authentication\"},{\"text\":\"Hooks\",\"link\":\"/docs/hooks\"},{\"text\":\"Response filter\",\"link\":\"/docs/response-filter\"},{\"text\":\"Exceptions\",\"link\":\"/docs/exceptions\"},{\"text\":\"Logger\",\"link\":\"/docs/logger\"},{\"text\":\"Context\",\"link\":\"/docs/request-context\"},{\"text\":\"Cache\",\"link\":\"/docs/cache\"},{\"text\":\"Platform API\",\"link\":\"/docs/platform-api\"},{\"text\":\"Platform Serverless\",\"link\":\"/docs/platform-serverless\"},{\"text\":\"Platform Serverless HTTP\",\"link\":\"/docs/platform-serverless-http\"},{\"text\":\"Command\",\"link\":\"/docs/command\"},{\"text\":\"Custom decorators\",\"link\":\"/docs/custom-endpoint-decorators\"},{\"text\":\"Templating\",\"link\":\"/docs/templating\"},{\"text\":\"Session & Cookies\",\"link\":\"/docs/session\"},{\"text\":\"Testing\",\"link\":\"/docs/testing\"},{\"text\":\"Upload files\",\"link\":\"/docs/upload-files\"},{\"text\":\"Customize 404\",\"link\":\"/docs/not-found-page\"},{\"text\":\"Api references\",\"link\":\"/api\"}]},{\"text\":\"Tutorials\",\"items\":[{\"text\":\"Agenda\",\"link\":\"/tutorials/agenda\"},{\"text\":\"AJV\",\"link\":\"/tutorials/ajv\"},{\"text\":\"AWS\",\"link\":\"/tutorials/aws\"},{\"text\":\"BullMQ\",\"link\":\"/tutorials/bullmq\"},{\"text\":\"GraphQL\",\"link\":\"/tutorials/graphql\"},{\"text\":\"IORedis\",\"link\":\"/tutorials/ioredis\"},{\"text\":\"Jest\",\"link\":\"/tutorials/jest\"},{\"text\":\"Keycloak\",\"link\":\"/tutorials/keycloak\"},{\"text\":\"MikroORM\",\"link\":\"/tutorials/mikroorm\"},{\"text\":\"Mongoose\",\"link\":\"/tutorials/mongoose\"},{\"text\":\"Objection.js\",\"link\":\"/tutorials/objection\"},{\"text\":\"OIDC\",\"link\":\"/tutorials/oidc\"},{\"text\":\"Passport.js\",\"link\":\"/tutorials/passport\"},{\"text\":\"Prisma\",\"link\":\"/tutorials/prisma\"},{\"text\":\"Pulse\",\"link\":\"/tutorials/pulse\"},{\"text\":\"Scalar\",\"link\":\"/tutorials/scalar\"},{\"text\":\"Server-sent events\",\"link\":\"/tutorials/server-sent-events\"},{\"text\":\"Serverless\",\"link\":\"/tutorials/serverless\"},{\"text\":\"Socket.io\",\"link\":\"/tutorials/socket-io\"},{\"text\":\"Stripe\",\"link\":\"/tutorials/stripe\"},{\"text\":\"Swagger\",\"link\":\"/tutorials/swagger\"},{\"text\":\"Temporal\",\"link\":\"/tutorials/temporal\"},{\"text\":\"Terminus\",\"link\":\"/tutorials/terminus\"},{\"text\":\"TypeORM\",\"link\":\"/tutorials/typeorm\"},{\"text\":\"Vike\",\"link\":\"/tutorials/vike\"},{\"text\":\"Vitest\",\"link\":\"/tutorials/vitest\"}]},{\"text\":\"Plugins\",\"link\":\"/plugins/index\"},{\"text\":\"8.7.1\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/tsedio/tsed/releases\"},{\"text\":\"v7 (maintenance)\",\"link\":\"https://v7.tsed.dev\"},{\"text\":\"v6 (obsolete)\",\"link\":\"https://v6.tsed.dev\"},{\"text\":\"v5 (obsolete)\",\"link\":\"https://v5.tsed.dev\"},{\"text\":\"Contributing\",\"link\":\"https://github.com/tsedio/tsed/blob/production/CONTRIBUTING.md\"},{\"text\":\"Team\",\"link\":\"/more/team\"}]}],\"sidebar\":{\"/introduction/\":[{\"text\":\"Introduction\",\"items\":[{\"text\":\"What is Ts.ED?\",\"link\":\"/introduction/what-is-tsed\"},{\"text\":\"What's new in v8?\",\"link\":\"/introduction/what-is-news-v8\"},{\"text\":\"Capabilities\",\"link\":\"/introduction/capabilities\"},{\"text\":\"Installation\",\"link\":\"/introduction/getting-started\"},{\"text\":\"Create your first controller\",\"link\":\"/introduction/create-your-first-controller\"}]},{\"text\":\"Migration\",\"items\":[{\"text\":\"Migrate from v7\",\"link\":\"/introduction/migrate-from-v7\"},{\"text\":\"Migrate from v6 to v7\",\"link\":\"/introduction/migrate-from-v6\"},{\"text\":\"Migrate from Express\",\"link\":\"/introduction/migrate-from-express\"}]}],\"/docs/\":[{\"text\":\"Configuration\",\"items\":[{\"text\":\"Options\",\"link\":\"/docs/configuration/\"},{\"text\":\"Load config from file\",\"link\":\"/docs/configuration/load-configuration-from-file\"},{\"text\":\"Express.js\",\"link\":\"/docs/configuration/express\"},{\"text\":\"Koa.js\",\"link\":\"/docs/configuration/koa\"}]},{\"text\":\"Fundamentals\",\"items\":[{\"text\":\"Controllers\",\"link\":\"/docs/controllers\"},{\"text\":\"DI & Providers\",\"link\":\"/docs/providers\"},{\"text\":\"Models\",\"link\":\"/docs/model\"},{\"text\":\"Json Mapper\",\"link\":\"/docs/json-mapper\"},{\"text\":\"Middlewares\",\"link\":\"/docs/middlewares\"},{\"text\":\"Pipes\",\"link\":\"/docs/pipes\"},{\"text\":\"Interceptors\",\"link\":\"/docs/interceptors\"},{\"text\":\"Validation\",\"link\":\"/docs/validation\"},{\"text\":\"Authentication\",\"link\":\"/docs/authentication\"},{\"text\":\"Hooks\",\"link\":\"/docs/hooks\"},{\"text\":\"Response filter\",\"link\":\"/docs/response-filter\"},{\"text\":\"Exceptions\",\"link\":\"/docs/exceptions\"},{\"text\":\"Logger\",\"link\":\"/docs/logger\"},{\"text\":\"Context\",\"link\":\"/docs/request-context\"},{\"text\":\"Testing\",\"link\":\"/docs/testing\"}]},{\"text\":\"Advanced\",\"items\":[{\"text\":\"Cache\",\"link\":\"/docs/cache\"},{\"text\":\"Platform API\",\"link\":\"/docs/platform-api\"},{\"text\":\"Platform Serverless\",\"link\":\"/docs/platform-serverless\"},{\"text\":\"Platform Serverless HTTP\",\"link\":\"/docs/platform-serverless-http\"},{\"text\":\"Command\",\"link\":\"/docs/command\"},{\"text\":\"Templating\",\"link\":\"/docs/templating\"},{\"text\":\"Custom decorators\",\"link\":\"/docs/custom-endpoint-decorators\"},{\"text\":\"Session & Cookies\",\"link\":\"/docs/session\"},{\"text\":\"Serve files\",\"link\":\"/docs/serve-files\"},{\"text\":\"Upload files\",\"link\":\"/docs/upload-files\"},{\"text\":\"Customize 404\",\"link\":\"/docs/not-found-page\"},{\"text\":\"Api references\",\"link\":\"/api\"}]}],\"/tutorials/\":[{\"text\":\"ORM\",\"items\":[{\"text\":\"IORedis\",\"link\":\"/tutorials/ioredis\"},{\"text\":\"MikroORM\",\"link\":\"/tutorials/mikroorm\"},{\"text\":\"Mongoose\",\"link\":\"/tutorials/mongoose\"},{\"text\":\"Objection.js\",\"link\":\"/tutorials/objection\"},{\"text\":\"Prisma\",\"link\":\"/tutorials/prisma\"},{\"text\":\"TypeORM\",\"link\":\"/tutorials/typeorm\"}]},{\"text\":\"Recipes\",\"items\":[{\"text\":\"Keycloak\",\"link\":\"/tutorials/keycloak\"},{\"text\":\"Jest\",\"link\":\"/tutorials/jest\"},{\"text\":\"Vitest\",\"link\":\"/tutorials/vitest\"}]},{\"text\":\"Plugins\",\"items\":[{\"text\":\"Agenda\",\"link\":\"/tutorials/agenda\"},{\"text\":\"AJV\",\"link\":\"/tutorials/ajv\"},{\"text\":\"AWS\",\"link\":\"/tutorials/aws\"},{\"text\":\"BullMQ\",\"link\":\"/tutorials/bullmq\"},{\"text\":\"GraphQL\",\"link\":\"/tutorials/graphql\"},{\"text\":\"OIDC\",\"link\":\"/tutorials/oidc\"},{\"text\":\"Passport.js\",\"link\":\"/tutorials/passport\"},{\"text\":\"Pulse\",\"link\":\"/tutorials/pulse\"},{\"text\":\"Scalar\",\"link\":\"/tutorials/scalar\"},{\"text\":\"Server-sent events\",\"link\":\"/tutorials/server-sent-events\"},{\"text\":\"Serverless\",\"link\":\"/tutorials/serverless\"},{\"text\":\"Socket.io\",\"link\":\"/tutorials/socket-io\"},{\"text\":\"Stripe\",\"link\":\"/tutorials/stripe\"},{\"text\":\"Swagger\",\"link\":\"/tutorials/swagger\"},{\"text\":\"Temporal\",\"link\":\"/tutorials/temporal\"},{\"text\":\"Terminus\",\"link\":\"/tutorials/terminus\"},{\"text\":\"Vike\",\"link\":\"/tutorials/vike\"}]}],\"/api/\":[{\"text\":\"Core\",\"items\":[]},{\"text\":\"Platform\",\"items\":[]},{\"text\":\"ORM\",\"items\":[]},{\"text\":\"Third parties\",\"items\":[]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/tsedio/tsed\"},{\"icon\":\"slack\",\"link\":\"https://slack.tsed.io\"},{\"icon\":\"twitter\",\"link\":\"https://x.com/TsED_io\"}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2019-present Romain Lenzotti\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>