Skip to content

feldulfz/mentoring-website

Repository files navigation

Mentoring Application

Angular Firebase TailwindCSS PrimeNG GitHub_Actions

A comprehensive mentoring platform built with Angular and Firebase, designed to connect mentees with expert mentors for professional growth and knowledge sharing.

Features

Core Functionality

  • User Roles: Distinct roles for mentees, mentors, and administrators
  • Mentor Profiles: Detailed mentor profiles with expertise, experience, and availability
  • Session Booking: Easy scheduling of mentoring sessions
  • Calendar Integration: Google Calendar integration for seamless scheduling
  • Feedback System: Rating and feedback mechanism for mentoring sessions

Advanced Features

  • Search & Discovery: Advanced search functionality to find the right mentor
  • Availability Management: Mentors can manage their availability slots
  • Session Tracking: Track all mentoring sessions and requests
  • Data Analytics: Dashboard for mentors to track their performance
  • Responsive UI: Modern, responsive interface using TailwindCSS and PrimeNG

Technical Highlights

  • Firebase Integration: Authentication, Firestore database, and storage
  • Real-time Updates: Live updates for mentorship requests and sessions
  • Custom UI Components: Custom loader, navigation, and toast notifications
  • Data Seeding: Built-in database seeding for development

Tech Stack

Primary Technologies

  • Frontend: Angular 20.3.6
  • Styling: TailwindCSS, DaisyUI, PrimeNG
  • Backend Services: Firebase (Auth, Firestore, Storage)
  • State Management: RxJS Observables
  • Build Tools: Angular CLI, Webpack

Additional Libraries

  • UI Components: Material UI, PrimeIcons
  • Date Picker: Flatpickr
  • Notifications: SweetAlert2
  • Data Visualization: Chart.js (via PrimeNG)
  • Testing: Jasmine, Karma

Installation

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Angular CLI
  • Firebase account

Quick Start

  1. Clone the repository:

    git clone https://github.com/yourusername/mentoring-app.git
    cd mentoring-app
  2. Install dependencies:

    npm install
  3. Set up Firebase:

    • Create a Firebase project at Firebase Console
    • Add your Firebase configuration to src/environments/environment.ts and src/environments/environment.prod.ts
    • Enable Authentication, Firestore Database, and Storage services
  4. Run the development server:

    ng serve
  5. Access the application: Open your browser to http://localhost:4200

Development Setup

For a complete development environment:

# Install all dependencies including dev tools
npm install --save-dev

# Set up environment variables
cp .env.example .env

# Run tests
ng test

# Build for production
ng build --prod

Usage

Basic Navigation

The application features a role-based navigation system:

// Example route configuration from app.routes.ts
{
  path: 'mentee',
  loadChildren: () => import('../app/features/mentee/mentee-routing-module').then(m => m.MENTEE_ROUTES),
  canActivate: [AuthGuard, RoleGuard],
  data: { authGuardPipe: redirectToLogin, roles: ['mentee'] }
}

Key Components

Authentication Flow

  1. Sign In: Users can sign in with email/password or Google
  2. Role Selection: New users select their role (mentee/mentor)
  3. Profile Completion: Users complete their profile based on their role

Mentor Dashboard

// Example service method to get mentor profile
getFullMentorProfileById(mentorId: string): Observable<any> {
  // Implementation using Firestore
}

Mentee Experience

  • Search for mentors by expertise, location, or availability
  • View mentor profiles and availability
  • Book sessions with preferred mentors

API Examples

Searching for Mentors:

// Using the MentorService
async searchMentors(keyword: string): Promise<any[]> {
  // Implementation using Firestore query
}

Booking a Session:

// Using the MentorService
async bookSlot(formValue: any): Promise<void> {
  // Implementation using Firestore
}

Project Structure

mentoring-app/
├── src/
│   ├── app/
│   │   ├── core/                  # Core services, guards, and utilities
│   │   ├── features/              # Feature modules (auth, mentor, mentee, admin)
│   │   ├── shared/                # Shared components and interfaces
│   │   ├── app.component.ts       # Main application component
│   │   ├── app.routes.ts          # Routing configuration
│   │   └── app.config.ts          # Application configuration
│   ├── assets/                   # Static assets
│   ├── environments/              # Environment configuration
│   └── index.html                # Main HTML template
├── public/                       # Public assets
├── .editorconfig                 # Editor configuration
├── .gitignore                    # Git ignore rules
├── angular.json                  # Angular configuration
├── package.json                  # Project dependencies
├── tsconfig.json                # TypeScript configuration
└── README.md                     # Project documentation

Configuration

Environment Variables

Create a .env file in your project root with the following variables:

FIREBASE_API_KEY=your_api_key
FIREBASE_AUTH_DOMAIN=your_auth_domain
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_storage_bucket
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_id

Firebase Configuration

Update your environment files:

// src/environments/environment.ts
export const environment = {
  production: false,
  firebase: {
    apiKey: "YOUR_API_KEY",
    authDomain: "YOUR_AUTH_DOMAIN",
    projectId: "YOUR_PROJECT_ID",
    storageBucket: "YOUR_STORAGE_BUCKET",
    messagingSenderId: "YOUR_SENDER_ID",
    appId: "YOUR_APP_ID"
  }
};

Visuals

WelcomePage

mentor_1

Register As Mentor

mentor_2

mentor_3

mentor_4

mentor_5

mentor_6

mentor_8

Mentor Dashbord

mentor_9

Mentor Profile

mentor_10

Mentor Sessions Dashboard

mentor_11

Mentor Schedule's Dashboard

mentor_12

Mentor Meente Feedback Dashboard

mentor_13

Mentor Create Schedule

mentee_1

mentor_15

mentor_16


Mentee Registration (Manual)

mentee_1

mentee_2

Mentee Registration (With google sign-in)

mentee_3

mentee_4

mentee_5

mentee_6

mentee_7

Mentee Landing Page

mentee_8

Mentee Profile

mentee_9

Select Top Rated Mentor

mentee_10

mentee_11

Search Mentor By Filter

mentee_12

mentee_13

mentee_14

Search Mentor By Search Bar

mentee_15

mentee_16

mentee_17


Book A Mentor

mentee_18

mentee_19

mentee_20

Select Date & Time

mentee_21

mentee_22

Input Session Goal

mentee_23

Success Booking

mentee_24

Booking Dashboard

mentee_25

mentee_26

mentee_27


Approve Mentee Booking

apr_ses_1

apr_ses_2

apr_ses_3

apr_ses_4

Mentor Upcomming Session

apr_ses_5

apr_ses_6

Mentee Upcomming Session

apr_ses_7

Mentor set video call link for session

apr_ses_8

apr_ses_9

Mentee can now see mentor message and join meeting

apr_ses_10

apr_ses_11

apr_ses_12


Mentor mark session as complete

done_ses_1

done_ses_2

done_ses_3

done_ses_4

Mentee rate & review mentor

done_ses_5

done_ses_6

done_ses_7

Mentor rate & review mentee

done_ses_8

done_ses_9

Mentor rate & review per session

done_ses_11

done_ses_12

done_ses_13

done_ses_14

Mentee view for completed session

done_ses_10

Mentor profile

done_ses_15

Mentor profile no available schedule because it's already booked and completed

done_ses_16


Contributions

Thanks to my pair Daniel Mengote for colaboration with this project and to Angular PH Mentors.

About

Angular PH bootcamp final project, built with Angular, Firebase (Auth, Firestore, Storage), TailwindCSS, and PrimeNG, mentee & mentor matching, session booking, and real-time updates.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages