{"_id":"@amiraezaat824/sarahah-app","_rev":"7-acd6bacb246847aaee3459d87f53c749","name":"@amiraezaat824/sarahah-app","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@amiraezaat824/sarahah-app","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@amiraezaat824/sarahah-app@1.0.0","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"dist":{"shasum":"75a1a16d567f1260f2833328612c1d162e0711b0","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.0.tgz","fileCount":42,"integrity":"sha512-gA9XIbg87jdiRpn1BuEYf0IeTPdj8xbmmwWC7iJuWyVaW7XfCm3nMkk7kj/6L0gfscc/Lq1YDoxsiJu4PCUIjg==","signatures":[{"sig":"MEYCIQCAkxqrTiMu2M+gPL2MBjagZ4+NZHqXhHrHPVUm1+PpLAIhANDrNQZuKLjJDqYCb17iM34WdMl+4NXqPpSKL1S/7G16","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41491},"main":"src/main.js","type":"module","gitHead":"a3a017133de7186b021dba654eaa1a8710fd7f20","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.0_1777144274974_0.7126201443357165","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amiraezaat824/sarahah-app","version":"1.0.1","keywords":[],"author":"","license":"ISC","_id":"@amiraezaat824/sarahah-app@1.0.1","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"dist":{"shasum":"a657c2ac5854eecafed7886ac553cd67cfc2e6fc","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.1.tgz","fileCount":43,"integrity":"sha512-haNMaHHbZG1yX3YJ2pZ7pUpivUTujWJGHqERzvesWR77QUs4dc4E/lx+EOHjaIcouCghFBWZ03SZ0p2cGXezSQ==","signatures":[{"sig":"MEUCIQCCifjnUjBQA8h1XSm9dEh4sfMlxS5VkuGV5FZi1VC/MAIgDGGPDgqApKsvq/hoVqCgjyQK8pRhN4JnPWagFeS9N/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45191},"main":"src/main.js","type":"module","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.1_1777145294001_0.23301257839527145","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@amiraezaat824/sarahah-app","version":"1.0.2","keywords":[],"author":"","license":"ISC","_id":"@amiraezaat824/sarahah-app@1.0.2","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"dist":{"shasum":"3454bd7385c081e84f86a278b076834452f905ff","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.2.tgz","fileCount":44,"integrity":"sha512-9dCORZbcmwV9XvsLnnJo0r3QEmLKrQdLkDXtYUVuWJYwFVErqTgy+hdPQFMNTEnv9bdIsAnHPGCA2fWJUi8tQA==","signatures":[{"sig":"MEYCIQDo0EdqLnkiIKk0Mf6IRQJCu+V+D70YUsNlEIXSgKBXugIhAMdB4hUthIdVkgZZsu2TnwqpU2sCUc4gnFa/xaujor7M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48891},"main":"src/main.js","type":"module","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"_npmVersion":"10.9.3","description":"A Node.js backend application for an anonymous messaging platform similar to Sarahah, built with Express.js, MongoDB, and Redis.","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.2_1777145356101_0.8955034583792709","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@amiraezaat824/sarahah-app","version":"1.0.3","keywords":[],"author":"","license":"ISC","_id":"@amiraezaat824/sarahah-app@1.0.3","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"dist":{"shasum":"8377494d5ebb60513b237d76356f9d4a59c39d61","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.3.tgz","fileCount":44,"integrity":"sha512-vjH1QfVntvrpbNTxXKcJ+fTzCmjjTuHLXTehOvhI/0zMYTt7URGhAdMtlzGLP9XtEukQgzs/7eNnOaowtiv1sQ==","signatures":[{"sig":"MEQCIGnEYbhxCI0KTz0UQnqPL9qmxfZO5cFVb8mFTAvHYLERAiBMX8WKEc4Jp2bX58yMyOrABAyz9FBQSu66vCeDfBaEYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49055},"main":"src/main.js","type":"module","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"_npmVersion":"10.9.3","description":"A Node.js backend application for an anonymous messaging platform similar to Sarahah, built with Express.js, MongoDB, and Redis.","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.3_1777145622222_0.8262188501474097","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@amiraezaat824/sarahah-app","version":"1.0.4","keywords":["anonymous","messages","sarahah","app","base","package"],"author":{"name":"Amira Ezaat"},"license":"MIT","_id":"@amiraezaat824/sarahah-app@1.0.4","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"dist":{"shasum":"f0dba7b9e5ebce245f838b0d9aca042b9d70b1d1","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.4.tgz","fileCount":44,"integrity":"sha512-RFDRvbCCV24pPVPccIHQMGpd88Q3Ggm3QYYcTO8a0nXjajlOVNzxexiLebTmoAgyQg1FuVRtdoWeNRRaq3h+2w==","signatures":[{"sig":"MEUCIQD/XLE00ReEYdLyZGTzpZ6kPHM+6jFrtnxqsi2viK4CmgIgFloyXY/FtjggTpre0q/UI8dNjXvwv6YaBTvBF8/57Hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49191},"main":"src/main.js","type":"module","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"_npmVersion":"10.9.3","description":"A base package for Sarahah-like anonymous messaging applications","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.4_1777145707612_0.5460744583760437","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@amiraezaat824/sarahah-app","version":"1.0.5","keywords":["anonymous","messages","sarahah","app","base","package"],"author":{"name":"Amira Ezaat"},"license":"MIT","_id":"@amiraezaat824/sarahah-app@1.0.5","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"homepage":"https://github.com/amiraezaat67/sarahah_dev_Repo#readme","bugs":{"url":"https://github.com/amiraezaat67/sarahah_dev_Repo/issues"},"dist":{"shasum":"c7dd64ca2753b2bf709d6bb4c8d2dbbb3a5a1373","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.5.tgz","fileCount":44,"integrity":"sha512-AteHkW4XG2UL4IKokRaWvFnXnPR5iuIcC/I+dhWJgUjZVg6GF5QfAedCf38THWP7NvVoeLANYbykgoc/KkVPeg==","signatures":[{"sig":"MEQCIAcQWD+/1W2vWuj+MxGK1mRSkxNKpY+2DqMA47ENeA/xAiBHkZLWcT6tjVoz0fvAdr4J6UR332BAEvwDuGCxp0jEEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49370},"main":"src/main.js","type":"module","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","scripts":{"dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","start":"node .","publish-package":"npm publish --access public"},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"repository":{"url":"git+https://github.com/amiraezaat67/sarahah_dev_Repo.git","type":"git"},"_npmVersion":"10.9.3","description":"A base package for Sarahah-like anonymous messaging applications","directories":{},"_nodeVersion":"20.14.0","dependencies":{"cors":"^2.8.6","redis":"^5.12.1","argon2":"^0.44.0","bcrypt":"^6.0.0","dotenv":"^17.3.1","express":"^5.2.1","mongoose":"^8.23.0","cross-env":"^10.1.0","nodemailer":"^8.0.5","jsonwebtoken":"^9.0.3","google-auth-library":"^10.6.2","@amiraezaat824/sarahah-app":"^1.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sarahah-app_1.0.5_1777146043312_0.027782769670703367","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@amiraezaat824/sarahah-app","version":"1.0.6","description":"A base package for Sarahah-like anonymous messaging applications","main":"src/main.js","type":"module","scripts":{"start":"node .","dev":"cross-env NODE_ENV=dev nodemon .","prod":"cross-env NODE_ENV=prod node .","publish-package":"npm publish --access public"},"keywords":["anonymous","messages","sarahah","app","base","package"],"author":{"name":"Amira Ezaat"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/amiraezaat67/sarahah_dev_Repo.git"},"dependencies":{"@amiraezaat824/sarahah-app":"^1.0.2","argon2":"^0.44.0","bcrypt":"^6.0.0","cors":"^2.8.6","cross-env":"^10.1.0","dotenv":"^17.3.1","express":"^5.2.1","google-auth-library":"^10.6.2","jsonwebtoken":"^9.0.3","mongoose":"^8.23.0","nodemailer":"^8.0.5","redis":"^5.12.1"},"_id":"@amiraezaat824/sarahah-app@1.0.6","gitHead":"78e538f99d4fcecb5a9e03fef0955bde740e01b1","bugs":{"url":"https://github.com/amiraezaat67/sarahah_dev_Repo/issues"},"homepage":"https://github.com/amiraezaat67/sarahah_dev_Repo#readme","_nodeVersion":"20.14.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-MM/rHyMe2Rw6WYqE5jLwvLc+0eVRh8jDvbzMR41BKonlxMzP9rhcAjPkA02kK65T1+BDcp1nQZwnA1Z+QY+QNA==","shasum":"8e8aacd33ab60fe0ac72edfa0c37f10e04ced920","tarball":"https://registry.npmjs.org/@amiraezaat824/sarahah-app/-/sarahah-app-1.0.6.tgz","fileCount":44,"unpackedSize":49370,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHqmV96sc+AuIE2a1RcgiPzD9iai3MdHx+QNWlFbOhI/AiEAhxdvrhbQRvG++USgjWQZDQPy2psZOu0DYPkBWRNRBb0="}]},"_npmUser":{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"},"directories":{},"maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sarahah-app_1.0.6_1777146224543_0.38434011884187"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T19:11:14.881Z","modified":"2026-04-25T19:43:44.809Z","1.0.0":"2026-04-25T19:11:15.114Z","1.0.1":"2026-04-25T19:28:14.168Z","1.0.2":"2026-04-25T19:29:16.278Z","1.0.3":"2026-04-25T19:33:42.364Z","1.0.4":"2026-04-25T19:35:07.750Z","1.0.5":"2026-04-25T19:40:43.459Z","1.0.6":"2026-04-25T19:43:44.693Z"},"bugs":{"url":"https://github.com/amiraezaat67/sarahah_dev_Repo/issues"},"author":{"name":"Amira Ezaat"},"license":"MIT","homepage":"https://github.com/amiraezaat67/sarahah_dev_Repo#readme","keywords":["anonymous","messages","sarahah","app","base","package"],"repository":{"type":"git","url":"git+https://github.com/amiraezaat67/sarahah_dev_Repo.git"},"description":"A base package for Sarahah-like anonymous messaging applications","maintainers":[{"name":"amiraezaat824","email":"amiraezaat824@gmail.com"}],"readme":"# Sarahah App Backend\r\n\r\nA Node.js backend application for an anonymous messaging platform similar to Sarahah, built with Express.js, MongoDB, and Redis.\r\n\r\n## 🚀 Features\r\n\r\n- **User Authentication**: Secure user registration and login with JWT tokens\r\n- **Anonymous Messaging**: Send and receive anonymous messages\r\n- **Google OAuth Integration**: Sign in with Google authentication\r\n- **Email Notifications**: Email notifications for new messages\r\n- **Redis Caching**: Fast caching with Redis for improved performance\r\n- **Security**: Password hashing with Argon2 and bcrypt\r\n- **CORS Support**: Configurable CORS for frontend integration\r\n\r\n## 🛠️ Tech Stack\r\n\r\n- **Runtime**: Node.js (ES Modules)\r\n- **Framework**: Express.js 5.2.1\r\n- **Database**: MongoDB with Mongoose ODM\r\n- **Cache**: Redis 5.12.1\r\n- **Authentication**: JWT (JSON Web Tokens)\r\n- **Security**: Argon2, bcrypt\r\n- **Email**: Nodemailer\r\n- **OAuth**: Google Auth Library\r\n- **Environment**: dotenv, cross-env\r\n \r\n## 🚀 Getting Started\r\n \r\n### Prerequisites\r\n \r\n- Node.js (v18 or higher)\r\n- MongoDB (local or cloud)\r\n- Redis (local or cloud)\r\n- npm or yarn\r\n \r\n### Installation\r\n \r\n1. Clone the repository:\r\n\r\n```bash\r\ngit clone https://github.com/amiraezaat67/sarahah_dev_Repo.git\r\ncd Sarahah_App_Prep\r\n```\r\n2. Install dependencies:\r\n\r\n```bash\r\nnpm install\r\n```\r\n\r\n3. Set up environment variables:\r\n\r\n```bash\r\ncp .env.sample .env\r\n```\r\n4. Configure your .env file with the required values (see Environment Variables section).\r\n\r\n5. Start the development server:\r\n```bash\r\nnpm run dev\r\n```\r\n\r\n### For production:\r\n```bash\r\nnpm run prod\r\n```\r\n\r\n### ⚙️ Environment Variables\r\n\r\nCreate a .env file based on .env.sample and configure the following:\r\n\r\n#### Server Configuration\r\n\r\n- PORT: Server port (default: 3000)\r\n- ## Database\r\n- MONGO_URL: MongoDB connection string\r\n- MONGO_URL_CLOUD: Cloud MongoDB connection string (optional)\r\n- ## Encryption\r\n- ENC_KEY: Encryption key for sensitive data\r\n- ENC_IV_LENGTH: IV length for encryption\r\n- ## JWT Configuration\r\n- JWT_ACCESS_SECRET_USER: User access token secret\r\n- JWT_ACCESS_EXP_USER: User access token expiration\r\n- JWT_ACCESS_SECRET_ADMIN: Admin access token secret\r\n- JWT_ACCESS_EXP_ADMIN: Admin access token expiration\r\n- JWT_REFRESH_SECRET_USER: User refresh token secret\r\n- JWT_REFRESH_EXP_USER: User refresh token expiration\r\n- JWT_REFRESH_SECRET_ADMIN: Admin refresh token secret\r\n- JWT_REFRESH_EXP_ADMIN: Admin refresh token expiration\r\n- ## CORS\r\n- CORS_WHITELISTED_ORIGINS: Comma-separated list of allowed origins\r\n- ## Google OAuth\r\n- GCP_CLIENT_ID: Google OAuth client ID\r\n- ## Redis\r\n- REDIS_URL: Redis connection string\r\n- ## Email Configuration\r\n- EMAIL_USER: Email service username\r\n- EMAIL_PASS: Email service password\r\n- EMAIL_SERVICE: Email service provider (e.g., gmail, outlook)\r\n\r\n### 📚 API Endpoints\r\n\r\n- Authentication (/api/auth)\r\n- User registration and login\r\n- Google OAuth integration\r\n- Token refresh\r\n- Messages (/api/message)\r\n- Send anonymous messages\r\n- View received messages\r\n- Message management\r\n- Users (/api/user)\r\n- User profile management\r\n- User settings\r\n- Health Check\r\n- GET /: Basic health check with Redis status\r\n\r\n### 🧪 Available Scripts\r\n\r\n- npm start: Start the application in production mode\r\n- npm run dev: Start in development mode with nodemon\r\n- npm run prod: Start in production mode\r\n- npm run publish-package: Publish to npm registry\r\n\r\n### 🔒 Security Features\r\n\r\n- Password hashing with Argon2 and bcrypt\r\n- JWT-based authentication with access and refresh tokens\r\n- CORS protection\r\n- Environment-based configuration\r\n- Input validation and sanitization\r\n\r\n### 📝 License\r\nThis project is licensed under the ISC License.\r\n\r\n### 🤝 Contributing\r\nFork the repository\r\nCreate a feature branch\r\nCommit your changes\r\nPush to the branch\r\nCreate a Pull Request","readmeFilename":"README.md"}