As a student passionate about competitive programming, I noticed that many of my peers often miss coding contests simply because they are unaware of them. With contests hosted across various platforms like Codeforces, LeetCode, and CodeChef, keeping track of them can be overwhelming. To solve this problem, I created Contest Calendar — a centralized platform to help students and programmers stay updated, set reminders, and never miss an opportunity to compete and learn.
Here are some exciting features planned for future updates to enhance the user experience:
- User Progress Tracking: Integrate user profiles from platforms like Codeforces, LeetCode, and CodeChef to fetch their contest data and maintain a record of their progress over time.
- Leaderboard: Introduce a leaderboard where users can compare their rankings based on contest participation, performance, or accumulated points.
- Custom Contest Feeds: Allow users to personalize their feed by selecting specific platforms or types of contests they are interested in.
- Enhanced Notifications: Expand reminder options to include email and in-app notifications in addition to Telegram bot alerts.
- Social Sharing: Enable users to share upcoming contests and their progress with friends directly from the platform.
- Mobile App: Develop a mobile version of the application for easier access and on-the-go notifications.
These updates aim to make Contest Calendar a comprehensive tool for competitive programmers.
Contest Calendar is a web application that aggregates upcoming coding contests from various competitive programming platforms. It provides users with a centralized place to view, filter, and set reminders for contests. The application includes user authentication, an admin dashboard, and integration with a Telegram bot for notifications.
- Contest Listings: Browse upcoming coding contests from platforms like LeetCode, CodeChef, Codeforces, AtCoder, GeeksforGeeks, and Coding Ninjas.
- Filtering: Filter contests based on the platform to find those most relevant to you.
- User Authentication: Sign up and log in to access personalized features.
- Contest Reminders: Logged-in users can set reminders for contests and receive notifications via the integrated Telegram bot.
- Admin Dashboard: Admin users can manage user accounts, including editing and deleting users.
-
Clone the repository:
git clone https://github.com/yourusername/contest-calendar.git
-
Navigate to the project directory:
cd contest-calendar -
Install dependencies:
npm install
- Start the development server:
npm start
- The application will be available at http://localhost:3000.
- Create a production build:
npm run build
- The optimized build will be in the
builddirectory.
- React: Front-end library for building user interfaces.
- React Router DOM: For routing between pages.
- React Icons: Icon library for React.
- Lucide React: Additional icons.
- React Toastify: For toast notifications.
- Fetch API: For making HTTP requests to the backend API.
Server Link: https://github.com/Pranay0083/scrapperContestCalendar. The application interacts with a backend server hosted at https://contestcalendarscraper.onrender.com. Key API endpoints include:
GET /api/contests/getall: Fetch all contests.POST /api/contests/scrape: Trigger scraping of contest data.
GET /api/users/getAll: Retrieve all users (admin only).PUT /api/users/edit/:id: Edit user information.DELETE /api/users/delete/:id: Delete a user.
POST /api/auth/signup: Register a new user.POST /api/auth/signin: Log in an existing user.PUT /api/auth/changepassword: Change user password.
POST /api/notification/set/:id: Set a contest reminder.
To receive contest reminders, users need to register with the Telegram bot ContestCalenderBot. After registration, users can set reminders within the app, and notifications will be sent via the bot.
src/: Contains the source code.components/: Reusable components like Header, Footer, and Notification.pages/: Different pages like Home, Admin, Sign Up, and Sign In.api/: Functions to interact with the backend API.constants.js: Contains constants used across the app.index.css: Global CSS styles.
App.js: Main application component.index.js: Entry point of the application.
Contributions are welcome! Please open an issue or submit a pull request.
For questions or support, please contact [email protected].