Вот такой небольшой пример покрывает 90% случаев моего использования css grid.

*,
*::before,
*::after {
	box-sizing: border-box;
}

body {
	font-family:
		-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans",
		"Helvetica Neue", sans-serif;
	background: #f0f0f0;
	font-size: 16px;
	padding: 0;
	margin: 0;
}

.layout {
	min-height: 100vh;
	max-width: 1200px;
	padding: 15px 0;
	margin: 0 auto;
	grid-gap: 15px;
	display: grid;
	gap: 15px;
	grid-template-areas:
		"header"
		"nav"
		"main"
		"footer";
}

header,
footer,
main,
aside {
	background: #fff;
	display: block;
	padding: 15px;
}

header {
	grid-area: header;
}

footer {
	grid-area: footer;
}

main {
	grid-area: main;
}

aside {
	grid-area: nav;
}

@media (min-width: 40em) {
	.layout {
		grid-template-columns: 12em auto;
		grid-template-rows: auto 1fr auto;
		grid-template-areas:
			"header header"
			"nav main"
			"nav footer";
	}
}
<div class="layout">
	<header>header</header>
	<main>
		Lorem ipsum dolor, sit amet consectetur adipisicing elit. Inventore debitis quasi itaque sed,
		doloremque magni provident animi soluta enim, optio quia officia quos consectetur. Ipsam
		asperiores beatae sit quisquam exercitationem? Veniam possimus exercitationem voluptas
		molestias? Distinctio, impedit quia! Itaque cupiditate cumque laudantium sed odit nobis possimus
		quo quae iusto eveniet, blanditiis excepturi inventore accusantium asperiores provident soluta
		sunt corporis minus. Sit animi incidunt ut quia exercitationem, ipsa in nisi, sunt beatae
		voluptatum cum. Velit perspiciatis quidem similique, maiores saepe earum, laudantium sapiente
		labore asperiores natus impedit nemo ipsa non quibusdam.
	</main>
	<aside>
		nav<br />
		nav<br />
		nav<br />
		nav<br />
		nav
	</aside>
	<footer>footer</footer>
</div>

Результат

пример лайаута на css grid