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.