Skip to content

conmeara/airtable-year-end-wrap

Repository files navigation

Year-End Wrap for Airtable

Create a Spotify Wrapped-style year-end recap for your team using data from any Airtable base.

Year-End Wrap Preview

What You Get

  • 12 animated slide templates - Beautiful, animated slides showing personalized stats
  • 30+ CSS animations - Confetti, sparkles, floating orbs, and more
  • Stats calculation engine - Aggregate hours, projects, clients, and more
  • Achievement/badge system - Automatically detect milestones and superlatives
  • AI-assisted customization - Export your schema and let AI help adapt the code

Quick Start

1. Clone the repository

git clone https://github.com/YOUR_ORG/year-end-wrap.git
cd year-end-wrap
npm install

2. Try Demo Mode (Optional)

Want to see the app in action before connecting your data? Enable demo mode to view sample data for a fictional creative agency:

// In frontend/config.js, set:
export const DEMO_MODE = true;

Then run block run to see all 12 slides with realistic sample data. The demo includes a full year of work data for "Alex Rivera" at "Stellar Studios" - complete with clients, collaborators, project leads, and achievements.

3. Export your Airtable schema

# Get a Personal Access Token from https://airtable.com/create/tokens
# (needs schema:bases:read scope)

node scripts/exportSchema.js --baseId=YOUR_BASE_ID --token=YOUR_PAT

This creates schema_output/SCHEMA_SUMMARY.md - a readable summary of your tables and fields.

4. Customize with AI assistance

Share your schema with Claude, Cursor, or another AI coding assistant:

"Here's my Airtable schema. Update frontend/config.js to map my tables and fields for a year-end wrap. My time entries are in the 'Tasks' table with a 'Hours' field."

The AI will help you:

  • Update table and field mappings in config.js
  • Adapt slide calculations to your data structure
  • Customize messaging and badges for your team

5. Run the app

block run

Open your Airtable base and add the app to an Interface page.

Project Structure

year-end-wrap/
├── frontend/
│   ├── index.js              # Main app entry point
│   ├── config.js             # Configuration (tables, fields, settings)
│   ├── style.css             # Animations and styling
│   ├── hooks/
│   │   └── useSettings.js    # Custom properties for Airtable config
│   ├── utils/
│   │   ├── colors.js         # Airtable color palette
│   │   ├── dateHelpers.js    # Date parsing and filtering
│   │   ├── statsCalculator.js # Data aggregation
│   │   └── achievementEngine.js # Badge detection
│   ├── components/
│   │   └── shared/           # Reusable UI components
│   └── slides/               # Individual slide components
├── scripts/
│   ├── exportSchema.js       # Export Airtable schema for AI
│   └── exampleStatsProcessor.js # Example data processing
├── docs/
│   ├── AI_ASSISTANT_GUIDE.md # Instructions for AI tools
│   └── CUSTOMIZATION.md      # Customization reference
└── block.json

Configuration

Edit frontend/config.js to match your Airtable schema:

// Set your recap year
export const RECAP_YEAR = 2025;

// Map your tables
export const TABLE_IDS = {
    entries: 'tblXXXXX',    // Your time entries table
    projects: 'tblXXXXX',   // Projects table
    clients: 'tblXXXXX',    // Clients table
    staff: 'tblXXXXX',      // Staff/team members table
};

// Map your fields
export const FIELD_IDS = {
    entries: {
        assignee: 'fldXXXXX',   // Link to staff
        hours: 'fldXXXXX',      // Hours worked
        endDate: 'fldXXXXX',    // Date field for filtering
        // ... more fields
    },
    // ... more tables
};

The 12 Slides

1. Cold Open

Personalized greeting with the user's name, animated word reveal, and ambient floating orbs. Sets the tone for the year-end experience.

Cold Open

2. At a Glance

Key metrics displayed in a bento grid layout. Shows total hours worked, number of projects, clients served, and team size with animated counters.

At a Glance

3. Industries

Circle-packed bubble visualization showing hours spent across different industries. Larger bubbles = more hours. Hover for project details.

Industries

4. Portfolio

Creative toolkit showcase with animated pill tags. Displays the different types of work/approaches used throughout the year (e.g., Brand Identity, Web Design, Campaign).

Portfolio

5. Top Clients

Ranked list of top clients with progress bars showing hours invested. Displays project count per client with visual hierarchy.

Top Clients

6. Collaborators

Team connection visualization showing colleagues you worked with most. Displays shared hours and project count with avatar initials.

Collaborators

7. Project Leads

Olympic-style podium showing the partners/leads you worked with. Includes hover tooltips with project details and a client POC highlight.

Project Leads

8. Phase Breakdown

Horizontal stacked bar showing time distribution across Pre-Production, Production, and Post-Production phases with percentage breakdown.

Phase Breakdown

9. Project Heatmap

GitHub-style activity heatmap showing daily work throughout the year. Color-coded by work type with hover tooltips for daily details.

Project Heatmap

10. Tempo

Monthly work rhythm bar chart showing hours logged per month. Highlights busiest and slowest periods with visual peaks and valleys.

Tempo

11. Your Moment

Personal achievement spotlight featuring earned badges and superlatives. Shows #1 rankings and unique accomplishments with glow effects.

Your Moment

12. Close

Summary card with celebratory confetti animation. Includes option to export slides as PNG images for sharing.

Close

Reusable Components

All animation components can be used in your own slides:

import { Sparkles, AnimatedNumber, WordReveal, GlowText } from './components/shared';

// Sparkle effects
<Sparkles count={20} colors={['#FF6F2C', '#8B46FF']} />

// Animated counters
<AnimatedNumber value={1234} suffix=" hrs" glow />

// Text reveal animation
<WordReveal text="Your Year in Review" delay={300} />

// Glowing emphasis
<GlowText color="#FCB400">2,500 hours</GlowText>

Achievement System

The wrap automatically detects achievements based on stats:

  • Marathon Maker - 2000+ hours logged
  • Project Hopper - 15+ projects
  • Team Player - 25+ collaborators
  • Year-End Warrior - Strong November-December finish
  • Client Whisperer - 50%+ hours with one client
  • And more...

Customize thresholds in utils/achievementEngine.js.

Scripts

Export Schema

node scripts/exportSchema.js --baseId=appXXXXX --token=patXXXXX

Outputs AI-friendly schema documentation for customization.

Example Stats Processor

# After configuring
node scripts/exampleStatsProcessor.js

Demonstrates data processing patterns for offline analysis.

Requirements

  • Node.js 18+
  • Airtable base with time tracking data
  • Airtable Blocks CLI (npm install -g @airtable/blocks-cli)

License

MIT License - See LICENSE for details.


Built with love for year-end celebrations.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors