Skip to content

CodeNotifySmart Contest Alert System

Never miss a competitive programming contest again. Get personalized notifications from Codeforces, LeetCode, CodeChef, and AtCoder.

CodeNotifyCodeNotify

Quick Start ​

bash
# 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
bash
# 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:dev

Tech Stack ​

Server

NestJS 11Server framework with TypeScript 5.9
MongoDBNoSQL database with Mongoose ODM
Passport JWTAuthentication with bcrypt
ZodRuntime validation & type safety

Platform Integrations

CodeforcesREST API integration
LeetCodeGraphQL API integration
CodeChefREST API integration
AtCoderCommunity API integration

Notification Services

ResendEmail notifications
WhatsAppCloud API messaging
PushMobile push alerts

API Endpoints Overview ​

CodeNotify provides a comprehensive REST API with 40+ endpoints organized into logical modules:

Authentication Endpoints (6)
  • Sign Up - Create new user account
  • Sign In - Authenticate user
  • Refresh Token - Get new access token
  • Sign Out - Invalidate tokens
  • GET /auth/me - Get current user profile
  • POST /auth/verify-email - Verify email address
Users Endpoints (8 endpoints)
  • GET /users/profile - Get user profile
  • PATCH /users/profile - Update user profile
  • GET /users/preferences - Get notification preferences
  • PATCH /users/preferences - Update notification preferences
  • GET /users/platforms - Get selected platforms
  • PATCH /users/platforms - Update platform preferences
  • DELETE /users/account - Delete user account
  • GET /users/stats - Get user statistics
Contests Endpoints (18 endpoints)
  • GET /contests - List all contests (paginated)
  • GET /contests/:id - Get contest by ID
  • POST /contests - Create contest (admin)
  • PATCH /contests/:id - Update contest (admin)
  • DELETE /contests/:id - Delete contest (admin)
  • GET /contests/platform/:platform - Filter by platform
  • GET /contests/upcoming - Get upcoming contests
  • GET /contests/running - Get running contests
  • GET /contests/finished - Get finished contests
  • GET /contests/search - Search contests
  • GET /contests/difficulty/:level - Filter by difficulty
  • GET /contests/type/:type - Filter by contest type
  • GET /contests/stats - Get global statistics
  • GET /contests/stats/:platform - Get platform statistics
  • POST /contests/sync/:platform - Sync platform contests
  • POST /contests/sync/all - Sync all platforms
  • POST /contests/bulk - Bulk create contests
  • GET /contests/health - Health check
Notifications Endpoints (8 endpoints)
  • GET /notifications - List user notifications
  • GET /notifications/:id - Get notification by ID
  • PATCH /notifications/:id/read - Mark as read
  • PATCH /notifications/read-all - Mark all as read
  • DELETE /notifications/:id - Delete notification
  • POST /notifications/test - Send test notification
  • GET /notifications/stats - Get notification statistics
  • GET /notifications/history - Get notification history

Architecture Overview ​

mermaid
graph 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

What's Next? ​

📚 Getting Started ​

🔌 API Documentation ​

🏗️ Server Deep Dive ​

🚀 Security ​

💻 Client Architecture ​

Built with ❤️ for competitive programmers worldwide.