A Halloween-themed frame-by-frame animation tool with built-in animation presets! Create spooky animations with bouncing balls, floating ghosts, smiling pumpkins, flying bats, and animated text.
- Frame-by-frame drawing with multiple tools (brush, eraser, shapes)
- 5 Built-in Halloween animations:
- ⚽ Bouncing Ball
- 👻 Ghost Floating
- 🎃 Pumpkin Smiling
- 🦇 Bat Flying
- 📝 Text Animation ("BOO!" and more)
- 🎨 Custom Animation Builder - Create your own animations with:
- Keyframe editor with full control
- 6 easing functions (linear, easeIn, easeOut, easeInOut, bounce, elastic)
- Animate position, rotation, scale, and opacity
- Use any emoji or character
- Animation preset system with keyframe interpolation
- Export to HTML with standalone playback
- Timeline editor with frame management
- Sprite library with Halloween emojis
- Undo/Redo support
- Playback controls with adjustable FPS
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
- Draw your object on Frame 1
- Move to Frame 10 and draw it in a new position
- Click ⚡ Create Tween button
- System automatically generates frames 2-9!
- Works with ANY drawing (circles, rectangles, text, etc.)
See TWEEN_GUIDE.md for the full tutorial.
- Click ✨ Presets button
- Choose pre-made animation (Ghost, Bat, Pumpkin, etc.)
- Animation applies instantly
- Good for quick effects
See ANIMATION_GUIDE.md for preset details.
- Select (V) - Move and resize objects
- Brush (B) - Freehand drawing
- Eraser (E) - Remove content
- Rectangle (R) - Draw rectangles
- Circle (C) - Draw circles
- Fill (F) - Fill background
- Tween Guide - Motion tweening tutorial (Adobe Flash style)
- Tween Troubleshooting - Common issues and solutions
- Animation Systems Explained - Understand both systems
- Animation Guide - Preset animations guide
- Animation System - Technical documentation
flash-o-ween/
├── app/ # Next.js app directory
│ ├── page.tsx # Main animation editor
│ └── layout.tsx # App layout
├── lib/
│ ├── animation/ # Animation preset system
│ │ ├── components/ # UI components
│ │ ├── types.ts # TypeScript definitions
│ │ ├── presets.ts # Built-in animations
│ │ ├── generator.ts # Frame generation
│ │ ├── renderer.ts # Canvas rendering
│ │ └── easing.ts # Easing functions
│ └── export/ # HTML export system
│ ├── components/ # Export UI
│ ├── export-orchestrator.ts
│ ├── frame-processor.ts
│ └── html-generator.ts
└── public/ # Static assets
npm testRun specific test suite:
npm test lib/animation/__tests__/animation-system.test.tsimport { AnimationPreset } from '@/lib/animation/types';
const myAnimation: AnimationPreset = {
id: 'my-animation',
name: 'My Animation',
description: 'Custom animation',
emoji: '🎨',
duration: 60,
easing: 'easeInOut',
keyframes: [
{ frame: 0, x: 100, y: 100, scale: 1 },
{ frame: 30, x: 200, y: 200, scale: 1.5 },
{ frame: 60, x: 100, y: 100, scale: 1 }
]
};Add your preset to lib/animation/presets.ts to make it available in the UI.
- Next.js 16 - React framework
- Fabric.js - Canvas manipulation
- TypeScript - Type safety
- Tailwind CSS - Styling
- Vitest - Testing
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.