A comprehensive online platform for AA, NA, and recovery support meetings with court-ordered proof of attendance certificates. Built to replicate and enhance the 12step-online.com business model.
We are actively looking for contributors and early collaborators.
- Start here:
CONTRIBUTING.md - Roadmap:
docs/OPEN_SOURCE_ROADMAP.md - Open issues labeled
help wantedandgood first issueare ideal entry points. - Community expectations:
CODE_OF_CONDUCT.md - Security reporting:
SECURITY.md
- 24/7 Chat Rooms: Real-time text-based recovery support rooms (AA, NA, Christian, Open)
- Scheduled Video Meetings: Zoom-integrated scheduled meetings
- User Authentication: Secure registration and login system
- Anonymous Chat Names: Users can choose anonymous names for privacy
-
Court-Ordered Proof of Attendance: Generate official attendance certificates
-
Instant PDF Download: Immediate certificate generation after meetings
-
Attendance Tracking: Complete history of all attended meetings
-
Verification System: Unique verification codes for each certificate
-
30-Minute Minimum: Automatic duration tracking for valid certificates
-
Premium UI/UX: Modern glassmorphism design with smooth animations, mesh gradients, and frosted glass aesthetics
-
WordPress Integration: Headless CMS capability for Blog and "Just for Today" (JFT) daily reflections
-
Donation System: "Pass the Can" floating CTA for community support
-
Resources Library: Comprehensive guides for 12 Steps, Traditions, and literature
- Node.js (v20.19 or higher)
- MongoDB (v4.4 or higher)
- Stripe account (for payments)
- Clone and Install
cd aaventure
npm install- Start MongoDB
# On macOS with Homebrew:
brew services start mongodb-community
# Or manually:
mongod --dbpath /path/to/your/data/directory- Configure Environment
cp .env.example .env
# Edit .env with your configuration- Seed Database
npm run seed- Start Server
npm run dev- Access Application Open your browser to: http://localhost:3000
Edit .env file with your settings:
# Server
PORT=3000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/aaventure
# Security (CHANGE THESE IN PRODUCTION!)
JWT_SECRET=your-super-secret-jwt-key
SESSION_SECRET=your-super-secret-session-key
# Stripe (Get from https://dashboard.stripe.com)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
# URLs
BASE_URL=http://localhost:3000
CLIENT_URL=http://localhost:3000- Create account at https://stripe.com
- Get API keys from Dashboard > Developers > API keys
- Set up webhook endpoint:
/api/subscription/webhook - Add webhook secret to
.env
Matching 12step-online.com pricing:
- 1 Month: $20.00
- 2 Months: $35.00 (Save $5)
- 3 Months: $45.00 (Save $15)
All plans include:
- Court-Ordered Proof of Attendance
- Immediate PDF Certificates
- Attendance Tracking
- Verification Support
- Access to All Meetings
- Framework: Express.js
- Real-time: Socket.io
- Database: MongoDB with Mongoose
- Authentication: JWT + Express Sessions
- Payments: Stripe
- PDF Generation: PDFKit
- HTML5: Semantic markup
- CSS3: Custom design with gradients and animations
- JavaScript: Vanilla JS with Socket.io client
- No Framework: Pure web technologies for maximum performance
- User: Authentication, subscription, attendance records
- Meeting: Room configuration and scheduling
- Message: Chat history
- Attendance: Certificate records with verification
aaventure/
βββ server/
β βββ models/ # Database models
β β βββ User.js
β β βββ Meeting.js
β β βββ Message.js
β β βββ Attendance.js
β βββ routes/ # API routes
β β βββ auth.js
β β βββ meetings.js
β β βββ attendance.js
β β βββ subscription.js
β βββ middleware/ # Auth middleware
β β βββ auth.js
β βββ utils/ # Utilities
β β βββ certificateGenerator.js
β βββ index.js # Main server file
β βββ seed.js # Database seeding
βββ public/
β βββ css/
β β βββ style.css # Premium styling
β βββ js/
β β βββ app.js # Client application
β βββ certificates/ # Generated PDFs
β βββ index.html # Main HTML
βββ .env # Environment config
βββ .env.example # Config template
βββ package.json
βββ README.md
- Password hashing with bcrypt
- JWT token authentication
- Session management with MongoDB store
- CORS protection
- Input validation
- SQL injection prevention (NoSQL)
- XSS protection
- Register: Create account with username, email, and chat name
- Join Meetings: Enter any 24/7 chat room or scheduled meeting
- Chat: Participate in recovery discussions
- Subscribe: Purchase subscription for certificates
- Get Certificates: After 30+ minutes, generate proof of attendance
- Download: Instant PDF download with verification code
- Add meetings via API or database
- Monitor user activity
- Manage subscriptions
- Verify certificates
- Premium Aesthetics: Vibrant gradients, glassmorphism, smooth animations
- User-Centric: Intuitive navigation and clear call-to-actions
- Accessibility: High contrast, readable fonts, semantic HTML
- Responsive: Mobile-first design approach
- Performance: Optimized assets and efficient code
POST /api/auth/register- Register new userPOST /api/auth/login- LoginPOST /api/auth/logout- LogoutGET /api/auth/me- Get current user
GET /api/meetings- List all meetingsGET /api/meetings/room/:roomId- Get meeting by roomPOST /api/meetings/:id/join- Join meetingPOST /api/meetings/:id/leave- Leave meeting
GET /api/attendance/my-records- Get user's recordsPOST /api/attendance/generate-certificate- Generate certificateGET /api/attendance/verify/:certificateId- Verify certificateGET /api/attendance/download/:certificateId- Download PDF
GET /api/subscription/plans- Get pricing plansPOST /api/subscription/create-checkout- Create Stripe checkoutPOST /api/subscription/webhook- Stripe webhookGET /api/subscription/status- Check subscription status
# Test health endpoint
curl http://localhost:3000/api/health
# Test registration
curl -X POST http://localhost:3000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"testuser","email":"test@example.com","chatName":"Test User","password":"password123"}'- β Change JWT_SECRET and SESSION_SECRET
- β Set up production MongoDB (MongoDB Atlas)
- β Configure Stripe production keys
- β Set NODE_ENV=production
- β Enable HTTPS
- β Set up domain and SSL certificate
- β Configure CORS for production domain
- β Set up monitoring and logging
- β Configure backup strategy
- β Set up email notifications
- Heroku: Easy deployment with MongoDB Atlas
- DigitalOcean: VPS with full control
- AWS: Scalable cloud infrastructure
- Vercel/Netlify: Frontend + serverless functions
Replicates 12step-online.com:
- Free Tier: Access to all chat rooms and meetings
- Premium Tier: Court-ordered proof of attendance
- Revenue Streams:
- Subscription fees ($20-45/month)
- Potential affiliate partnerships
- Donation system ("Pass the Can")
This is a private project, but suggestions are welcome!
ISC License - Copyright (c) 2026 Seth Kontny
For issues or questions:
- Check the documentation
- Review API endpoints
- Check MongoDB connection
- Verify environment variables
- Check browser console for errors
- Video chat integration (WebRTC)
- Mobile apps (React Native)
- Email notifications
- Admin dashboard
- Analytics and reporting
- Multi-language support
- SMS reminders
- Integration with court systems
- Inspired by 12step-online.com
- Built with modern web technologies
- Designed to help people in recovery
Built with β€οΈ for the recovery community