Description
A minimal todo app that demonstrating how to set up Replicache with Gel and Next.js for real-time, offline-first capabilities.
npx boilerapp gel-replicacheDocumentation
đ Next.js + Replicache + Gel Todo App Template
This starter template is crafted to help developers build and deploy applications using Next.js, Replicache, and Gel. It includes essential functionalities for real-time collaboration with offline capabilities and a ready-to-use API setup.
đ Features
- Next.js for building the React frontend.
- Replicache for enabling real-time collaborative features and offline capabilities.
- Gel as the backend database to store and sync data efficiently.
- TypeScript for static type-checking along with modern JavaScript features.
- Tailwind CSS for utility-first CSS styling.
Data Synchronization and Conflict Resolution
This project implements Replicache's "reset strategy" for data synchronization and conflict resolution.
For more details on the reset strategy and other synchronization approaches with Replicache, visit the synchronization strategies overview on their documentation site.
đ§ What's Inside?
This project follows a structured approach typical of Next.js applications with additional directories specific to Replicache and Gel:
.
âââ app # Next.js pages and components
â âââ api # API routes
â â âââ pull # Pull endpoint for Replicache
â â â âââ route.ts
â â âââ push # Push endpoint for Replicache
â â âââ route.ts
â âââ components # React components
â â âââ TodoList.tsx # Todo list component
â âââ favicon.ico # Favicon
â âââ globals.css # Global CSS styles
â âââ layout.tsx # Layout component
â âââ page.tsx # Entry point for the app
âââ dbschema # gel schema files
â âââ default.gel # gel schema definition
â âââ migrations # Schema migrations
âââ lib # Library functions and components
â âââ gel.ts # Gel client configuration
â âââ mutators.ts # Replicache mutator functions
â âââ types.ts # TypeScript types for the project
âââ public # Static assets like images and fonts
âââ gel.toml # Gel configuration file
âââ eslint.config.js # ESLint configuration
âââ next-env.d.ts # Next.js types
âââ next.config.js # Next.js configuration
âââ package.json # NPM dependencies and scripts
âââ pnpm-lock.yaml # pnpm lockfile
âââ postcss.config.js # PostCSS configuration
âââ README.md # Project README
âââ tailwind.config.ts # Tailwind CSS configuration
âââ tsconfig.json # TypeScript configuration
đ Getting Started
1. Clone the repository
git clone https://github.com/geldata/nextjs-replicache-gel-starter.git
cd nextjs-replicache-gel-starter
2. Install dependencies
pnpm install # or npm install or yarn install
3. Set up Gel
Run the Gel project initialization:
npx gel project init
4. Set up environment variables
Create a .env.local file in the root directory and add the following environment variables:
NEXT_PUBLIC_REPLICACHE_LICENSE_KEY = "your-replicache-license-key"
You can get your Replicache license key by running:
npx replicache@latest get-license
Replace the Replicache key in the page.tsx file with your license key.
const replicache = new Replicache({
name: userID,
- licenseKey: TEST_LICENSE_KEY,
+ licenseKey: process.env.NEXT_PUBLIC_REPLICACHE_LICENSE_KEY,
mutators: { createTodo, updateTodo, deleteTodo },
puller: pull,
});
5. Start the development server
pnpm dev # or npm run dev or yarn dev
Open http://localhost:3000 with your browser to see the app.
đ§ Extend and customize
Modify the schema
Adjust the schema in dbschema/default.esdl to meet your application's needs. For example, add new types or extend existing ones with additional properties.
Update data fetching
Modify data fetching logic in the lib directory to enhance or alter how data interacts between the client and the database.
Enhance styles
Update the global CSS styles in app/globals.css or add new styles using Tailwind CSS utility classes.
đ Deployment
Deploy your application to production using Vercel:
đ Learn More
Prix
Gratuit