Open-Source Accountability Infrastructure for Voluntary Behavioral Self-Regulation
Reclaim is a privacy-first, open-source accountability platform designed for individuals who voluntarily seek to regulate compulsive adult content consumption that interferes with productivity, relationships, or mental well-being.
Freedom from compulsive behavior should not be restricted by paywalls.
- 🔐 Secure Authentication — JWT + bcrypt password hashing
- 🔥 Streak Tracking — Daily check-ins, current/longest streak, relapse count
- 🛡️ Emergency Urge Mode — Delay timer, breathing exercises, grounding, motivational prompts
- 🤝 Accountability Partners — Consent-driven email notifications
- 📊 Smart Analytics — Trigger patterns, mood tracking, visual insights with Chart.js
- 🔒 Privacy First — No browsing history, no screenshots, no third-party analytics
- 🐳 Self-Hostable — Docker support for easy deployment
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, TailwindCSS v4 |
| Charts | Chart.js + react-chartjs-2 |
| Backend | Node.js, Express |
| Database | PostgreSQL |
| Auth | JWT + bcrypt |
| DevOps | Docker, Docker Compose |
- Node.js 18+
- PostgreSQL 14+ (or Docker)
git clone https://github.com/vancyferns/Reclaim.git
cd Reclaim
# Install backend dependencies
cd server && npm install && cd ..
# Install frontend dependencies
cd client && npm install && cd ..cp .env.example .env
# Edit .env with your database credentials and JWT secretdocker-compose up -dThis starts PostgreSQL, the backend API, and the frontend.
# Terminal 1: Start backend
cd server && npm run dev
# Terminal 2: Start frontend
cd client && npm run devNavigate to http://localhost:5173
Reclaim/
├── client/ # React + Vite Frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React context providers
│ │ ├── pages/ # Page components
│ │ └── services/ # API service layer
│ └── package.json
├── server/ # Node.js + Express Backend
│ ├── src/
│ │ ├── config/ # DB, env, schema init
│ │ ├── controllers/ # Route handlers
│ │ ├── middleware/ # Auth, validation
│ │ └── routes/ # API route definitions
│ └── package.json
├── extension/ # Browser Extension (Week 4)
├── docker-compose.yml
├── .env.example
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Create account |
| POST | /api/auth/login |
Login |
| GET | /api/auth/profile |
Get profile (auth) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/streak |
Get current streak |
| POST | /api/streak/checkin |
Daily check-in |
| POST | /api/streak/relapse |
Log relapse |
| GET | /api/streak/history |
Relapse history |
| GET | /api/streak/analytics |
Analytics data |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/emergency/start |
Start session |
| PUT | /api/emergency/:id/complete |
Complete session |
| GET | /api/emergency/history |
Session history |
| GET | /api/emergency/motivation |
Random prompt |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/partners |
Add partner |
| GET | /api/partners |
List partners |
| DELETE | /api/partners/:id |
Remove partner |
- Voluntary Participation — Users explicitly enable every feature
- Privacy First — No browsing history tracking, no screenshots, no spying
- Transparency — Fully open-source, audit the code
- Behavioral Science — Focused on accountability and interruption, not moral policing
- Passwords hashed with bcrypt (12 salt rounds)
- JWT token authentication
- Rate limiting on auth endpoints (20 req/15min)
- Global API rate limiting (100 req/15min)
- Helmet.js security headers
- Input validation on all endpoints
- No third-party analytics or tracking
MIT License — see LICENSE for details.
PRs are welcome! Please read the contribution guidelines before submitting.
Built with purpose. Made in India. 🇮🇳