Next.jsVueReactStarter

gramkit — Next.js Starter Template

By AHTOOOXA

gramkit is a monorepo template for Telegram Mini Apps and Web apps, providing two frontends—React (Next.js) and Vue—a shared FastAPI backend core, and modules for authentication, payments, and type-safe APIs.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-14View source

What stands out

A quick read of the recorded project description.

01

Provides two complete templates at once: React (Next.js 16 + Turbopack + Zustand) and Vue (Vue.js 3 + Vite + Pinia)

02

Shares the core/ backend and frontend components, avoiding code duplication across multiple apps

03

Built-in authentication system: email+OTP, Telegram OAuth, password reset, account linking, and session management

04

Automatically generates TypeScript hooks from OpenAPI → Kubb for frontend-backend type safety

05

Telegram capabilities are optional; leaving BOT__TOKEN empty reduces it to a standard Web app

06

Includes a four-layer orchestration architecture for Claude Code and a structured task system

Template Details

gramkit is a monorepo template; the repository README positions it as a "production-ready" template for Telegram Mini Apps and Web apps. It provides two complete frontend templates: the React version is based on Next.js 16 + Turbopack + Zustand, and the Vue version is based on Vue.js 3 + Vite + Pinia. Both share the FastAPI and SQLAlchemy backend under the core/ directory along with shared components, avoiding copy-pasting between projects.

At the feature level, the README lists authentication (email+OTP, Telegram OAuth, password reset, account linking), role-based access control, real-time data (WebSocket, polling, AI streaming, optimistic updates), mobile-first layout and Telegram Mini App detection, TypeScript hooks automatically generated from OpenAPI via Kubb, i18n and light/dark themes, YooKassa and Telegram Stars payments, and ARQ-based background tasks. Telegram-related capabilities are optional: leaving BOT__TOKEN empty yields a standard Web app.

For development and running, the template supports two modes: the direct localhost mode uses native Turbopack, with the frontend running locally and connecting directly to the API; the tunnel mode provides HTTPS through nginx + Cloudflare Tunnel, for Telegram Mini App testing. The project also includes an orchestration architecture for Claude Code (commands, skills, subagents, and pattern documentation), a structured task system, a testing approach based on testcontainers and pytest, and unified Makefile commands. The README does not document the performance of these features or actual production validation, nor does it provide further licensing details beyond the MIT license.

Next.jsVueReactStarter

Is it right for your project?

Use Cases

  • Telegram Mini App projects that need to evaluate both React and Vue frontend implementations
  • Teams that want to quickly build multiple Web apps on a shared backend core and maintain them uniformly
  • Apps that need dual authentication via email+OTP and Telegram OAuth, role permissions, and payment integration
  • Projects using Claude Code for AI-assisted development that want to follow its commands and task orchestration workflow
  • Developers who need to test Telegram WebApp authentication in a local HTTPS tunnel environment

Suitable For

  • Full-stack developers familiar with Docker, Make, pnpm, and Python environment setup
  • Teams planning to build a Telegram Mini App or a pure Web app and needing ready-made authentication and payment modules
  • Project maintainers who prefer a monorepo architecture and want synchronized frontend-backend types
  • Developers who have not yet decided between Vue and React and want to compare options based on the same pattern

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Docker & Docker Compose, Node.js 20+ and pnpm, Python 3.14+, and Make must be installed first

  2. 2

    After cloning the repository, enter apps/template-vue or apps/template-react, copy .env.example to .env, and modify as needed

  3. 3

    Start services with make up APP=<template name>; in localhost mode, visit http://localhost:3001/template-react or http://localhost:5174/template-vue

  4. 4

    Telegram Mini App testing requires configuring Cloudflare Tunnel and nginx, then visiting https://local.gramkit.dev/template-react

  5. 5

    Telegram Bot Token and Cloudflare Tunnel are optional; when no Bot Token is configured, the app runs as a standard Web app

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
  • Telegram Bot Token is optional, but to enable Telegram-related features, a Bot Token must be obtained from @BotFather.
  • Cloudflare Tunnel is optional, but to test Telegram Mini Apps in an HTTPS tunnel environment, Cloudflare Tunnel must be used.
  • Payment features depend on YooKassa integration and Telegram Stars; using the related payment capabilities may require corresponding third-party accounts or configuration.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

- Telegram Bot Token (from @BotFather)

Original README

- Cloudflare Tunnel (for TMA testing)

Original README

| **Payments** | YooKassa integration, Telegram Stars, subscription billing |

