Secure Authentication
JWT-based authentication with refresh token rotation. Access tokens (15min) + refresh tokens (7 days). Bcrypt password hashing with salt rounds.
Never miss a competitive programming contest again. Get personalized notifications from Codeforces, LeetCode, CodeChef, and AtCoder.


# Clone the repository
git clone https://github.com/Celestial-0/CodeNotify.git
cd CodeNotify
# Install server dependencies
cd server
npm install
# Configure environment
cp .env.example .env.local
# Edit .env.local with your configuration
# Start development server
npm run start:dev# Clone the repository
git clone https://github.com/Celestial-0/CodeNotify.git
cd CodeNotify
# Install server dependencies
cd server
yarn install
# Configure environment
cp .env.example .env.local
# Edit .env.local with your configuration
# Start development server
yarn start:devCodeNotify provides a comprehensive REST API with 40+ endpoints organized into logical modules:
GET /auth/me - Get current user profilePOST /auth/verify-email - Verify email addressGET /users/profile - Get user profilePATCH /users/profile - Update user profileGET /users/preferences - Get notification preferencesPATCH /users/preferences - Update notification preferencesGET /users/platforms - Get selected platformsPATCH /users/platforms - Update platform preferencesDELETE /users/account - Delete user accountGET /users/stats - Get user statisticsGET /contests - List all contests (paginated)GET /contests/:id - Get contest by IDPOST /contests - Create contest (admin)PATCH /contests/:id - Update contest (admin)DELETE /contests/:id - Delete contest (admin)GET /contests/platform/:platform - Filter by platformGET /contests/upcoming - Get upcoming contestsGET /contests/running - Get running contestsGET /contests/finished - Get finished contestsGET /contests/search - Search contestsGET /contests/difficulty/:level - Filter by difficultyGET /contests/type/:type - Filter by contest typeGET /contests/stats - Get global statisticsGET /contests/stats/:platform - Get platform statisticsPOST /contests/sync/:platform - Sync platform contestsPOST /contests/sync/all - Sync all platformsPOST /contests/bulk - Bulk create contestsGET /contests/health - Health checkGET /notifications - List user notificationsGET /notifications/:id - Get notification by IDPATCH /notifications/:id/read - Mark as readPATCH /notifications/read-all - Mark all as readDELETE /notifications/:id - Delete notificationPOST /notifications/test - Send test notificationGET /notifications/stats - Get notification statisticsGET /notifications/history - Get notification historygraph TB
A[Client] --> B[API Gateway]
B --> C[Auth Module]
B --> D[Users Module]
B --> E[Contests Module]
E --> F[Platform Adapters]
F --> G[Codeforces]
F --> H[LeetCode]
F --> I[CodeChef]
F --> J[AtCoder]
E --> K[Scheduler]
K --> L[Notifications Module]
L --> M[Email Service]
L --> N[WhatsApp Service]
L --> O[Push Service]
C --> P[(MongoDB)]
D --> P
E --> P