Skip to content

Introduction ​

Welcome to CodeNotify - a comprehensive contest notification system for competitive programming platforms.

What is CodeNotify? ​

CodeNotify is a Server API service that aggregates competitive programming contests from multiple platforms and provides intelligent notifications to help programmers never miss a contest.

Supported Platforms ​

  • Codeforces - Div1, Div2, Div3, Educational, Global rounds
  • LeetCode - Weekly and Biweekly contests
  • CodeChef - Long Challenge, Cook-Off, Lunchtime, Starters
  • AtCoder - ABC, ARC, AGC, AHC contests

Key Features ​

🎯 Multi-Platform Contest Aggregation ​

  • Automatic synchronization every 6 hours
  • Unified contest data format
  • Real-time contest status tracking
  • Historical contest data

🔔 Smart Notifications ​

  • Multi-channel support (Email, WhatsApp, Push)
  • Customizable notification timing (1-168 hours before)
  • Platform and contest type preferences
  • Automatic notification scheduling

🔐 Secure Authentication ​

  • JWT-based authentication
  • Refresh token mechanism (7-day validity)
  • Role-based access control (User/Admin)
  • Secure password hashing with bcrypt

📊 Advanced Features ​

  • Full-text search across contests
  • Filter by platform, difficulty, type, status
  • Contest analytics and statistics
  • Pagination and sorting
  • Admin dashboard capabilities

Technology Stack ​

Server Framework ​

  • NestJS - Progressive Node.js framework
  • TypeScript - Type-safe development
  • MongoDB - NoSQL database with Mongoose ODM
  • Zod - Schema validation

Key Libraries ​

  • Passport JWT - Authentication strategy
  • Axios - HTTP client for platform APIs
  • @nestjs/schedule - Cron jobs for sync
  • Resend - Email notifications

Architecture Highlights ​

Modular Design ​

  • Auth Module - Authentication and authorization
  • Users Module - User management and preferences
  • Contests Module - Contest CRUD and filtering
  • Notifications Module - Multi-channel notifications
  • Platforms Module - Platform adapter registry

Design Patterns ​

  • Adapter Pattern - Platform integrations
  • Dependency Injection - Loose coupling
  • Repository Pattern - Data access layer
  • Guard Pattern - Route protection

API Overview ​

Base URL ​

http://localhost:3000

Main Endpoints ​

  • /auth/* - Authentication (signup, signin, refresh, signout)
  • /users/* - User management and profiles
  • /contests/* - Contest discovery and management
  • /notifications/* - Notification preferences

Authentication ​

Most endpoints require JWT access token:

http
Authorization: Bearer <access_token>

Use Cases ​

For Developers ​

  • Never miss important contests
  • Track contests across multiple platforms
  • Customize notification preferences
  • Access historical contest data

For Admins ​

  • Manage users and roles
  • Monitor platform sync status
  • Manually trigger contest synchronization
  • View system analytics

Getting Started ​

  1. Installation - Set up the development environment
  2. Configuration - Configure environment variables
  3. Quick Start - Run your first API request
  4. API Overview - Explore available endpoints

Documentation Structure ​

Guides ​

  • Getting Started - Installation and setup
  • Core Concepts - Architecture and patterns
  • Advanced Topics - Deployment and scaling

API Reference ​

  • Authentication endpoints
  • User management endpoints
  • Contest endpoints
  • Notification endpoints

Server Documentation ​

  • Module architecture
  • Database schemas
  • Service implementations
  • Security and guards

Community & Support ​

Resources ​

  • GitHub Repository
  • API Documentation
  • Server Architecture Docs

Contributing ​

Contributions are welcome! Please follow the contribution guidelines.

Next Steps ​

Ready to get started? Head over to the Installation Guide to set up your development environment.

Built with ❤️ for competitive programmers worldwide.