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

Skip to content

reedery/AirGrist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

39 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

AirGrist - Airtable to Grist Migration Tool

A modern web application that provides a seamless migration path from Airtable to Grist, featuring an intuitive step-by-step wizard interface with celebratory confetti animations! ๐ŸŽ‰

Demo: https://imgur.com/a/airgrist-demo-1-min-fDW10Po

Migration Wizard React TypeScript Tailwind

โœจ Features

  • 5-Step Migration Wizard: Intuitive step-by-step interface
  • Token Validation: Secure API token validation for both services
  • Base & Table Selection: Visual selection of Airtable bases and tables
  • Organization Management: Grist organization and workspace selection
  • Real-time Migration: Live progress tracking during data transfer
  • Celebratory Experience: Confetti animation on successful completion
  • Responsive Design: Works seamlessly on desktop and mobile
  • Type-Safe: Full TypeScript implementation for reliability

๐Ÿ—๏ธ Architecture

Tech Stack

  • React 18 with TypeScript for type safety and modern development
  • Vite for lightning-fast development and optimized builds
  • Tailwind CSS for utility-first styling and consistent design
  • shadcn/ui for accessible, customizable UI components
  • React Router for client-side navigation
  • TanStack Query for server state management and caching
  • Lucide React for beautiful, consistent iconography

Project Structure

src/
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ migration/          # Migration wizard components
โ”‚   โ”‚   โ”œโ”€โ”€ ConnectionStep.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ BaseSelectionStep.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ TableSelectionStep.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ OrganizationSelectionStep.tsx
โ”‚   โ”‚   โ””โ”€โ”€ CompletionStep.tsx
โ”‚   โ””โ”€โ”€ ui/                 # Reusable UI components
โ”‚       โ”œโ”€โ”€ confetti.tsx    # Celebration animation
โ”‚       โ”œโ”€โ”€ button.tsx
โ”‚       โ”œโ”€โ”€ card.tsx
โ”‚       โ””โ”€โ”€ ...
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ airtable.ts        # Airtable API service
โ”‚   โ”œโ”€โ”€ grist.ts           # Grist API service
โ”‚   โ””โ”€โ”€ utils.ts           # Utility functions
โ”œโ”€โ”€ pages/
โ”‚   โ”œโ”€โ”€ Index.tsx          # Main migration wizard
โ”‚   โ””โ”€โ”€ NotFound.tsx       # 404 page
โ”œโ”€โ”€ hooks/
โ”‚   โ”œโ”€โ”€ use-toast.ts       # Toast notifications
โ”‚   โ””โ”€โ”€ use-mobile.tsx     # Mobile detection
โ””โ”€โ”€ App.tsx                # Main app with routing

๐Ÿš€ Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/your-username/AirGrist.git
cd AirGrist

# Install dependencies
npm install

# Start development server
npm run dev

The app will be available at http://localhost:5173

Available Scripts

npm run dev          # Start development server with hot reload
npm run build        # Create production build
npm run build:dev    # Create development build
npm run preview      # Preview production build locally
npm run lint         # Run ESLint for code quality

๐ŸŽฏ How to Use

Step 1: Connect Your Accounts

  1. Enter your Airtable API Token
  2. Enter your Grist API Token
  3. Provide your Grist URL (usually https://docs.getgrist.com)
  4. Click "Validate & Connect"

Step 2: Select Airtable Base

  • Choose which Airtable base you want to migrate from
  • The app will load all your accessible bases

Step 3: Choose Tables

  • Select which tables from your base to migrate
  • Multiple table selection is supported
  • Preview table information before migration

Step 4: Select Grist Destination

  • Choose your Grist organization
  • Select the workspace where tables will be created
  • New document will be created automatically

Step 5: Celebrate! ๐ŸŽ‰

  • Watch the confetti fall as your migration completes
  • Open your new Grist document directly
  • Start a new migration if needed

๐Ÿ”ง API Integration

The app integrates with both Airtable and Grist APIs:

Airtable Integration

  • Base Discovery: Fetches all accessible bases
  • Schema Reading: Reads table structures and field definitions
  • Data Export: Retrieves all records from selected tables
  • Type Mapping: Converts Airtable field types to Grist equivalents

Grist Integration

  • Organization Management: Lists orgs and workspaces
  • Document Creation: Creates new documents in selected workspace
  • Table Creation: Sets up table structures with proper schemas
  • Data Import: Populates tables with transformed Airtable data

๐ŸŽจ Customization

Color Scheme

The app uses a Grist-inspired color palette:

  • Teal/Turquoise: #4ECDC4, #6BBFB8, #3BB5AD
  • Orange Accents: #F4A261, #E76F51, #E9C46A

Confetti Animation

The celebration confetti uses the Grist brand colors and includes:

  • Smooth falling animation with rotation
  • Performance-optimized with requestAnimationFrame
  • Auto-cleanup after 4 seconds
  • 200 pieces for proper celebration effect

๐Ÿ› Troubleshooting

Common Issues

Token Validation Fails

  • Ensure your API tokens are valid and not expired
  • Check that tokens have necessary permissions
  • Verify Grist URL format is correct

Tables Not Loading

  • Confirm you have access to the selected Airtable base
  • Check that the base contains tables
  • Ensure stable internet connection

Migration Errors

  • Verify Grist workspace permissions
  • Check for field type compatibility issues
  • Review browser console for detailed error messages

๐Ÿงช Development Tools

React DevTools

To view the completion page with confetti during development:

  1. Install React DevTools browser extension
  2. Open the app and Developer Tools (F12)
  3. Go to "Components" tab
  4. Find the Index component
  5. Change currentStep state from 1 to 5
  6. Enjoy the confetti! ๐ŸŽŠ

Type Definitions

The project includes comprehensive TypeScript definitions for:

  • Airtable API responses
  • Grist API structures
  • Component props and state
  • Migration workflow types

๐Ÿ”ฎ Future Enhancements

  • Error Recovery: Automatic retry mechanisms for failed migrations
  • Data Validation: Pre-migration data quality checks
  • Batch Processing: Optimize large dataset transfers
  • Migration History: Track and manage previous migrations
  • Field Mapping: Custom field type mapping interface

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Development Guidelines

  • Use TypeScript for all new code
  • Follow the existing component structure
  • Add proper error handling
  • Include descriptive commit messages
  • Test your changes thoroughly

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Grist team for providing an excellent open-source alternative to Airtable
  • Airtable for their comprehensive API documentation
  • shadcn/ui for beautiful, accessible components
  • Tailwind CSS for the utility-first CSS framework
  • React team for the amazing development experience

Made with โค๏ธ for the open-source community

Report Bug ยท Request Feature ยท Documentation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6