An interactive digital magazine viewer built as a Farcaster mini app, featuring a realistic page-flipping experience with Web3 integration for NFT minting.
Live Demo: seeker-indol.vercel.app
Seeker is a full-featured digital magazine viewer that combines modern web technologies with blockchain integration. It transforms a 122-page digital magazine into an engaging, interactive experience with smooth page transitions, touch/swipe navigation, and integrated social features.
- Realistic Page Flipping: Smooth, physics-based page turning animation using
react-pageflip - Mobile-First Design: Touch gestures, swipe navigation, and responsive layout
- Interactive Scrubber: Jump to any page instantly with a progress bar
- Web3 Integration: Direct NFT minting through Manifold marketplace
- Farcaster Integration: Seamless profile viewing and social sharing
- Progressive Loading: Smart image preloading for optimal performance
- Production Deployment: Fully deployed on Vercel with CDN optimization
- React 18.3.1 - Modern React with hooks and concurrent features
- TypeScript 5.8.3 - Type-safe development with strict mode
- Vite 5.2.11 - Lightning-fast build tool and dev server
- Wagmi 3.0.1 - Type-safe Ethereum library with React hooks
- Viem 2.39.3 - Lightweight Ethereum utilities
- Farcaster SDK - Mini app integration with social features
- Base & Ethereum Mainnet - Multi-chain support via Wagmi
- react-pageflip 2.0.3 - Realistic flipbook animations
- react-zoom-pan-pinch 3.7.0 - Touch gesture support
- TanStack Query 5.45.1 - Server state management and caching
- Biome 1.9.4 - Fast linting and code formatting
- pnpm - Efficient package management
- TypeScript Strict Mode - Enhanced type safety and code quality
The app uses a focused component hierarchy:
App (Root)
└── MagazineViewer (Main Component)
├── HTMLFlipBook (Third-party flipbook wrapper)
│ └── Page Components (122 instances)
├── Header (Logo, Social, Mint buttons)
└── Scrubber (Page navigation)
- Local State: Used for UI state (current page, loading status)
- Refs: Touch coordinates and flipbook instance management
- TanStack Query: Ready for future API data fetching
- Progressive Image Loading: Preloads first 5 pages for instant interactivity
- Lazy Loading: Remaining images load on-demand during browsing
- Memoization:
useCallbackprevents unnecessary re-renders - forwardRef Pattern: Efficient ref forwarding to page components
Type-safe Wagmi configuration with multi-chain support:
// seeker/src/wagmi.ts
export const config = createConfig({
chains: [base, mainnet],
connectors: [miniAppConnector()],
transports: { /* HTTP transports */ }
});The app registers as a Farcaster mini app via .well-known/farcaster.json with:
- Account association verification
- App metadata and branding
- Deep linking configuration
seeker/
├── src/
│ ├── App.tsx # Root component with Web3 providers
│ ├── MagazineViewer.tsx # Main viewer logic (180 LOC)
│ ├── wagmi.ts # Web3 configuration
│ ├── App.css # Component styling
│ ├── index.css # Global styles & animations
│ └── main.tsx # React entry point
├── public/
│ ├── .well-known/
│ │ └── farcaster.json # Mini app configuration
│ ├── seekerImages/ # 122 magazine pages (JPEG)
│ └── [branding assets] # Logo, icons, splash screens
├── package.json # Dependencies & scripts
├── vite.config.ts # Build configuration
├── tsconfig.json # TypeScript configuration
└── biome.json # Linting & formatting rules
- Node.js 18.x or higher
- pnpm 10.23.0 or higher (can use npm/yarn as alternative)
- Clone the repository:
git clone https://github.com/yourusername/seeker.git
cd seeker/seeker- Install dependencies:
pnpm install
# or
npm install
# or
yarn installStart the development server:
pnpm devThe app will be available at http://localhost:5173
- Lint your code:
pnpm lint- Build the production bundle:
pnpm build- Preview the production build locally:
pnpm previewThe optimized build will be in the dist/ directory.
-
Page Navigation:
- Click page edges to flip forward/backward
- Use the scrubber to jump to specific pages
- Test smooth animations during transitions
-
Interactive Elements:
- Click logo to view Farcaster profile
- Click X button to open Twitter
- Click "Mint on Manifold" button
-
Performance:
- Verify first 5 pages load quickly
- Check smooth scrolling through all 122 pages
-
Touch Gestures:
- Swipe left/right to turn pages
- Test pinch-to-zoom functionality
- Verify responsive layout on various screen sizes
-
Mobile Navigation:
- Test scrubber with touch input
- Verify all buttons are easily tappable
While Web3 features work best in Farcaster's environment, you can test locally:
- Check that Wagmi configuration loads without errors
- Verify console shows proper chain connections (Base, Mainnet)
Tested and working on:
- Chrome/Edge (latest)
- Safari (latest)
- Firefox (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)
This project is configured for Vercel deployment:
- Push to your GitHub repository
- Import project in Vercel
- Vercel will auto-detect Vite configuration
- Deploy with default settings
The app includes:
- Automatic CDN distribution for images
- Server-side rendering ready
- Optimized production builds
pnpm lintUses Biome for:
- TypeScript type checking
- Code style enforcement
- Best practices validation
- Strict mode enabled
- ES2020 target
- Module resolution optimized for Vite
- React JSX support
This project demonstrates:
- Modern React Patterns: Hooks, refs, memoization, and component composition
- TypeScript Proficiency: Type-safe props, strict mode, module augmentation
- Web3 Integration: Wagmi configuration, multi-chain support, Farcaster SDK
- Performance Engineering: Progressive loading, lazy loading, optimization
- Production Deployment: Vercel hosting, CDN optimization, build tooling
- Developer Experience: Fast dev server, hot reload, linting automation
- Mobile-First Design: Touch gestures, responsive layouts, mobile optimization
Potential improvements:
- Add keyboard navigation (arrow keys)
- Implement fullscreen mode
- Add page bookmarking
- Create table of contents/chapter navigation
- Add social sharing features
- Implement analytics tracking
- Add unit/integration tests
The source code in this repository is available under the MIT License. You are free to use, modify, and distribute the code for learning or building your own projects.
Important: The magazine content (all images in seeker/public/seekerImages/ and brand assets) is NOT covered by the MIT License and remains fully copyrighted. The magazine content is provided in this repository solely to demonstrate the functionality of the mini app.
You may NOT:
- Reproduce, copy, or redistribute the magazine images
- Use the magazine content in other projects
- Create derivative works from the magazine content
For full details, see the LICENSE file.
- Farcaster: @seeker_magazine (FID: 1019537)
- Twitter/X: @seeker_magazine
- NFT Collection: Manifold
Built with modern web technologies and deployed on Vercel.