Demo β’ Documentation β’ Report Bug β’ Request Feature
- π― About The Project
- π Getting Started
- π» Usage
- ποΈ Architecture
- πΊοΈ Roadmap
- π€ Contributing
- π License
- π₯ Team
- π Acknowledgments
- π Contact
SkillBridge is a revolutionary platform that connects ambitious learners with real-world projects from industry partners. We believe that the best way to learn is by doing, and we're here to make that happen.
Traditional education often leaves a gap between theoretical knowledge and practical skills. Students graduate with degrees but lack the real-world experience that employers seek. Meanwhile, businesses need fresh perspectives and help with projects but don't always have the resources for full-time hires.
SkillBridge creates a win-win ecosystem:
- For Learners: Gain hands-on experience working on real projects that matter
- For Businesses: Access talented, motivated individuals eager to prove themselves
- For Education: Bridge the gap between academia and industry
Follow these steps to get SkillBridge up and running on your local machine for development and testing purposes.
Before you begin, ensure you have the following installed:
# Check Node.js version (should be >= 18.0.0)
node --version
# Check npm version (should be >= 9.0.0)
npm --version
# Check Git installation
git --versionπ Additional Requirements
- PostgreSQL (v14+) - For production database
- Redis (v6+) - For caching and session management
- Docker (optional) - For containerized development
- Git - For version control
# 1. Clone the repository
git clone https://github.com/yourusername/skillbridge.git
cd skillbridge
# 2. Navigate to the MVP directory
cd skillbridge-mvp
# 3. Install server dependencies
npm install
# 4. Install client dependencies
cd client
npm install
cd ..
# 5. Set up environment variables
cp .env.example .env
# Edit .env with your configuration
# 6. Seed mock data (optional)
npm run seed:mock
# 7. Start development servers
npm run dev |
# 1. Clone the repository
git clone https://github.com/yourusername/skillbridge.git
cd skillbridge
# 2. Build Docker containers
docker-compose build
# 3. Start the application
docker-compose up
# 4. Access the application
# Frontend: http://localhost:3000
# Backend: http://localhost:3001
# Database: localhost:5432 |
Create a .env file in the root directory with the following variables:
# Server Configuration
NODE_ENV=development
PORT=3001
CLIENT_URL=http://localhost:3000
# Database Configuration
DATABASE_TYPE=postgresql
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=skillbridge_dev
DATABASE_USER=your_db_user
DATABASE_PASSWORD=your_db_password
# Authentication
JWT_SECRET=your_super_secret_jwt_key_change_this_in_production
JWT_EXPIRES_IN=7d
REFRESH_TOKEN_SECRET=your_refresh_token_secret
REFRESH_TOKEN_EXPIRES_IN=30d
# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
# Email Configuration (Optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASSWORD=your_app_password
EMAIL_FROM=noreply@skillbridge.com
# AWS S3 Configuration (Optional)
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=us-east-1
AWS_S3_BUCKET=skillbridge-uploads
# External APIs (Optional)
OPENAI_API_KEY=your_openai_api_key
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
# Security
CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:3001
SESSION_SECRET=your_session_secret_key# Start both frontend and backend in development mode
npm run dev
# Start only the backend server
npm run server:dev
# Start only the frontend client
npm run client:dev# Build the frontend
npm run build
# Start the production server
npm start
# Run all tests (server + client)
npm test
# Run server tests only
npm run test:server
# Run client tests only
npm run test:client
# Watch mode
npm run test:watch
# With coverage
npm run test:coverage
# Client test UI (Vitest UI)
cd client && npm run test:ui |
# Run Playwright tests
npm run test:e2e
# With UI
npx playwright test --ui
# Debug mode
npx playwright test --debug |
# Run ESLint
npm run lint
# Format with Prettier
npm run format
# Type checking
npm run typecheck |
graph TB
subgraph "Client Layer"
A[React SPA] --> B[Redux State]
B --> C[API Client]
end
subgraph "API Gateway"
D[Nginx/Load Balancer]
D --> E[Rate Limiter]
E --> F[Auth Middleware]
end
subgraph "Application Layer"
G[Express Server]
G --> H[Business Logic]
H --> I[Data Access Layer]
end
subgraph "Data Layer"
J[(PostgreSQL)]
K[(Redis Cache)]
L[S3 Storage]
end
subgraph "External Services"
M[Email Service]
N[Payment Gateway]
O[AI/ML Services]
end
C --> D
F --> G
I --> J
I --> K
H --> L
H --> M
H --> N
H --> O
style A fill:#61dafb
style G fill:#68a063
style J fill:#336791
style K fill:#dc382d
skillbridge-mvp/
β
βββ π client/ # Frontend React application
β βββ π src/
β β βββ π components/ # Reusable UI components
β β β βββ π common/ # Shared components
β β β βββ π layout/ # Layout components
β β β βββ π features/ # Feature-specific components
β β βββ π pages/ # Page components
β β βββ π hooks/ # Custom React hooks
β β βββ π services/ # API service layer
β β βββ π store/ # Redux store configuration
β β βββ π utils/ # Utility functions
β β βββ π styles/ # Global styles and themes
β β βββ π assets/ # Images, fonts, etc.
β β βββ π App.tsx # Main App component
β β βββ π main.tsx # Application entry point
β βββ π public/ # Static assets
β βββ π package.json # Frontend dependencies
β βββ π tsconfig.json # TypeScript configuration
β βββ π vite.config.ts # Vite configuration
β
βββ π server/ # Backend Node.js application
β βββ π routes/ # API route definitions
β β βββ π auth.js # Authentication routes
β β βββ π projects.js # Project management routes
β β βββ π users.js # User management routes
β β βββ π applications.js # Application routes
β βββ π controllers/ # Route controllers
β βββ π models/ # Database models
β βββ π middleware/ # Custom middleware
β β βββ π auth.js # Authentication middleware
β β βββ π errorHandler.js # Error handling
β β βββ π rateLimiter.js # Rate limiting
β βββ π services/ # Business logic services
β βββ π database/ # Database configuration
β β βββ π DatabaseService.js # Database service
β β βββ π migrations/ # Database migrations
β βββ π utils/ # Utility functions
β βββ π validators/ # Input validators
β βββ π index.js # Server entry point
β
βββ π docs/ # Documentation
β βββ π api/ # API documentation
β βββ π assets/ # Documentation assets
β βββ π ARCHITECTURE.md # Architecture details
β βββ π API.md # API reference
β βββ π DEPLOYMENT.md # Deployment guide
β
βββ π scripts/ # Utility scripts
β βββ π seedMockData.js # Database seeding
β βββ π migrate.js # Migration runner
β βββ π backup.sh # Backup script
β
βββ π tests/ # Test suites
β βββ π unit/ # Unit tests
β βββ π integration/ # Integration tests
β βββ π e2e/ # End-to-end tests
β
βββ π .env.example # Environment variables template
βββ π .gitignore # Git ignore rules
βββ π package.json # Project dependencies
βββ π docker-compose.yml # Docker configuration
βββ π Dockerfile # Container definition
βββ π jest.config.js # Jest configuration
βββ π playwright.config.ts # Playwright configuration
βββ π README.md # This file
Development: http://localhost:3001/api
Production: https://api.skillbridge.com
All authenticated endpoints require a JWT token in the Authorization header:
Authorization: Bearer <your_jwt_token>π Authentication Endpoints
Register a new user account.
Request Body:
{
"email": "user@example.com",
"password": "SecurePassword123!",
"firstName": "John",
"lastName": "Doe",
"userType": "learner" // or "business"
}Response: 201 Created
{
"success": true,
"data": {
"user": {
"id": "uuid",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe"
},
"token": "jwt_token",
"refreshToken": "refresh_token"
}
}Authenticate a user and receive tokens.
Request Body:
{
"email": "user@example.com",
"password": "SecurePassword123!"
}Response: 200 OK
{
"success": true,
"data": {
"user": { /* user object */ },
"token": "jwt_token",
"refreshToken": "refresh_token"
}
}Refresh the access token using a refresh token.
Logout the current user and invalidate tokens.
Request a password reset email.
Reset password using the reset token.
π Project Endpoints
Get a list of all available projects.
Query Parameters:
page(number): Page number for pagination (default: 1)limit(number): Items per page (default: 20)category(string): Filter by categorydifficulty(string): Filter by difficulty levelskills(array): Filter by required skillssearch(string): Search in title and description
Response: 200 OK
{
"success": true,
"data": {
"projects": [
{
"id": "uuid",
"title": "E-commerce Website Redesign",
"description": "Help redesign our online store",
"company": "TechCorp Inc.",
"category": "Web Development",
"difficulty": "intermediate",
"skills": ["React", "Node.js", "UI/UX"],
"duration": "3 months",
"compensation": "$2000",
"applicants": 15,
"status": "open",
"createdAt": "2024-01-15T10:00:00Z"
}
],
"pagination": {
"currentPage": 1,
"totalPages": 5,
"totalItems": 100,
"itemsPerPage": 20
}
}
}Get detailed information about a specific project.
Create a new project (Business users only).
Update project details (Project owner only).
Delete a project (Project owner only).
Apply to a project (Learner users only).
π€ User Endpoints
Get the current user's profile.
Update the current user's profile.
Get public profile of a user.
Add skills to user profile.
Remove a skill from user profile.
Get user dashboard data.
π Application Endpoints
Get user's applications (Learner) or received applications (Business).
Get application details.
Update application status (Business only).
Send a message regarding an application.
All error responses follow this format:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable error message",
"details": {} // Optional additional details
}
}Common HTTP status codes:
400 Bad Request- Invalid request data401 Unauthorized- Authentication required403 Forbidden- Insufficient permissions404 Not Found- Resource not found409 Conflict- Resource conflict429 Too Many Requests- Rate limit exceeded500 Internal Server Error- Server error
- User authentication and authorization
- Basic project listing and search
- Application system
- User profiles
- Mock data layer
- Real PostgreSQL database integration
- Advanced matching algorithm
- In-app messaging system
- File upload and management
- Email notifications
- Payment integration
- Mobile applications (iOS/Android)
- AI-powered recommendations
- Video interviews
- Blockchain credentials
- Analytics dashboard
- Multi-language support
- Team accounts
- Custom branding
- API access
- Advanced analytics
- White-label solutions
- SLA support
See the open issues for a full list of proposed features and known issues.
We love contributions! SkillBridge is built by the community, for the community. Whether you're fixing bugs, adding features, or improving documentation, your help is welcome.
-
Fork the Project
git clone https://github.com/yourusername/skillbridge.git cd skillbridge git remote add upstream https://github.com/original/skillbridge.git -
Create your Feature Branch
git checkout -b feature/AmazingFeature
-
Make your Changes
- Write clean, maintainable code
- Follow existing code style
- Add tests for new features
- Update documentation
-
Commit your Changes
git add . git commit -m 'Add some AmazingFeature'
We follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentationstyle:Formattingrefactor:Code restructuringtest:Testschore:Maintenance
-
Push to the Branch
git push origin feature/AmazingFeature
-
Open a Pull Request
- Provide a clear description
- Reference any related issues
- Include screenshots if applicable
Please read our Code of Conduct before contributing.
π Code Style
- Use ESLint and Prettier configurations
- Follow TypeScript best practices
- Write meaningful variable names
- Keep functions small and focused
- Comment complex logic
π§ͺ Testing Requirements
- Write unit tests for new functions
- Ensure all tests pass before PR
- Maintain >80% code coverage
- Include integration tests for APIs
π Documentation
- Update README for new features
- Document API endpoints
- Add JSDoc comments
- Include usage examples
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 SkillBridge
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
![]() John Doe Project Lead GitHub | LinkedIn |
![]() Jane Smith Tech Lead GitHub | LinkedIn |
![]() Mike Johnson Full Stack Developer GitHub | LinkedIn |
![]() Sarah Wilson UI/UX Designer GitHub | LinkedIn |
We would like to thank:
- π Iowa State University - For supporting student innovation
- π ISU Innovation Prize Committee - For the opportunity to showcase our vision
- π©βπ« Our Mentors - For their invaluable guidance and feedback
- π Open Source Community - For the amazing tools and libraries
- π‘ Early Adopters - For believing in our mission
- React - For the amazing frontend framework
- Node.js - For the powerful backend runtime
- PostgreSQL - For the robust database
- Docker - For containerization
- GitHub - For hosting our code
- Vercel - For deployment platform
π§ Email: contact@skillbridge.com π¦ Twitter: @SkillBridgeApp πΌ LinkedIn: SkillBridge π Website: www.skillbridge.com π¬ Discord: Join our community
π Repository: github.com/yourusername/skillbridge π Issues: Report bugs or request features π Documentation: docs.skillbridge.com π― Project Board: View our roadmap