Original README
https://github.com/AHTOOOXA/gramkit/blob/main/LICENSEhttps://github.com/AHTOOOXA/gramkit/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 88 / 100
Technologies
Next.js · Vue · React
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-01-05
Screenshot last checked
2026-10-14

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: codex-user-requested-batch-review-20261017 · 2026-10-16

Inspect the recorded source material

SHA-256: c14670b1e641814f84dc90ba758d4180f5231100941da5ee1efd5f464d5ef2ed

2026-10-14T11:37:04.491Z

Source file / repository
# gramkit

Production-ready monorepo for Telegram Mini Apps and web applications.

Vue.js or React. Telegram-native or web-only. Type-safe from database to UI.

**[Live Demo (React)](https://react.antonchaynik.ru)** · [Live Demo (Vue)](https://vue.antonchaynik.ru)

## Features

| Feature | What You Get |
|---------|--------------|
| **Authentication** | Email + OTP verification, Telegram OAuth, password reset, account linking |
| **Role-Based Access** | Admin/Owner/User roles, protected routes, permission checks |
| **Real-Time Data** | WebSocket, polling, AI streaming, optimistic updates |
| **Mobile-First** | Responsive layouts, bottom navigation, Telegram Mini App detection |
| **Type-Safe API** | Auto-generated TypeScript hooks from OpenAPI schema (Kubb) |
| **i18n + Theming** | Multi-language support, dark/light mode out of the box |
| **Payments** | YooKassa integration, Telegram Stars, subscription billing |
| **Background Jobs** | ARQ for async tasks, email sending, scheduled jobs |

> Telegram features are opt-in. Leave `BOT__TOKEN` empty and you have a standard web app.

## What's Included

### Two Complete Templates

| Template | Stack | Best For | Demo |
|----------|-------|----------|------|
| **React** | Next.js 16 + Turbopack + Zustand | SSR, React 19, larger ecosystem | [react.antonchaynik.ru](https://react.antonchaynik.ru) |
| **Vue** | Vue.js 3 + Vite + Pinia | Lighter bundle, simpler state | [vue.antonchaynik.ru](https://vue.antonchaynik.ru) |

Both include:
- **5 production pages** — Home, demos, profile, admin, auth flows
- **17 tech demos** — Caching, mutations, infinite scroll, streaming, suspense
- **Full auth system** — Email+OTP, Telegram OAuth, password reset, session management
- **Tailwind CSS + shadcn** — Consistent design system, dark mode

### Shared Core

```
core/
├── backend/          # FastAPI, SQLAlchemy, auth, payments, email
├── frontend/         # Vue.js shared components
└── frontend-react/   # React shared components
```

Write once in `core/`, import into any app. No copy-paste between projects.

## Tech Stack

| Layer | Technology |
|-------|------------|
| Backend | Python 3.14+, FastAPI, SQLAlchemy 2.0, Alembic, Pydantic |
| Frontend (Vue) | Vue.js 3, Vite, TanStack Query, Pinia, shadcn-vue |
| Frontend (React) | Next.js 16, Turbopack, TanStack Query, Zustand, shadcn/ui |
| Database | PostgreSQL, Redis |
| Styling | Tailwind CSS 3, CSS variables theming |
| Type Generation | OpenAPI → Kubb → TypeScript hooks |
| Optional | aiogram 3.x (Telegram Bot), Cloudflare Tunnel |

## Two Development Modes

### Direct Localhost (Recommended)

Native Turbopack — fastest iteration, no Docker overhead for frontend.

```
http://localhost:3001/template-react
http://localhost:5174/template-vue
```

- ~10x faster warm starts with Turbopack cache
- Frontend runs natively on your machine
- Direct API calls (CORS enabled in dev)

### Tunnel Mode

Via nginx + Cloudflare tunnel — for Telegram Mini App testing.

```
https://local.gramkit.dev/template-react
https://local.gramkit.dev/template-vue
```

- HTTPS with valid certificate
- Telegram WebApp authentication works
- Production-like environment

## Quick Start

```bash
# Clone
git clone https://github.com/AHTOOOXA/gramkit.git
cd gramkit

# Choose template
cd apps/template-vue    # Vue.js
cd apps/template-react  # React/Next.js

# Setup
cp .env.example .env    # Edit with your settings

# Start
make up APP=template-vue    # or APP=template-react

# Open
# Localhost: http://localhost:3001/template-react or http://localhost:5174/template-vue
# Tunnel: https://local.gramkit.dev/template-react
```

### Create Your Own App

```bash
cp -r apps/template-react apps/myapp
# Update: package.json, docker-compose.yml, .env
make upgrade APP=myapp
make up APP=myapp
```

## Built for Claude Code

4-layer orchestration architecture — context-efficient, parallel-ready.

```
Layer 0: CLAUDE.md           → Orchestration rules, quick reference
Layer 1: .claude/commands/   → /develop, /create-task, /execute-task, /review
Layer 2: .claude/skills/     → Auto-invoked procedures
Layer 3: .claude/agents/     → developer-agent, testing-polish-agent
```

### Slash Commands

| Command | What It Does |
|---------|--------------|
| `/create-task` | PRD → phases → parallel enrichment agents |
| `/execute-task` | Phase-by-phase execution with auto-commits |
| `/develop` | Quick delegation to developer-agent |
| `/design` | Research approaches, compare options |
| `/review` | Deep architectural review |
| `/add-testing` | Add test phases to existing task |

### Pattern Docs

10 docs in `.claude/shared/` that agents read before coding:

```
backend-patterns.md    react-frontend.md    vue-frontend.md
testing-patterns.md    monorepo-structure.md    error-handling.md
critical-rules.md    playwright-testing.md    react-animations.md
adding-packages.md
```

### Structured Task System

Auto-detects difficulty. Simple tasks: inline. Hard tasks: parallel agents.

```
docs/tasks/user-settings/
├── README.md           # PRD
├── ARCHITECTURE.md     # Contracts between phases
├── CONTEXT.md          # Current state, resumable
├── 01-models.md        # Phase with file:line refs
└── 02-api.md
```

## Testing

**80/15/5 rule:** Contract tests (API, bot) → Business logic → Regression.

| Package | Purpose |
|---------|---------|
| testcontainers | Real PostgreSQL, not SQLite |
| pytest-xdist | Parallel execution |
| pytest-testmon | Incremental (only changed code) |
| inline-snapshot | Snapshot assertions |
| respx | HTTP mocking (LLM, payments) |

```bash
make test APP=myapp       # Full parallel suite
make test-quick APP=myapp # Incremental — sub-second feedback
```

Each test runs in isolated transaction with automatic rollback.

## Commands Reference

All make commands require `APP=<name>`:

```bash
# Docker
make up APP=template-vue       # Start services
make down APP=template-vue     # Stop services
make logs APP=template-vue     # View logs
make shell-webhook APP=template-vue  # Backend shell

# Backend
make test APP=template-vue     # Run tests
make lint APP=template-vue     # Ruff + type checks
make migration msg="..." APP=template-vue  # Create migration
make upgrade APP=template-vue  # Apply migrations
make schema APP=template-vue   # Generate TypeScript types

# Frontend
cd apps/template-vue/frontend
pnpm dev                       # Dev server
pnpm build                     # Production build
pnpm typecheck                 # Type checking
```

## Project Structure

```
gramkit/
├── .claude/
│   ├── commands/        # Slash commands
│   ├── skills/          # Auto-invoked procedures
│   ├── agents/          # Subagents (developer, testing)
│   └── shared/          # Pattern docs
├── core/
│   ├── backend/         # Shared Python (FastAPI, SQLAlchemy)
│   ├── frontend/        # Shared Vue.js components
│   └── frontend-react/  # Shared React components
├── apps/
│   ├── template-vue/    # Vue.js template
│   └── template-react/  # React/Next.js template
├── docs/                # Documentation
├── nginx/               # Gateway configuration
└── Makefile             # Unified commands
```

## Requirements

- Docker & Docker Compose
- Node.js 20+ & pnpm
- Python 3.14+
- Make

**Optional:**
- Telegram Bot Token (from @BotFather)
- Cloudflare Tunnel (for TMA testing)

## Why gramkit?

- **Not a tutorial** — Production patterns from real apps shipping to users
- **Type-safe end-to-end** — Change backend, frontend types update automatically
- **Monorepo done right** — Shared core without dependency hell
- **Escape hatches** — Every feature can be disabled or swapped
- **Claude Code native** — Orchestration architecture for AI-assisted development
- **Two frameworks** — Same patterns in Vue and React, pick your preference

## Contributing

1. Fork the repository
2. Create a branch: `git checkout -b feature/your-feature`
3. Make changes and test: `make test APP=template-vue`
4. Commit: `git commit -m "feat: your feature"`
5. Push and open a Pull Request


## License

MIT — See [LICENSE](LICENSE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.