The platform built for CS developers to submit graduation projects, find open-source contributors, and get discovered by top tech recruiters.
- Submit graduation projects, Hackathon entries, and personal builds
- Rich Markdown editor for detailed project descriptions
- 3-level cascading classification by Domain β Specialization β Tech Stack
- Full Light / Dark Mode support
- View tracking with cookie-based spam prevention
- Share your profile with a single click via ShareProfileButton
- Advanced search with Cascading Filters (University β Domain β Tech)
- Sort by latest, most upvoted, or most viewed
- Dedicated
/projectslisting page with full filter support
- Apply to join any open-source project directly from the platform
- Full Join Request system with automatic email notifications via Resend
- Accept / Reject requests with optional rejection reason sent to the applicant
- Contributors list displayed on project detail pages
- Global ranking with a stunning 3D Podium UI
- Filter by global or by university
- Ranked by total Upvotes
- Browse developer profiles with real-time GitHub stats
- Dynamic filters to find the right collaborator
- Recruitment cards with a Radar UI design
- Overview stats for your projects (views, upvotes, requests)
- Manage your projects with optimistic deletion
- Handle incoming join requests with accept / reject actions
- Full profile settings with instant session sync
- Full support for Arabic and English
- Automatic RTL layout switching for Arabic
- Complete translation coverage across all pages and components
- Sign in with GitHub OAuth or Google OAuth
- Secure Onboarding flow with middleware protection
- Rate Limiting on all API routes
- Comprehensive HTTP Security Headers
- Route protection via Middleware
- Full Sentry integration for Error Tracking and Session Replay
- Built-in Feedback Widget for user bug reports
- PWA Support β installable on mobile devices
- Auto-generated Sitemap for Google Search Console
- Suspense Streaming for instant page loads
- Prefetching on all static and dynamic navigation links
- Full MDX-powered Docs with search
- Bilingual docs (Arabic & English) with automatic locale detection
- Interactive sidebar with GitHub edit links
- Last updated timestamps and frontmatter support
- Dedicated page showcasing open-source projects
- Real-time GitHub stats per project
- Contributors section per project
- Cosmic timeline UI for platform update history
- Full multilingual support
| Technology | Version | Usage |
|---|---|---|
| Next.js | 16.x | App Router, Server Components, Streaming |
| React | 19.x | UI Framework |
| TypeScript | 5.x | Type Safety |
| Tailwind CSS | 3.x | Styling |
| Sanity CMS | 3.x | Database & Content Management |
| NextAuth.js | 5.x Beta | Authentication |
| Framer Motion | 12.x | Animations |
| next-intl | 4.x | Internationalization (i18n) |
| Sentry | 10.x | Error Tracking & Session Replay |
| Resend | 6.x | Transactional Emails |
| Zod | β | Schema Validation |
| shadcn/ui | β | UI Components |
| Vercel | β | Deployment |
CS-Arena/
βββ app/
β βββ (root)/
β β βββ about/
β β βββ blog/
β β βββ coming-soon/
β β βββ cookies/
β β βββ dashboard/
β β βββ developers/
β β βββ docs/
β β β βββ [...slug]/
β β βββ leaderboard/
β β βββ onboarding/
β β βββ open-source/
β β βββ privacy/
β β βββ project/
β β β βββ [id]/
β β β β βββ edit/
β β β βββ create/
β β βββ projects/
β β βββ terms/
β β βββ user/[id]/
β β βββ layout.tsx
β β βββ page.tsx
β βββ api/
β β βββ docs-search/
β βββ studio/[[...tool]]/
β βββ global-error.tsx
β βββ layout.tsx
β βββ not-found.tsx
β βββ sitemap.ts
βββ components/
β βββ dashboard/
β β βββ ManageProjects.tsx
β β βββ ProfileSettings.tsx
β β βββ ProjectRequests.tsx
β βββ docs/
β β βββ DocsFeedback.tsx
β β βββ DocsSidebar.tsx
β βββ layout/
β β βββ Footer.tsx
β β βββ Navbar.tsx
β βββ project/
β β βββ ContributorsSection.tsx
β β βββ EditProjectForm.tsx
β β βββ ProjectCard.tsx
β β βββ ProjectFilters.tsx
β β βββ ProjectForm.tsx
β β βββ TeamFilters.tsx
β β βββ UpvoteButton.tsx
β β βββ UserProjects.tsx
β βββ shadcn/
β β βββ avatar.tsx
β β βββ button.tsx
β β βββ input.tsx
β β βββ skeleton.tsx
β β βββ textarea.tsx
β β βββ toast.tsx
β β βββ toaster.tsx
β βββ shared/
β βββ CustomFilterSelect.tsx
β βββ FeedbackButton.tsx
β βββ GithubStats.tsx
β βββ HeroSection.tsx
β βββ JoinTeamButton.tsx
β βββ LanguageToggle.tsx
β βββ MobileMenu.tsx
β βββ OnboardingForm.tsx
β βββ Ping.tsx
β βββ PolicySections.tsx
β βββ ProjectsGrid.tsx
β βββ Providers.tsx
β βββ SearchForm.tsx
β βββ SearchFormReset.tsx
β βββ ShareProfileButton.tsx
β βββ TechFilters.tsx
β βββ ThemeToggle.tsx
β βββ View.tsx
β βββ ViewTracker.tsx
βββ config/
β βββ docs.ts
βββ constants/
β βββ ecosystem.ts
βββ content/
β βββ docs/
β βββ contributing/
β β βββ guidelines.ar.mdx
β β βββ guidelines.en.mdx
β β βββ setup.ar.mdx
β β βββ setup.en.mdx
β βββ getting-started/
β β βββ introduction.ar.mdx
β β βββ introduction.en.mdx
β β βββ quick-start.ar.mdx
β β βββ quick-start.en.mdx
β βββ user-guide/
β βββ find-developers.ar.mdx
β βββ find-developers.en.mdx
β βββ projects.ar.mdx
β βββ projects.en.mdx
βββ hooks/
β βββ use-toast.ts
βββ i18n/
β βββ request.ts
βββ lib/
β βββ actions.ts
β βββ docs.ts
β βββ utils.ts
βββ messages/
β βββ ar.json
β βββ en.json
βββ public/
β βββ cs-arena-logo.png
β βββ cs-arena-logo-192.png
β βββ cs-arena-logo-512.png
β βββ manifest.json
βββ sanity/
β βββ lib/
β β βββ client.ts
β β βββ live.ts
β β βββ queries.ts
β β βββ write-client.ts
β βββ schemaTypes/
β βββ author.ts
β βββ changelog.ts
β βββ domain.ts
β βββ index.ts
β βββ joinRequest.ts
β βββ project.ts
β βββ university.ts
βββ auth.ts
βββ middleware.ts
βββ instrumentation.ts
βββ sentry.client.config.ts
βββ sentry.edge.config.ts
βββ sentry.server.config.ts
βββ next.config.ts
βββ tailwind.config.ts
βββ tsconfig.json
| Route | Description |
|---|---|
/ |
Home β search and discover projects |
/project/create |
Submit a new project |
/project/[id] |
Project details |
/project/[id]/edit |
Edit your project |
/projects |
All projects listing |
/leaderboard |
Top projects with 3D Podium UI |
/open-source |
Hall of Fame for open-source projects |
/developers |
Browse developer profiles |
/user/[id] |
Developer public profile |
/dashboard |
User dashboard & settings |
/onboarding |
New user setup flow |
/docs |
Full documentation system (MDX) |
/docs/[...slug] |
Individual documentation pages |
/changelog |
Platform update history |
/about |
About CS Arena |
/privacy |
Privacy policy |
/terms |
Terms of service |
/cookies |
Cookie policy |
/blog |
Blog (coming soon) |
/studio |
Sanity CMS dashboard |
- Node.js 18+
- npm 10+
- Sanity account
- GitHub OAuth App
- Google OAuth App
# 1. Clone the repository
git clone https://github.com/Ali-Haggag7/CS-Arena.git
cd CS-Arena
# 2. Install dependencies
npm install
# 3. Set up environment variables
cp .env.example .env.local# Auth
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_secret
# GitHub OAuth
AUTH_GITHUB_ID=your_github_client_id
AUTH_GITHUB_SECRET=your_github_client_secret
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Sanity CMS
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id
NEXT_PUBLIC_SANITY_DATASET=production
SANITY_WRITE_TOKEN=your_write_token
# Sentry
SENTRY_AUTH_TOKEN=your_sentry_token
# Resend (Email)
RESEND_API_KEY=your_resend_key
# App
NEXT_PUBLIC_BASE_URL=http://localhost:3000# 4. Start the development server
npm run devOpen http://localhost:3000 in your browser.
Access the CMS dashboard locally at:
http://localhost:3000/studio
Contributions are welcome! Please read the Contributing Guidelines before getting started.
# Create a new branch
git checkout -b feat/your-feature-name
# After making your changes
git commit -m "feat: add your feature"
git push origin feat/your-feature-nameLook for issues tagged good first issue β that's the best place to start!
MIT License β feel free to use and modify.
Built with β€οΈ by Ali Haggag
β If you find this project useful, please consider giving it a star!