Guidia is a comprehensive career guidance platform designed to connect students with counselors and companies. The platform facilitates career exploration, job searching, and professional networking in an educational context. Guidia serves as a bridge between educational institutions and the job market, helping students transition from education to employment with personalized guidance.
- Framework: React 18 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS with shadcn/ui components
- State Management: React Context API
- Routing: React Router v7
- Form Handling: React Hook Form with Zod validation
- UI Components: Radix UI primitives
- Data Visualization: Recharts
- PDF Handling: React PDF
- Rich Text Editing: Quill
- Notifications: Sonner
- Error Tracking: Sentry
- Runtime: Node.js with Express
- Database: MySQL
- Authentication: JWT (JSON Web Tokens)
- Real-time Communication: Socket.IO
- Email Service: Nodemailer with Gmail
- File Storage: Azure Blob Storage
- Security: Helmet, XSS protection, CSRF protection, rate limiting
- AI Integration: OpenAI, SambaNova, DeepSeek
- Task Scheduling: Node-schedule
- Firebase: Real-time database for notifications
- Client-Server Architecture: Separate frontend and backend applications
- RESTful API: Communication between frontend and backend
- WebSockets: Real-time notifications and messaging
- Microservices: Modular backend services for different functionalities
- Multiple User Roles: Admin, Student, Counselor, Company
- Authentication: Secure login, registration, and password reset
- Profile Management: Customizable profiles for each user type
- Email Verification: Secure account creation process
- Career Pathway Exploration: Browse and select career interests
- Document Management: Upload and manage resumes and other documents
- Job Applications: Apply to job postings from companies
- Meeting Scheduling: Book sessions with counselors
- AI Assistant: Get career guidance from Guidia AI
- Specialization Management: Define areas of expertise
- Availability Settings: Set meeting availability
- Student Interaction: Message and meet with students
- Language Settings: Specify languages spoken
- Job Posting: Create and manage job listings
- Application Management: Review and respond to student applications
- Company Profile: Showcase company information
- Student Recruitment: Connect with potential candidates
- User Management: Approve registrations and manage users
- Content Management: Manage news and events
- System Monitoring: View system health and activity
- Security Auditing: Track security events
- Reporting: Generate system reports
- Messaging System: Direct messaging between users
- Notifications: Real-time notifications for important events
- Meeting Scheduling: Calendar integration for appointments
- News: Platform announcements and career news
- Events: Career events and important dates
- Node.js (v16 or higher)
- MySQL (v8 or higher)
- Git
-
Clone the repository
git clone <repository-url> cd guidia-web
-
Install dependencies
npm run install:all
-
Set up environment variables
- Copy
.env.exampleto.envin both frontend and backend directories - Update the variables with your configuration
- Copy
-
Set up the database
- Create a MySQL database named
guidia-web-db - Import the database schema (if available) or run migrations
- Create a MySQL database named
-
Start the development servers
npm run dev
# Database configuration
DB_HOST=localhost
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=guidia-web-db
# JWT configuration
JWT_SECRET=your_jwt_secret_key
# Email configuration
[email protected]
EMAIL_PASSWORD=your_email_password
# Azure Storage configuration
AZURE_STORAGE_CONNECTION_STRING=your_azure_storage_connection_string
AZURE_STORAGE_CONTAINER_NAME=your_azure_container_name
# Server configuration
PORT=3001
FRONTEND_URL=http://localhost:1030
# Firebase configuration
FIREBASE_DATABASE_URL=your_firebase_database_url
# AI configuration
SAMBANOVA_API_KEY=your_sambanova_api_key
DEEPSEEK_API_KEY=your_deepseek_api_key
# API configuration
VITE_API_BASE_URL=http://localhost:3001
# 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
VITE_FIREBASE_DATABASE_URL=your_firebase_database_url
npm run dev- Start both frontend and backend development serversnpm run dev:frontend- Start only the frontend development servernpm run dev:backend- Start only the backend development servernpm run install:all- Install dependencies for both frontend and backendnpm run install:frontend- Install frontend dependenciesnpm run install:backend- Install backend dependenciesnpm run build- Build both frontend and backend for productionnpm run build:frontend- Build only the frontend for productionnpm run build:backend- Build only the backend for productionnpm run lint- Run linting on the frontend code
npm run start- Start the backend servernpm run dev- Start the backend server in development modenpm run test-firebase- Test Firebase connectionnpm run rotate-key- Rotate Firebase service account keynpm run schedule-rotation- Schedule Firebase key rotation
npm run dev- Start the frontend development servernpm run build- Build the frontend for productionnpm run lint- Run lintingnpm run preview- Preview the production build locally
- Start the development servers using
npm run dev - Frontend will be available at http://localhost:1030
- Backend API will be available at http://localhost:3001
- Make changes to the code
- The servers will automatically reload when changes are detected
frontend/- Frontend React applicationbackend/- Backend Express APIpackage.json- Root package.json for running both applications.ps1- PowerShell script for starting development environment
src/- Source codecomponents/- Reusable UI componentscontexts/- React context providersfeatures/- Feature-specific componentslib/- Utility functions and helperspages/- Page componentsfirebase/- Firebase configurationApp.tsx- Main application componentmain.tsx- Application entry point
public/- Static assetsvite.config.ts- Vite configuration
config/- Configuration filescontrollers/- Request handlersmiddleware/- Express middlewareroutes/- API routesservices/- Business logicutils/- Utility functionsemail-templates/- Email templatesscripts/- Utility scriptsindex.js- Server entry point
The backend provides RESTful API endpoints for various functionalities:
POST /auth/login- User loginPOST /auth/register- User registrationPOST /auth/email-verification- Verify emailPOST /auth/forgot-password- Request password resetPOST /auth/reset-password/:token- Reset password
GET /api/users/:id- Get user by IDPUT /api/users/:id- Update userDELETE /api/users/:id- Delete user
GET /api/students- Get all studentsGET /api/students/:userID- Get student by user IDPOST /api/students/profile- Update student profile
GET /api/counselors- Get all counselorsGET /api/counselors/:id- Get counselor by IDPOST /api/counselors/profile- Update counselor profile
GET /api/companies- Get all companiesGET /api/companies/:id- Get company by IDPOST /api/companies/profile- Update company profile
GET /api/jobs- Get all jobsGET /api/jobs/:id- Get job by IDPOST /api/jobs- Create jobPUT /api/jobs/:id- Update jobDELETE /api/jobs/:id- Delete jobPOST /api/jobs/:id/apply- Apply for job
GET /api/meeting- Get user meetingsPOST /api/meeting- Create meetingPUT /api/meeting/:id- Update meetingDELETE /api/meeting/:id- Delete meeting
GET /api/messages- Get user messagesPOST /api/messages- Send message
POST /api/openai/chat- Send message to AI
The application uses a MySQL database with the following main tables:
users- User accounts and authenticationstudents- Student profilescounselors- Counselor profilescompanies- Company profilesjobs- Job listingsjob_applications- Job applicationsmeetings- Scheduled meetingsmessages- User messagesnews- News articlesevents- Event listingsai_chat_conversations- AI chat historynotifications- User notifications
-
Create production builds for both frontend and backend:
npm run build
-
Set up environment variables for production:
- Update
.envfiles with production values - Set
NODE_ENV=production
- Update
-
Deploy the backend:
- Copy the backend directory to your server
- Install production dependencies:
npm install --production - Start the server:
npm start
-
Deploy the frontend:
- Copy the contents of
frontend/distto your web server - Configure the web server to serve the static files
- Set up URL rewriting for client-side routing
- Copy the contents of
- Frontend: Vercel, Netlify, Azure Static Web Apps
- Backend: Azure App Service, AWS Elastic Beanstalk, Heroku
- Database: Azure Database for MySQL, AWS RDS, managed MySQL hosting
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Run linting and tests
npm run lint
- Commit your changes
git commit -m "Add your feature description"
- Push to your branch
git push origin feature/your-feature-name
- Create a pull request
-
Database Connection Errors
- Verify database credentials in
.envfile - Ensure MySQL server is running
- Check network connectivity to database server
- Verify database credentials in
-
Authentication Issues
- Verify JWT_SECRET is set correctly
- Check token expiration settings
- Clear browser cookies and local storage
-
File Upload Problems
- Verify Azure Storage connection string
- Check container permissions
- Ensure file size is within limits
-
Development Server Not Starting
- Check for port conflicts
- Verify all dependencies are installed
- Check for syntax errors in recent changes
© 2023-2024 Guidia. All rights reserved.