A living, real-time archive of LGBTQ+ resilience in the United States.
Survival Pending is an urgent response to the retrenchment of LGBTQ+ rights and visibility in the United States. We provide a secure, anonymous platform for LGBTQ+ individuals to document their experiences, transforming written testimonies into powerful audio narratives using AI voice technology.
Every story shared becomes part of a permanent, uncensorable archiveβa collective witness to both the challenges faced and the resilience shown by our community during these critical times.
- Historical Record: Personal stories become invaluable historical documentation
- Community Connection: Isolated individuals discover they're not alone
- Safety Through Anonymity: Share truth without risking personal safety
- Amplified Voices: AI audio transformation makes stories more accessible and impactful
Your safety is our absolute priority:
- No Email Required: Sign up with only a username and password
- Anonymous Usernames: Auto-generated in the format
adjective_noun_1234 - No Tracking: Minimal analytics, no personal data collection
- Quick Exit: Press ESC 3 times or click the exit button to immediately leave
- Encrypted Data: All sensitive information is encrypted
- Content Moderation: AI pre-screening and human review ensure a safe space
- Write: Share your experience in up to 1000 characters (~90 seconds of audio)
- Refine: Optional AI assistance to clarify your message while preserving your authentic voice
- Voice Selection: Choose from 8 diverse AI voices to represent your story
- Preview: Listen to your audio testimony before submitting
- Crisis Support: Immediate access to resources if you need help
- Browse Stories: Filter by state, theme, or browse all approved stories
- Audio Experience: Every story is a unique audio testimony
- Share Safely: Built-in sharing tools that protect privacy
- Community Insights: See demographic patterns while maintaining individual anonymity
- Node.js 18+ and npm
- PostgreSQL database (we recommend Neon)
- Required API keys (see Environment Setup)
-
Clone the repository
git clone https://github.com/yourusername/survivalpending.git cd survivalpending -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile:# Database DATABASE_URL="postgresql://..." # Authentication JWT_SECRET="generate-a-secure-secret" # AI Services ANTHROPIC_API_KEY="your-claude-api-key" GROQ_API_KEY="your-groq-api-key" ELEVENLABS_API_KEY="your-elevenlabs-key" # Security TURNSTILE_SECRET_KEY="your-cloudflare-turnstile-key" # Storage BLOB_READ_WRITE_TOKEN="your-vercel-blob-token" # Content Management (Optional) NEXT_PUBLIC_SANITY_PROJECT_ID="your-project-id" NEXT_PUBLIC_SANITY_DATASET="production" SANITY_API_TOKEN="your-sanity-token"
-
Initialize the database
npx prisma generate npx prisma db push
-
Run the development server
npm run dev
Open http://localhost:3000 to see the application.
- Framework: Next.js 15 with App Router
- Database: PostgreSQL (Neon) with Prisma ORM
- Authentication: Custom JWT-based anonymous auth
- UI Components: shadcn/ui with Tailwind CSS
- AI Integration:
- Claude 3.5 Sonnet for story refinement
- ElevenLabs for text-to-speech
- Groq for username generation
- Content Management: Sanity CMS (optional)
- Analytics: Google Analytics 4 & Meta Pixel (privacy-preserving)
- Deployment: Optimized for Vercel
survivalpending/
βββ app/ # Next.js app router pages
β βββ (authenticated)/ # Protected routes
β βββ api/ # API endpoints
β βββ ... # Public pages
βββ components/ # React components
β βββ auth/ # Authentication components
β βββ story/ # Story creation flow
β βββ safety/ # Safety features (quick exit, crisis modal)
β βββ ui/ # shadcn/ui components
βββ lib/ # Utility functions and services
βββ prisma/ # Database schema and migrations
βββ sanity/ # CMS configuration (optional)
βββ scripts/ # Deployment and maintenance scripts
We welcome contributions that align with our mission of protecting and amplifying LGBTQ+ voices.
- Check existing issues or create a new one describing your contribution
- Fork the repository and create a feature branch
- Follow the code style - we use TypeScript and follow the existing patterns
- Test thoroughly - ensure all features work and consider edge cases
- Submit a PR with a clear description of changes
- Accessibility improvements
- Additional language support
- Performance optimizations
- Security enhancements
- Documentation improvements
This is a safe space. We expect all contributors to:
- Respect the sensitive nature of the project
- Prioritize user safety and privacy
- Be inclusive and welcoming
- Follow our community guidelines
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run sync:dev # Sync development data
npm run sync:prod # Sync production dataGiven the sensitive nature of this platform:
- All stories undergo AI pre-screening for harmful content
- Manual moderation ensures community safety
- Rate limiting prevents abuse
- No personally identifiable information is collected
- Regular security audits and updates
Please report security vulnerabilities to security@survivalpending.com. Do not create public issues for security problems.
- Fork this repository
- Sign up for Vercel
- Import your forked repository
- Add all environment variables
- Deploy
See our deployment guide for detailed instructions on self-hosting.
If you or someone you know needs immediate support:
- Trans Lifeline: 877-565-8860
- The Trevor Project: 1-866-488-7386
- PFLAG: pflag.org - Support for LGBTQ+ people and families
- GLAAD: glaad.org - Media advocacy and resources
This project is licensed under a Modified MIT License with Attribution and Non-Commercial Restrictions.
Key points:
- β You can contribute to this project
- β You can use for personal/educational purposes
- β You can deploy your own instance for your community
- β You cannot create commercial derivatives
- β You cannot remove attribution
- β You cannot use for harmful purposes
See LICENSE for full details.
Important: Stories submitted to the platform remain the property of their anonymous authors.
Built with:
- Love, urgency, and hope for our community
- Next.js and Vercel
- shadcn/ui for beautiful components
- Anthropic, ElevenLabs, and Groq for AI services
Special thanks to all the brave individuals sharing their stories and everyone working to protect LGBTQ+ rights.
Your story matters. Your voice matters. You matter.
Visit Survival Pending β’
Share Your Story β’
Listen to Stories
