A Twitter/Bluesky-inspired social media application built with Next.js 14 and Dash Platform, focusing on exceptional UI/UX design and smooth interactions.
- 🎨 Beautiful, modern UI with attention to detail
- 🌓 Dark/Light mode support
- 💬 Post creation up to 500 characters
- 👤 Customizable avatars with 32 properties
- 🔄 Real-time updates with mock data
- 📱 Responsive design
- ✨ Smooth animations with Framer Motion
- 🎯 Accessible components with Radix UI
- 🔐 Dash Platform integration with DPNS support
- Framework: Next.js 14 with App Router
- Styling: Tailwind CSS with custom design system
- UI Components: Radix UI for accessibility
- Animations: Framer Motion
- State Management: Zustand
- Icons: Heroicons
- Notifications: React Hot Toast
- Install dependencies:
npm install
- Run the development server:
npm run dev
- Open http://localhost:3000 in your browser
- Custom color palette with Yappr brand colors
- Smooth micro-interactions on all interactive elements
- Glass morphism effects for modern aesthetics
- Thoughtful loading states and transitions
- Consistent spacing and typography system
yappr/
├── app/ # Next.js app directory
├── components/ # React components
│ ├── ui/ # Reusable UI components
│ ├── layout/ # Layout components
│ ├── post/ # Post-related components
│ └── compose/ # Post composition components
├── lib/ # Utilities and data
│ ├── store.ts # Zustand store
│ ├── types.ts # TypeScript types
│ ├── utils.ts # Helper functions
│ ├── mock-data.ts # Mock data for development
│ ├── avatar-generator-v2.ts # Avatar generation system
│ └── dash-platform.ts # Dash Platform integration
├── contracts/ # Dash Platform contracts
│ └── yappr-social-contract.json
└── public/ # Static assets
Yappr uses Dash Platform for decentralized data storage:
- Profiles: Stored without usernames (usernames come from DPNS)
- Avatars: Stored as separate documents with encoded customization data
- Posts: Support up to 500 characters with media attachments
- Social Features: Likes, reposts, follows, and bookmarks
profile
: User profiles indexed by $ownerIdavatar
: Avatar customization data (version, data, style)post
: User posts with 500 character limitlike
,repost
,follow
: Social interactionsbookmark
,list
,block
,mute
: User preferencesdirectMessage
: Encrypted DMsnotification
: User notifications