Thanks to visit codestin.com
Credit goes to github.com

Skip to content

shivaam/one-take

Repository files navigation

OneTake Web MVP

A voice-first workout logging application built with React, TypeScript, and Supabase.

Quick Start

  1. Install dependencies:

    npm install
  2. Set up Supabase:

    ./supabase/setup.sh

    Or follow the detailed guide in SUPABASE_SETUP.md

  3. Configure environment variables:

    cp .env.local.example .env.local
    # Edit .env.local with your Supabase credentials
  4. Start development server:

    npm run dev

Tech Stack

  • Frontend: React 18 + TypeScript + Vite
  • Backend: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
  • API: Hono (deployed as Supabase Edge Functions)
  • State Management: TanStack Query
  • Styling: Tailwind CSS
  • AI: OpenAI Whisper + GPT-4o (via Vercel AI SDK)

Project Structure

onetake-web/
├── src/
│   ├── components/     # React components
│   ├── hooks/          # Custom React hooks
│   ├── lib/            # Utilities and API clients
│   ├── schemas/        # Zod schemas
│   └── types/          # TypeScript types
├── supabase/
│   ├── migrations/     # Database migrations
│   ├── config.toml     # Supabase configuration
│   └── README.md       # Supabase setup guide
└── SUPABASE_SETUP.md   # Detailed setup instructions

Documentation


Original Vite Template Info

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...

      // Remove tseslint.configs.recommended and replace with this
      tseslint.configs.recommendedTypeChecked,
      // Alternatively, use this for stricter rules
      tseslint.configs.strictTypeChecked,
      // Optionally, add this for stylistic rules
      tseslint.configs.stylisticTypeChecked,

      // Other configs...
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])

You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:

// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...
      // Enable lint rules for React
      reactX.configs['recommended-typescript'],
      // Enable lint rules for React DOM
      reactDom.configs.recommended,
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])

About

Cross-platform video recording and editing app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors