A modern, opinionated Next.js 15+ template for building Web3 applications with best practices and powerful development features.
- ποΈ Built with Next.js 15+ (App Router)
- π Web3 authentication with Dynamic
- π¨ Styled with Tailwind CSS + shadcn/ui
- π₯ Type-safe with TypeScript
- π¦ State management with Zustand
- π Web3 integration with Wagmi V2 + Viem V2
- ποΈ Database with Supabase
- π Fast data fetching with SWR
- π Code formatting with Prettier
- π§ͺ Linting with ESLint
-
Create a new repository using this template:
git clone https://github.com/yourusername/frame.git cd frame -
Install dependencies:
pnpm install # or npm install # or yarn install
-
Set up your environment variables:
cp .env.example .env.local
-
Update the following variables in
.env.local:# Authentication NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID= NEXT_PUBLIC_DYNAMIC_APP_ID= # Database NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= SUPABASE_SERVICE_ROLE_KEY= # Web3 NEXT_PUBLIC_WALLET_CONNECT_ID= -
Start the development server:
pnpm dev
The template follows a feature-based structure and uses .cursorrules for AI-assisted development:
βββ .cursorrules # AI development rules
βββ app/ # Next.js app directory
βββ components/ # React components
βββ lib/ # Shared utilities
βββ styles/ # Global styles
βββ types/ # TypeScript definitions
βββ actions/ # Server actions
βββ state/ # State management
The .cursorrules file is a crucial part of this template, providing context and rules for AI-assisted development through Cursor. It helps maintain consistency and best practices across your project.
- Provides project context to AI
- Defines code structure and conventions
- Maintains consistent patterns
- Guides AI responses for better assistance
As your project evolves, keep the .cursorrules file updated:
-
Project Context:
- Update the project description
- Add new major features
- Document architectural decisions
-
Code Structure:
- Keep directory structure current
- Add new directories with descriptions
- Update naming conventions
-
Tech Stack:
- Update versions of core technologies
- Add new dependencies
- Remove unused technologies
-
Best Practices:
- Document new coding patterns
- Update TypeScript guidelines
- Add security considerations
Example update workflow:
# When adding a new feature directory
1. Add directory to project
2. Update .cursorrules structure
3. Document any new conventions
4. Commit changes with:
git commit -m "docs: update .cursorrules with new feature structure"- Follow the TypeScript guidelines in
.cursorrules - Use absolute imports with
@/prefix - Follow naming conventions:
- PascalCase for components
- camelCase for utilities
- kebab-case for directories
- Use Zustand for global state
- Use SWR for data fetching
- Keep state as local as possible
- Implement proper cleanup in effects
Format: type: description
Types:
feat:New featuresfix:Bug fixesdocs:Documentationstyle:Formattingrefactor:Code restructuringtest:Testingchore:Maintenance
pnpm dev # Start development server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm format # Format code with Prettier- Framework: Next.js 15+
- Styling: TailwindCSS + shadcn/ui
- State: Zustand + SWR
- Components: TypeScript + React
- Authentication: Dynamic
- Blockchain: Wagmi V2 + Viem V2
- Wallet: WalletConnect
- Database: Supabase
- API: Next.js API Routes
- Authentication: Dynamic
- Click "Deploy with Vercel" above
- Set up required environment variables
- Deploy!
- Fork the repository
- Create your feature branch
- Commit your changes following the commit convention
- Push to the branch
- Open a Pull Request
MIT License - feel free to use this template for any project!
Built with these amazing technologies: