Skip to main content

Overview

Evaly is built with modern, cutting-edge technologies focused on developer experience, performance, and scalability. The stack is carefully chosen to provide real-time capabilities, serverless architecture, and excellent TypeScript support.

Frontend Stack

Core Framework

React 19

Latest React with improved performance and concurrent featuresVersion: 19.2.0

TanStack Start

React 19 meta-framework with file-based routingVersion: 1.134.9

TanStack Router

Type-safe routing with nested layoutsVersion: 1.134.4

TanStack Query

Powerful data fetching and cachingVersion: 5.90.6

Styling & UI

Tailwind CSS v4 (4.1.12)
  • Custom design tokens
  • JIT compilation
  • Vite plugin integration (@tailwindcss/vite)
  • Typography plugin (@tailwindcss/typography)
  • Animation utilities (tailwindcss-animate)
  • Utility merging (tailwind-merge)

Rich Text Editing

TipTap (2.12.0) - Extensible rich text editor
  • @tiptap/react - React integration
  • @tiptap/starter-kit - Essential extensions
  • @tiptap/extension-character-count - Character counting
  • @tiptap/extension-code-block-lowlight - Syntax highlighting
  • @tiptap/extension-image - Image support
  • @tiptap/extension-link - Link handling
  • @tiptap/extension-placeholder - Placeholder text
  • @tiptap/extension-text-style - Text styling
  • @tiptap/extension-underline - Underline formatting

Form Management

React Hook Form

Performant form state managementVersion: 7.56.3

Zod

TypeScript-first schema validationVersion: 4.1.12

Hookform Resolvers

Integration between React Hook Form and ZodVersion: 5.0.1

TanStack Zod Adapter

Router integration with ZodVersion: 1.139.12

Data Visualization

Recharts (2.15.4)
  • Composable charting library
  • Built on D3.js
  • Responsive charts
  • Customizable tooltips

Specialized Libraries

  • @phosphor-icons/react (2.1.10) - Icon library
  • qrcode.react (4.2.0) - QR code generation
  • date-fns (4.1.0) - Date utilities
  • dayjs (1.11.13) - Date parsing/formatting
  • react-day-picker (9.11.1) - Date picker component
  • pdf-lib (1.17.1) - PDF generation/manipulation
  • pdfjs-dist (5.4.394) - PDF rendering
  • @tanstack/react-table (8.21.3) - Headless table library
  • @tanstack/react-virtual (3.13.8) - Virtual scrolling
  • react-resizable-panels (3.0.1) - Resizable panel layouts
  • react-moveable (0.56.0) - Draggable/resizable elements
  • input-otp (1.4.2) - OTP input component
  • @uidotdev/usehooks (2.4.1) - Collection of React hooks
  • html-react-parser (5.2.10) - HTML string parsing

Backend Stack

Convex Platform

Convex Core

Serverless backend with real-time databaseVersion: 1.28.0

Convex Auth

Authentication with multi-provider supportVersion: 0.0.90

Convex Helpers

Community utilities and patternsVersion: 0.1.104

React Query Integration

TanStack Query integrationVersion: 0.0.0-alpha.11

Convex Extensions

@convex-dev/r2 (0.7.3)
  • Cloudflare R2 integration
  • Direct file uploads
  • CDN support

AI Integration

Google Generative AI

Google Gemini API for AI question generationPackage: @ai-sdk/google (2.0.33)Features:
  • Question generation
  • Option suggestions
  • Content translation
  • Result analysis

Authentication

Auth.js Core (@auth/core 0.37.0)
  • Multi-provider OAuth
  • Session management
  • JWT tokens
  • Provider support:
    • Google OAuth
    • Email/Password
    • Magic links

Development Tools

Build System

Vite (6.1.0)
  • Lightning-fast HMR
  • Optimized builds
  • Plugin ecosystem
Plugins:
  • @vitejs/plugin-react - React support
  • vite-tsconfig-paths - Path alias resolution
  • @tailwindcss/vite - Tailwind integration
  • @cloudflare/vite-plugin - Cloudflare Workers

Testing

Vitest

Unit & integration testingVersion: 3.0.5

React Testing Library

Component testing utilitiesVersion: 16.2.0

Playwright

End-to-end testingVersion: 1.57.0

jsdom

Browser environment simulationVersion: 26.0.0

Content Management

Content Collections - MDX content management
  • @content-collections/core (0.12.0) - Core functionality
  • @content-collections/vite (0.2.7) - Vite integration
  • @content-collections/mdx (0.2.2) - MDX support
  • remark-gfm (4.0.1) - GitHub Flavored Markdown

Deployment

Cloudflare Platform

Wrangler (4.45.3)
  • CLI for Cloudflare Workers
  • Local development
  • Production deployments
  • Type generation
Plugin:
  • @cloudflare/vite-plugin (1.16.1)

Runtime & Package Manager

Bun

JavaScript runtime and package managerNot Node.js - Bun is used exclusivelyFeatures:
  • Fast package installation
  • Built-in test runner
  • Native TypeScript support
  • Drop-in Node.js replacement

Vinxi

App composition frameworkVersion: 0.5.6Powers TanStack Start’s server capabilities

Monitoring & Analytics

Web Vitals

Core Web Vitals measurementPackage: web-vitals (4.2.4)Metrics:
  • LCP (Largest Contentful Paint)
  • FID (First Input Delay)
  • CLS (Cumulative Layout Shift)
  • TTFB (Time to First Byte)

Development Commands

# Install dependencies
bun install

# Start dev servers (already running in development)
bun run dev              # Frontend dev server
npx convex dev          # Backend dev server

Package Management

Key Dependencies Summary

Total Dependencies: 104 production packages Total Dev Dependencies: 25 development packages

Stability Notes

Some packages are in alpha/beta:
  • @convex-dev/react-query (alpha.11)
  • React 19 (stable but recent)
  • Tailwind CSS v4 (latest)
The project uses exact versions for Convex packages to ensure compatibility with the Convex platform.

TypeScript Configuration

Path Aliases:
  • @/*./src/*
  • @convex/*convex/*
  • content-collections./.content-collections/generated
Compiler Options:
  • Strict mode enabled
  • JSX: React 19
  • Module resolution: Bundler
  • ES2022 target

Type Definitions

  • @types/node - Node.js types
  • @types/react - React 19 types
  • @types/react-dom - React DOM types
  • @types/canvas-confetti - Canvas confetti types
  • @types/pdfjs-dist - PDF.js types
  • @types/recharts - Recharts types

Environment Variables

Required Variables

.env.local
CONVEX_DEPLOYMENT=your-deployment-name

Version Strategy

  • Major versions: Pinned for stability (e.g., @tanstack/react-query: 5.90.6)
  • Convex packages: Exact versions for platform compatibility
  • UI libraries: Caret ranges for patch updates (e.g., ^2.1.10)
  • Dev tools: Latest compatible versions
Run bun update regularly to get security patches while respecting version constraints.

Build docs developers (and LLMs) love