Skip to content
/ react-starter Public template

A template capable of server-side rendering, generating static pages, serving single-page applications, and providing an API.

License

Notifications You must be signed in to change notification settings

stormkit-io/react-starter

Repository files navigation

React Starter Kit

A minimal, flexible React template built with Vite supporting multiple rendering modes

✨ Features

  • πŸ”„ Multiple Rendering Modes: SSR, SSG, and SPA support with route-level control
  • πŸš€ File-based API Routes: Build serverless APIs with simple file structure
  • 🎯 Framework-agnostic: Pure React with Vite - no complex abstractions
  • πŸ” SEO Ready: Built-in meta tags and server-side rendering for better SEO
  • πŸ“¦ Universal Deployment: Compatible with Stormkit, Netlify, Vercel and more
  • ⚑ Hot Module Replacement: Instant updates during development
  • 🏷️ TypeScript First: Full TypeScript support out of the box
  • 🎨 Modern Tooling: Vite for lightning-fast builds and development

πŸš€ Quick Start

Installation

# Clone or use as template git clone <repository-url> cd react-starter # Install dependencies npm install # or yarn install # or pnpm install

Development

npm run dev

Visit http://localhost:5173 to see your app running with HMR enabled.

πŸ“ Project Structure

src/ β”œβ”€β”€ api/ # API routes (serverless functions) β”‚ └── hello.ts # Example API endpoint β”œβ”€β”€ pages/ # Application pages β”‚ β”œβ”€β”€ home.tsx # Home page (SPA) β”‚ β”œβ”€β”€ about.tsx # About page (SPA) β”‚ └── ssr.tsx # SSR example with fetchData β”œβ”€β”€ components/ # Reusable components β”œβ”€β”€ context.ts # React context for data sharing β”œβ”€β”€ entry-client.tsx # Client-side entry point β”œβ”€β”€ entry-server.tsx # Server-side entry point β”œβ”€β”€ prerender.ts # SSG route configuration └── App.tsx # Main application component 

πŸ”§ Build Commands

Development Server

npm run dev

Starts development server with HMR at http://localhost:5173

Single Page Application (SPA)

npm run build:spa

Builds a traditional SPA. Output: .stormkit/public/

Server-Side Rendering (SSR)

npm run build:ssr

Builds for serverless deployment with SSR. Output: .stormkit/server/

Static Site Generation (SSG)

npm run build:spa # Build SPA first npm run build:ssg # Generate static pages

Pre-renders specified routes at build time. Output: .stormkit/public/

API Only

npm run build:api

Builds only the API functions. Output: .stormkit/api/

🎯 Rendering Modes

Single Page Application (Default)

All routes are client-side rendered by default:

// src/pages/home.tsx export default function Home() { return <h1>Welcome to Home</h1>; }

Server-Side Rendering

Add a fetchData export to enable SSR:

import { useContext } from "react"; import Context from "~/context"; // src/pages/ssr.tsx export async function fetchData() { const data = await fetch("https://api.example.com/data"); return { head: { // meta tags }, context: { myParam: data.myParam; } }; } export default function SSRPage({ data }: { data: any }) { const context = useContext(Context); return <h1>Server-rendered: {data.myParam}</h1>; }

Static Site Generation

Configure routes to pre-render in src/prerender.ts:

// src/prerender.ts // Export an array of paths to be prerendered. export default ["/", "/about", "/blog/post-1"];

πŸ”Œ API Routes

Create API endpoints by adding files to src/api/:

// src/api/hello.ts export default async (req: http.IncomingMessage, res: http.ServerResponse) => { res.setHeader("Content-Type", "application/json"); res.writeHead(200, "Success"); res.write( JSON.stringify({ payload: "This is an API function - can be deployed as a serverless function!", }) ); res.end(); };

Access at: http://localhost:5173/api/hello

πŸš€ Deployment

Stormkit

Import this application on Stormkit (either self-hosted or cloud) and simply click deploy. It works with zero-config.

Static Hosting

npm run build:spa npm run build:ssg # Optional: for pre-rendered pages

Deploy the .stormkit/public folder.

πŸ”§ Configuration

Vite Configuration

  • vite.config.ts - Development server
  • vite.config.ssr.ts - SSR build
  • vite.config.spa.ts - SPA build
  • vite.config.api.ts - API build

πŸ› οΈ Advanced Usage

Custom Server

// server.ts import { handler } from "./.stormkit/server/server.mjs"; const server = express(); server.use(handler); server.listen(3000);

🀝 Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“š Resources

🌟 Showcase

Websites built with this template:

Site Description Features Used
Stormkit.io Deploy full-stack JavaScript apps SSR, API Routes
Add your site Submit your project -

πŸ“„ License

MIT Β©

About

A template capable of server-side rendering, generating static pages, serving single-page applications, and providing an API.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages