A comprehensive iOS application built with SwiftUI for competitive programming enthusiasts. It serves as a unified hub for the Programming Club community to track daily challenges, discuss problems, read editorials, and stay updated on coding events.
- Secure Access: Integrated with Supabase for robust authentication.
- Session Management: Magic link / Deep link support for session recovery and password resets.
- User Profiles: Manage personal information and community presence.
- LeetCode
- Codeforces
- CodeChef
- AtCoder
- Daily Challenges: An interactive, swipeable carousel featuring problems from LeetCode, Codeforces, AtCoder, and CodeChef.
- Challenge Pinning: Save and pin specific problems for quick access later using local storage.
- Network Monitoring: Real-time network status checks to handle offline scenarios gracefully.
- Community Chat: Real-time group messaging backed by Supabase with support for text and media (full-screen image viewing).
- Group Management: Create new groups, rename existing ones, and add members seamlessly.
- AskPC (AI Assistant): A futuristic, intelligent coding assistant to help users with their programming queries (requires newer iOS environments).
- Editorials: Detailed write-ups, explanations, and code snippets for various competitive programming contests.
- Events: Track upcoming community meetups and programming competitions.
- Widgets: Home and Lock Screen widgets to keep track of your GitHub, LeetCode, Codeforces, and AtCoder metrics at a glance.
- Theme: Dark and vibrant aesthetics (
Color.backgroundwith deep purple/red accents) for a modern, developer-focused look. - Animations: Smooth transitions, spring-based swipe gestures for the challenge carousel, and engaging splash screen animations.
- UI Components: Custom bottom navigation bar, dynamic loading skeletons, and interactive cards for a premium user experience.
![]() |
PC-ios-app/
├── PC/
│ ├── App/
│ │ ├── PCApp.swift # Application entry point and deep link handling
│ │ └── ContentView.swift # Splash screen and initial routing
│ ├── Core/
│ │ ├── SupabaseManager.swift # Supabase client configuration
│ │ ├── AuthValidator.swift # Authentication state validation
│ │ ├── NetworkMonitor.swift # Real-time connectivity tracking
│ │ └── NotificationManager.swift # Local push notifications
│ ├── Features/
│ │ ├── Home/ # Dashboard, daily challenges, and pinned items
│ │ ├── Chat/ # Real-time messaging and group management
│ │ ├── Editorials/ # Contest solutions and problem explanations
│ │ ├── Events/ # Upcoming contests and community events
│ │ ├── Profile/ # User account and preferences
│ │ └── AskPC/ # AI coding assistant interface
│ ├── Shared/
│ │ ├── Models.swift # App-wide data models (Codeforces, LeetCode, etc.)
│ │ ├── UI/ # Reusable UI components
│ │ └── Extensions/ # Swift extensions and utilities
│ └── PCWidgets/ # iOS Home and Lock Screen widgets
Platform: Supabase
- Handles secure authentication, real-time database subscriptions (for Chat), and user profile management.
- Configuration requires
Secrets.xcconfigto store sensitive API keys and database URLs.
- Clone the repository to your local machine.
- Open
PC.xcodeprojin Xcode. - Configure your Supabase credentials:
- Ensure
Secrets.xcconfigis populated with your specific Supabase URL and Anon Key.
- Ensure
- In the project navigator, select the
PCproject. - Go to the Signing & Capabilities tab and select your development team.
- Choose an iOS simulator or a connected physical device.
- Hit
Cmd + Ror click the Play button to build and run the application.
- UI Framework: Exclusively uses SwiftUI for declarative UI development.
- Concurrency: Heavily relies on modern Swift Concurrency (
async/awaitandTask) for all network requests and background operations. - State Management: Uses
@StateObject,@Environment, and specialized singleton managers (e.g.,ProblemService,PinnedChallengeManager) to maintain app state. - Caching: Implements robust local caching strategies (
ChatCache,ProblemCache) for faster load times and offline support.
- OS: iOS 16.0+
- IDE: Xcode 15.0+
- Language: Swift 5.9+
- Uses local push notifications to alert users (
NotificationDelegate). - Widgets refresh automatically when the app enters the foreground.
- Support for deep linking handles authentication session recovery.
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
