LinkUp is a comprehensive platform that connects talented students with innovative companies through coding challenges. Students can showcase their programming skills and earn recognition, while companies can discover and recruit top talent through structured technical assessments.
- π Browse Challenges - Explore coding challenges from top companies across various difficulty levels
- π» Submit Solutions - Submit code solutions via GitHub repositories with automated tracking
- π Earn Points & Recognition - Get scored by company reviewers and earn points for achievements
- π Performance Analytics - Monitor your progress with detailed statistics and performance metrics
- π₯ Competitive Leaderboard - Compete with peers globally and climb the rankings
- π€ Professional Profile - Showcase your skills, achievements, and coding portfolio
- π± Social Sharing - Share challenges and achievements on social media platforms
- π― Challenge Filtering - Filter challenges by difficulty, company, or technology stack
- β Create Custom Challenges - Design coding challenges tailored to your hiring needs
- π Review & Score Submissions - Evaluate student solutions with detailed feedback system
- π Advanced Analytics Dashboard - Track challenge performance, engagement metrics, and candidate quality
- π Talent Discovery - Find and filter skilled developers based on performance and skills
- π Challenge Management - Edit, update, or deactivate challenges with version control
- π Submission Analytics - View submission statistics and candidate funnel metrics
- π― Targeted Recruitment - Identify top performers for direct recruitment opportunities
- π Public Challenge Sharing - Anyone can view challenge details via shareable links
- π Public Leaderboards - View top performers without registration
- π Platform Statistics - Access platform-wide metrics and activity data
- π‘ No-Registration Preview - Explore challenges before creating an account
| Technology | Version | Purpose |
|---|---|---|
| React | 19.1.1 | Modern UI library for building interactive interfaces |
| React Router DOM | 7.8.2 | Client-side routing and navigation |
| Tailwind CSS | 3.4.18 | Utility-first CSS framework for rapid styling |
| Framer Motion | 12.23.12 | Advanced animations and micro-interactions |
| Axios | 1.11.0 | HTTP client for API communication |
| Lucide React | 0.542.0 | Beautiful and consistent icon library |
| Heroicons | 2.2.0 | Additional icon set for UI elements |
| Technology | Version | Purpose |
|---|---|---|
| Node.js | Latest LTS | JavaScript runtime environment |
| Express.js | 4.21.2 | Fast and minimal web application framework |
| MongoDB | Latest | NoSQL database for flexible data storage |
| Mongoose | 8.18.0 | MongoDB ODM for data modeling |
| JWT | 9.0.2 | Secure authentication and authorization |
| bcryptjs | 3.0.2 | Password hashing and security |
| Express Rate Limit | 8.0.1 | API rate limiting and DDoS protection |
| Express Validator | 7.2.1 | Input validation and sanitization |
| Helmet | 8.1.0 | Security middleware for Express |
| Nodemailer | 7.0.5 | Email service integration |
| UUID | 11.1.0 | Unique identifier generation |
| Technology | Purpose |
|---|---|
| Jest | Unit and integration testing |
| React Testing Library | React component testing |
| ESLint | Code linting and quality enforcement |
| PostCSS | CSS processing and optimization |
Before setting up LinkUp, ensure you have:
- Node.js (v18.0.0 or higher) - Download here
- npm (v8.0.0 or higher) or yarn (v1.22.0 or higher)
- MongoDB (v5.0 or higher) - Local installation or MongoDB Atlas account
- Git (v2.0 or higher) - Download here
- GitHub Account - For repository hosting and collaboration
# Clone the repository
git clone https://github.com/muhammadnavas/UpLink.git
cd LinkUp
# Verify Node.js installation
node --version
npm --version# Navigate to backend directory
cd backend
# Install all dependencies
npm install
# Create environment file
touch .envConfigure your .env file:
# ==============================================
# SERVER CONFIGURATION
# ==============================================
PORT=5000
NODE_ENV=development
# ==============================================
# DATABASE CONFIGURATION
# ==============================================
# Local MongoDB
MONGODB_URI=mongodb://localhost:27017/linkup
# Or MongoDB Atlas (recommended for production)
# MONGODB_URI=mongodb+srv://<username>:<password>@cluster0.xxxxx.mongodb.net/linkup?retryWrites=true&w=majority
# ==============================================
# AUTHENTICATION & SECURITY
# ==============================================
JWT_SECRET=your_super_secure_jwt_secret_key_here_make_it_long_and_random
JWT_EXPIRE=30d
# ==============================================
# CORS CONFIGURATION
# ==============================================
FRONTEND_URL=http://localhost:3000
# ==============================================
# EMAIL CONFIGURATION (Optional)
# ==============================================
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_email_app_password
# ==============================================
# RATE LIMITING
# ==============================================
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100Start the backend server:
# Development mode with hot reload
npm run dev
# Or production mode
npm startBackend will be available at: http://localhost:5000
# Navigate to frontend directory (from project root)
cd ../frontend
# Install all dependencies
npm install
# Create environment file
touch .envConfigure your .env file:
# ==============================================
# API CONFIGURATION
# ==============================================
REACT_APP_API_URL=http://localhost:5000/api
# ==============================================
# APPLICATION CONFIGURATION
# ==============================================
REACT_APP_APP_NAME=LinkUp
REACT_APP_VERSION=1.0.0
# ==============================================
# FEATURE FLAGS (Optional)
# ==============================================
REACT_APP_ENABLE_ANALYTICS=false
REACT_APP_ENABLE_CHAT=falseStart the frontend development server:
# Start development server
npm start
# Build for production
npm run build
# Run tests
npm testFrontend will be available at: http://localhost:3000
LinkUp/
βββ π backend/ # Node.js/Express Backend
β βββ π config/
β β βββ π db.js # MongoDB connection configuration
β βββ π controllers/
β β βββ π authController.js # Authentication business logic
β β βββ π leaderboardController.js # Leaderboard calculations
β β βββ π submissions.js # Submission handling logic
β βββ π middleware/
β β βββ π authMiddleware.js # JWT verification & authorization
β βββ π models/
β β βββ π Activity.js # User activity tracking schema
β β βββ π Challenge.js # Challenge data model
β β βββ π Submission.js # Solution submission schema
β β βββ π User.js # User profile and authentication
β βββ π routes/
β β βββ π admin.js # Admin panel endpoints
β β βββ π auth.js # Authentication routes
β β βββ π challenges.js # Challenge CRUD operations
β β βββ π dashboard.js # Dashboard data endpoints
β β βββ π leaderboard.js # Ranking and statistics
β β βββ π public.js # Public API endpoints
β β βββ π submissions.js # Submission management
β βββ π scripts/
β β βββ π addLeaderboardFields.js
β β βββ π addUsernameField.js
β β βββ π cleanupCompanyPoints.js
β β βββ π initializeLeaderboardFields.js
β βββ π utils/
β β βββ π database.js # Database utilities and helpers
β β βββ π emailService.js # Email notification service
β β βββ π statsUpdater.js # Statistics calculation utilities
β β βββ π validators.js # Input validation schemas
β βββ π .env # Environment variables
β βββ π .gitignore # Git ignore rules
β βββ π package.json # Dependencies and scripts
β βββ π server.js # Application entry point
β
βββ π frontend/ # React Frontend Application
β βββ π public/
β β βββ π index.html # HTML template
β β βββ π manifest.json # PWA configuration
β β βββ π robots.txt # SEO crawler instructions
β βββ π src/
β β βββ π components/
β β β βββ π AppRoutes.js # Application routing logic
β β β βββ π CompanyRoom.js # Company dashboard components
β β β βββ π Header.js # Navigation header component
β β β βββ π LoadingSpinner.js # Loading UI component
β β β βββ π LoginForm.js # User authentication form
β β β βββ π ProtectedRoute.js # Route protection wrapper
β β β βββ π RegisterForm.js # User registration form
β β β βββ π RoleSwitcher.js # Role selection component
β β β βββ π StudentRoom.js # Student dashboard components
β β βββ π contexts/
β β β βββ π AuthContext.js # Global authentication state
β β βββ π pages/
β β β βββ π ChallengePage.js # Individual challenge view
β β β βββ π ChallengesManagePage.js # Company challenge management
β β β βββ π ChallengesPage.js # Challenge browsing interface
β β β βββ π CompanyDashboard.js # Company analytics dashboard
β β β βββ π CompanySubmissionsPage.js # Submission review interface
β β β βββ π CreateChallengePage.js # Challenge creation form
β β β βββ π Dashboard.js # Main dashboard router
β β β βββ π EditChallengePage.js # Challenge editing interface
β β β βββ π Home.js # Landing page
β β β βββ π LeaderboardPage.js # Global rankings display
β β β βββ π ProfilePage.js # User profile management
β β β βββ π PublicChallengePage.js # Public challenge view
β β β βββ π StudentDashboard.js # Student analytics dashboard
β β β βββ π SubmissionsPage.js # User submissions history
β β β βββ π SubmissionsReviewPage.js # Submission evaluation
β β β βββ π UserProfilePage.js # Public user profiles
β β βββ π api.js # API service layer
β β βββ π App.css # Global styles
β β βββ π App.js # Root application component
β β βββ π App.test.js # Application tests
β β βββ π index.css # Global CSS imports
β β βββ π index.js # React application entry point
β β βββ π input.css # Tailwind CSS input file
β β βββ π reportWebVitals.js # Performance monitoring
β β βββ π setupTests.js # Test configuration
β βββ π .env # Environment variables
β βββ π .gitignore # Git ignore rules
β βββ π package.json # Dependencies and scripts
β βββ π postcss.config.js # PostCSS configuration
β βββ π tailwind.config.js # Tailwind CSS configuration
β
βββ π .gitignore # Root Git ignore file
βββ π README.md # Project documentation
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/auth/register |
Register new user account | β |
POST |
/api/auth/login |
Authenticate user credentials | β |
GET |
/api/auth/me |
Get current user profile | β |
PUT |
/api/auth/profile |
Update user profile information | β |
POST |
/api/auth/logout |
Invalidate user session | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/challenges |
Retrieve all active challenges | β |
GET |
/api/challenges/:id |
Get detailed challenge information | β |
POST |
/api/challenges |
Create new challenge (Company only) | β |
PUT |
/api/challenges/:id |
Update challenge details | β |
DELETE |
/api/challenges/:id |
Deactivate challenge | β |
GET |
/api/challenges/:id/submissions |
Get challenge submissions | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/submissions |
Submit solution to challenge | β |
GET |
/api/submissions |
Get user's submission history | β |
GET |
/api/submissions/:id |
Get specific submission details | β |
PUT |
/api/submissions/:id/review |
Review and score submission | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/leaderboard |
Get global user rankings | β |
GET |
/api/leaderboard/rank/:userId |
Get specific user rank | β |
GET |
/api/dashboard/student-stats |
Student performance metrics | β |
GET |
/api/dashboard/company-stats |
Company analytics dashboard | β |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/public/leaderboard |
Public leaderboard view | β |
GET |
/api/public/stats |
Platform statistics | β |
GET |
/api/public/challenge/:id |
Public challenge details | β |
cd backend
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run specific test file
npm test -- --grep "auth"cd frontend
# Run all tests
npm test
# Run tests in watch mode
npm test -- --watch
# Run tests with coverage report
npm test -- --coverage --watchAll=false# Install Cypress (optional)
npm install -g cypress
# Run E2E tests
npx cypress open- ESLint configuration for consistent code style
- Prettier for automatic code formatting
- Conventional Commits for git commit messages
- Component-based architecture for React development
- RESTful API design principles for backend
# Feature development
git checkout -b feature/new-feature-name
git commit -m "feat: add new feature description"
git push origin feature/new-feature-name
# Bug fixes
git checkout -b fix/bug-description
git commit -m "fix: resolve issue with specific component"
git push origin fix/bug-description- Prepare for Deployment:
# Ensure all dependencies are listed in package.json
npm install --production-
Environment Setup:
- Create account on Render.com
- Connect your GitHub repository
- Set environment variables in Render dashboard
-
Deploy:
- Select "Web Service"
- Choose your repository
- Set build command:
npm install - Set start command:
npm start
- Prepare for Deployment:
# Build the application
npm run build
# Test the build locally
npx serve -s build- Deploy to Vercel:
- Create account on Vercel.com
- Import your GitHub repository
- Set environment variables
- Deploy automatically on push to main branch
-
Create MongoDB Atlas Cluster:
- Sign up at MongoDB Atlas
- Create a new cluster
- Set up database user and network access
- Get connection string
-
Update Environment Variables:
MONGODB_URI=mongodb+srv://username:password@cluster0.xxxxx.mongodb.net/linkup- Code Splitting with React.lazy()
- Image Optimization with next-gen formats
- Bundle Analysis with webpack-bundle-analyzer
- Caching Strategies for API responses
- Lazy Loading for non-critical components
- Database Indexing for frequently queried fields
- API Response Caching with Redis
- Rate Limiting to prevent abuse
- Compression for response payloads
- Connection Pooling for database connections
- JWT-based authentication with secure token storage
- Role-based access control (Student/Company/Admin)
- Password hashing with bcrypt and salt rounds
- Session management with automatic token refresh
- Rate limiting to prevent DDoS attacks
- Input validation and sanitization
- CORS configuration for cross-origin requests
- Helmet.js for security headers
- MongoDB injection prevention
- Environment variable management
- Sensitive data encryption for database storage
- Secure HTTP headers implementation
- API endpoint protection with authentication middleware
Node.js Version Compatibility
# Check Node.js version
node --version
# Use Node Version Manager (nvm)
nvm install 18
nvm use 18Port Already in Use
# Kill process on port 3000
npx kill-port 3000
# Kill process on port 5000
npx kill-port 5000MongoDB Connection Issues
# Check MongoDB service status (Windows)
net start MongoDB
# Check MongoDB service status (macOS/Linux)
brew services start mongodb-communityCORS Errors
- Verify
REACT_APP_API_URLin frontend.env - Check
FRONTEND_URLin backend.env - Restart both development servers
Authentication Problems
- Clear browser localStorage and cookies
- Check JWT_SECRET configuration
- Verify token expiration settings
Database Connection Timeout
- Check MongoDB Atlas network access settings
- Verify connection string format
- Ensure database user permissions
Build Failures
# Clear npm cache
npm cache clean --force
# Delete node_modules and reinstall
rm -rf node_modules package-lock.json
npm installPerformance Issues
- Enable compression in Express
- Optimize database queries
- Implement caching strategies
- Use CDN for static assets
We welcome contributions to LinkUp! Here's how you can help:
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch from
main - Make your changes following our coding standards
- Test your changes thoroughly
- Submit a pull request with a clear description
- Follow the existing code style and conventions
- Write clear, concise commit messages
- Include tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- π Bug Fixes - Help us identify and fix issues
- β¨ New Features - Propose and implement new functionality
- π Documentation - Improve guides and API documentation
- π¨ UI/UX Improvements - Enhance user interface and experience
- β‘ Performance - Optimize application performance
- π§ͺ Testing - Increase test coverage
This project is licensed under the MIT License - see the LICENSE file for details.
Special thanks to:
- React Team for the amazing framework
- MongoDB for the flexible database solution
- Tailwind CSS for the utility-first CSS framework
- Express.js community for the robust backend framework
- Open Source Community for inspiration and contributions
Muhammad Navas
- π GitHub: @muhammadnavas
- π§ Email: Contact via GitHub
- πΌ LinkedIn: Connect with me
- π Documentation: Check this README and code comments
- π Bug Reports: Create an issue
- π‘ Feature Requests: Request a feature
- π¬ Discussions: Join our discussions
- β Star this repository if you find it helpful
- π΄ Fork the project to contribute
- π₯ Follow for updates and new projects
Made with β€οΈ by Muhammad Navas
Bridging the gap between talent and opportunity through technology