Astro
React
Tailwind CSS
TypeScript
Awake is a modern agency landing page template built with Astro 5, React 19, and Tailwind CSS v4.
This theme is ready to use and fully customizable to fit your brand and requirements.
To customize, you should have knowledge of Astro, React, Tailwind CSS v4, and TypeScript.
Below is the complete folder structure of the Awake Astro template.
Before proceeding, make sure you have the latest stable Node.js installed.
Navigate to the project folder and install dependencies using your preferred package manager.
cd awake-astro
npm install
cd awake-astro
yarn install
cd awake-astro
pnpm install
Once dependencies are installed, start the local development server:
npm run dev
# or: yarn dev / pnpm dev
This starts the Astro dev server at http://localhost:4321
> awake-astro@0.0.1 dev
> astro dev
- Astro 5.17.1
✓ Local: http://localhost:4321
✓ Network: http://0.0.0.0:4321
When you are ready to deploy, run the build command:
npm run build
# or: yarn build / pnpm build
The production output is generated in the ./dist/ folder.
This template uses output: 'server' with the @astrojs/node adapter, so it requires a Node.js host (e.g. Vercel, Railway, Render, or any Node.js server). You can preview the build locally with:
npm run preview
Your website is ready to be deployed. 🥳
1. Override Brand Colors (Tailwind v4)
Brand colors are registered as Tailwind v4 tokens inside the
@theme block in:
src/styles/globals.css
@theme {
--color-dark_black: #1b1d1e;
--color-purple_blue: #4928fd; /* primary accent */
--color-purple: #ba81ee;
--color-blue: #70b5ff;
--color-orange: #ffaf68;
--color-green: #79d45e;
--color-pink: #f4889a;
/* gradient helpers */
--color-blue_gradient: #d9f3fc;
--color-yellow_gradient: #fdf1d3;
}
After updating these values, Tailwind will automatically apply the new
colors everywhere the token is used (e.g.
bg-purple_blue,
text-dark_black).
2. CSS Variables for Light / Dark Theming
Semantic theme colors (background, foreground, primary, muted, etc.)
are controlled via standard CSS variables in the
:root (light) and
.dark (dark) selectors in:
src/styles/globals.css
:root {
/* light mode */
--background: oklch(1 0 0);
--foreground: oklch(0.229 0.0036 228.96);
--primary: oklch(0.205 0 0);
--muted-foreground: oklch(0.556 0 0);
}
.dark {
/* dark mode overrides */
--background: oklch(0.145 0 0);
--foreground: oklch(1 0 0);
--primary: oklch(0.87 0.00 0);
--muted-foreground: oklch(0.708 0 0);
}
Dark mode is toggled by the
.dark class on the
<html> element, managed
by next-themes. The
user's preference is persisted in
localStorage.
1. Font Loading
Fonts are loaded via Google Fonts
<link> tags in:
src/layouts/Layout.astro
< link rel = "preconnect" href = "https://fonts.googleapis.com" />
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin />
< link href = "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter+Tight:ital,wght@0,100..900;1,100..900&display=swap" rel = "stylesheet" />
This template uses two fonts: Inter Tight (primary body font) and Instrument Serif (decorative italic headings).
2. Register Font Tokens
Font family tokens are registered inside the Tailwind v4
@theme block in:
src/styles/globals.css
@theme {
--font-instrument-serif: var(--font-instrument-serif);
--font-inter-tight: var(--font-inter-tight);
}
3. Apply Font to Body
The body font is applied directly in
src/layouts/Layout.astro via a
style attribute:
< body style = "font-family: 'Inter Tight', sans-serif;" >
... page content ...
</ body >
To use Instrument Serif for decorative text, apply the utility class .instrument-font (defined in globals.css) to any element.
4. Changing the Font
To switch to a different Google Font:
<link> URL in
Layout.astro with your chosen font.
body style attribute in
Layout.astro.
--font-inter-tight token name in
globals.css to match.
1. Logo file location: src/components/layout/header/Logo/index.tsx
< a href = "/" >
{/* Light mode logo */}
< img
src = "/images/logo/logo.svg"
alt = "logo"
className = "dark:hidden"
/>
{/* Dark mode logo */}
< img
src = "/images/logo/DarkModeLogo.svg"
alt = "logo"
className = "dark:block hidden"
/>
</ a >
2. Replacing the Logo
src paths in
Logo/index.tsx to point to your new files.
<img> tag and delete
the dark:hidden class from the first.
width and
height attributes to match
your logo's natural dimensions.
3. Changing the Favicon
Replace the files at the root of public/:
The favicon is referenced in
src/layouts/Layout.astro via
<link rel="icon" href="/favicon.ico" />
.