A comprehensive job and learning recommendation platform built with React, Firebase, and the Adzuna API. This application provides personalized job recommendations based on user profiles and integrates with real job data.
- Multi-provider authentication: Email/password, Google, and GitHub login
- Email verification: Required email verification after signup
- Forgot password flow: Secure password reset functionality
- Persistent sessions: Automatic login state management
- Comprehensive profile modal: Two-column card layout with modern design
- Dynamic form fields:
- Career level selection
- Skills (multi-select dropdown)
- Industry preferences
- Location (US states + city input)
- Salary expectations with proper input handling
- Work preferences (remote/hybrid/onsite)
- Real-time validation: Form validation with user-friendly error messages
- Personalized recommendations: Based on user profile data
- Real job data: Integration with Adzuna API for live job listings
- Smart filtering: Recommendations filtered by user preferences
- Enhanced UI: Modern card-based layout for job displays
- Course recommendations: Personalized learning paths based on career goals
- Skill-based suggestions: Courses aligned with user skill gaps
- Progressive learning: Structured learning paths for career advancement
- Modern design: Clean, responsive interface with Tailwind CSS
- Centered modals: Beautiful profile modal with proper centering
- Form enhancements: Improved styling and user experience
- Responsive layout: Works seamlessly on desktop and mobile
- Loading states: Smooth loading indicators and transitions
- Frontend: React 18 + Vite
- Authentication: Firebase Authentication
- Database: Firestore (NoSQL)
- Styling: Tailwind CSS + Custom CSS
- Job Data: Adzuna API
- State Management: React Hooks
- Build Tool: Vite
- Node.js (v16 or higher)
- npm or yarn
- Firebase project
- Adzuna API credentials
git clone <your-repo-url>
cd job_recommendernpm installCreate a .env file in the project root:
# Firebase Configuration
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
VITE_FIREBASE_MEASUREMENT_ID=your_firebase_measurement_id
# Adzuna API Configuration
VITE_ADZUNA_APP_ID=your_adzuna_app_id
VITE_ADZUNA_API_KEY=your_adzuna_api_key- Go to Firebase Console β Authentication β Sign-in method
- Enable the following providers:
- Email/Password
- GitHub
Set your Firestore security rules to:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /artifacts/{appId}/users/{userId}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}npm run devVisit http://localhost:5173 in your browser.
- Sign Up: Create an account with email/password or use social login
- Email Verification: Verify your email address (required for access)
- Login: Sign in with your credentials
- Access Profile: Click on your profile to open the modal
- Complete Information: Fill in all profile fields:
- Career level and experience
- Skills and industry preferences
- Location and salary expectations
- Work preferences
- Save Profile: Your data is automatically saved to Firestore
- View personalized job recommendations based on your profile
- Recommendations include real job data from Adzuna API
- Filter and sort options available
- Browse recommended courses and learning paths
- Track your learning progress
- Get suggestions based on your career goals
src/
βββ components/ # React components
β βββ Auth/ # Authentication components
β βββ Profile/ # User profile components
β βββ Recommendations/ # Job and course components
βββ services/ # Firebase and API services
βββ styles/ # CSS files
βββ utils/ # Utility functions
UserProfileModal.jsx: Main profile management componentLoginForm.jsx: Authentication form with social loginSignUpForm.jsx: Registration form with email verificationJobRecommendations.jsx: Job recommendation displayCourseRecommendations.jsx: Learning path recommendations
- Tailwind CSS for utility classes
- Custom CSS files for component-specific styles
- Responsive design with mobile-first approach
Firebase 400 Error on Signup
- Check if email is already registered
- Ensure password meets Firebase requirements (min 6 characters)
- Verify Firebase configuration in environment variables
Tailwind CSS Not Working
- Ensure PostCSS configuration is correct
- Check that Tailwind directives are in App.css
- Restart development server after configuration changes
Form Validation Errors
- Check browser console for JavaScript errors
- Verify all required fields are filled
- Ensure proper data types for form inputs
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Firebase for authentication and database
- Adzuna for job data API
- Tailwind CSS for styling utilities
- React for the UI framework