DEV Community

David Chedrick
David Chedrick

Posted on

Let’s Build A Web App: Pt 1 - Setting up Next.js

Let's build a JavaScript project, with the React library, using the Next.js Framework!

Most of the projects I work on are set up with create-react-app, but this time I want to go bigger and use a framework

Starting this project it is assumed that you are familiar with JavaScript, React, VS code, git, and GitHub.

  • You can always check out the official Next.js page to learn more:

Next.js by Vercel - The React Framework

• If you don’t have Node.js installed, install it from here. You’ll need Node.js version 10.13 or later.

Fantastic! Let’s Start!

Create a Next.js app

To create a Next.js app, open your terminal, cd into the directory you’d like to create the app in, and run the following command:
npx create-next-app bodhi-test

!!! To create your own project replace "bodhi-test" with the desired name of your project or just follow along with what I do.

I am going with bodhi test because I am going to build out a quiz web app.

My settings from the terminal startup:

✔ Would you like to use TypeScript with this project? … **No** / Yes ✔ Would you like to use ESLint with this project? … No / **Yes** ✔ Would you like to use `src/` directory with this project? … **No** / Yes ✔ Would you like to use experimental `app/` directory with this project? … **No** / Yes ✔ What import alias would you like configured? … @/* 
Enter fullscreen mode Exit fullscreen mode

Once the project is created, navigate to the project directory:
cd bodhi-test

I am using VS code for this project.
Open the project:
code .

Open the terminal and run the development server:
npm run dev
Now you can access your Next.js application at http://localhost:3000.

At http://localhost:3000 should see the auto-generated Next.js page

Next Auto Page

Pages in Next.js

In Next.js, a page is a React Component exported from a file in the pages directory.

Pages are associated with a route based on their file name. For example, in development:

  • pages/index.js is associated with the / route.
  • pages/posts/cat-post.js is associated with the /posts/cat-post route.

We already have the pages/index.js file, so let’s create pages/posts/cat-post.js to see how it works.

Create a New Page

Create the posts folder under pages.

Create a file called cat-post.js inside the posts directory

folders

Add the following code to the file:

export default function CatPost() { return <h1>Cat Post</h1>; } 
Enter fullscreen mode Exit fullscreen mode

Back to index.js
Change the p tag to an h1
Add and import the Link

<Link href="/posts/cat-post">Cat Post!</Link> 
Enter fullscreen mode Exit fullscreen mode

index.js should look like this:

import Head from "next/head"; import { Inter } from "@next/font/google"; import styles from "@/styles/Home.module.css"; import Link from "next/link"; const inter = Inter({ subsets: ["latin"] }); export default function Home() { return ( <> <Head> <title>Create Next App</title> <meta name="description" content="Generated by create next app" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" href="/favicon.ico" /> </Head> <main className={styles.main}> <div className={styles.description}> <h1 className={inter.className}>Cat Home Page!</h1> <Link href="/posts/cat-post">Cat Post!</Link> </div> </main> </> ); } 
Enter fullscreen mode Exit fullscreen mode

Cat Post

Back to cat-post.js
Let's add a link to go back home

import Link from "next/link"; export default function CatPost() { return ( <> <h1>Cat Post</h1> <h2> <Link href="/">Back Home</Link> </h2> </> ); } 
Enter fullscreen mode Exit fullscreen mode

Cat Links

Click back and forth to make sure the Links are working.

Time to push it up to GitHub.

git add . git commit -m "added first post” git push 
Enter fullscreen mode Exit fullscreen mode

❤️❤️❤️

Try and and more Pages and Links. Play with it and explore.

This is part 1 of a series where we will be building out a full stack web application. We will go step by step in the process. Sometimes we will explore different technologies, and sometimes we will dive deeper into a subject. It is all about learning by doing.

Follow me on LinkedIn for all the updates and future blog posts

Top comments (1)

Collapse
 
beingmerry profile image
Ben Merryman

Nice! I used Vite w/ React option for a full stack and loved it