Naked Deadlines is a unique accountability app that helps you meet your goals by raising the stakes. Set a deadline, upload an embarrassing photo, and if you don't complete your goal in time, the photo gets automatically tweeted from your account! It's motivation through potential embarrassment - the ultimate accountability tool.
- Set a Goal: Define what you want to accomplish and when
- Upload an Embarrassing Photo: This is your "collateral" - something you'd rather not share publicly
- Choose a Friend: Select a friend to verify when you've completed your goal
- Get to Work: Complete your goal before the deadline
- Verification: Your friend confirms your completion, or...
- Face the Consequences: Miss your deadline and your embarrassing photo goes public on Twitter
- Local Storage Encryption: Your embarrassing photos are stored securely in your browser's local storage with encryption
- Server-Side Security: All sensitive operations happen through secure server-side API routes
- No Public Exposure: Photos are only accessible with proper authentication and authorization
- Automatic Cleanup: Data is removed after goal completion or failure
- Seamless Twitter OAuth integration
- Secure session management
- Uses your Twitter handle for identification
- Easy goal setting with deadlines
- Friend verification system using secure confirmation links
- UUID-based confirmation tokens for security
- Paid "chicken out" option (99¢) for those who want to cancel their timer
- Playful bathroom-themed UI with animations and decorations
- Celebratory success screens
- Mobile-responsive design
- Real-time deadline tracking
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Radix UI components
- Authentication: NextAuth.js with Twitter OAuth
- Database: Supabase
- Email: Brevo API for confirmation emails
- Payments: Stripe for "chicken out" payments
- Deployment: Vercel
- The bathroom theme was chosen because when you're "naked" (vulnerable), you're most likely to be in a bathroom! 🚿
- The rubber ducks throughout the UI are accountability buddies watching your progress
- The app generates random, humorous tweets when you fail to meet your deadline
- Every successful goal completion triggers a bubble animation celebration
- The app was designed to be both motivating and slightly anxiety-inducing (in a good way!)
Naked Deadlines takes your privacy seriously:
- We never store your embarrassing photos on our servers
- Photos remain in your encrypted local storage until needed
- Confirmation tokens are randomly generated UUIDs
- All API routes are properly secured against unauthorized access
- Environment variables are kept server-side only
# Install dependencies
pnpm install
# Run development server
pnpm run devCreate a .env file with the following:
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_key
TWITTER_CLIENT_ID=your_twitter_client_id
TWITTER_CLIENT_SECRET=your_twitter_client_secret
AUTH_SECRET=your_auth_secret
NEXT_PUBLIC_APP_URL=your_app_url
BREVO_API_KEY=your_brevo_api_key
STRIPE_SECRET_KEY=your_stripe_secret_key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
- Create a Stripe account at stripe.com
- Get your API keys from the Stripe Dashboard
- Add them to your
.envfile - For testing, use Stripe's test cards (e.g.,
4242 4242 4242 4242with any future expiry date and any CVC)
MIT
Made with 💧 and 🧼
