Skip to content

AET-DevOps25/team-git-it-together

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SkillForge.ai

Team: git-it-together

Authors: Achraf Labidi (@GravityDarkLab) x Mahdi Bayouli (@mahdibayouli)

Tutor: Sindi Buklaji

Description: SkillForge is an innovative AI-powered learning platform that revolutionizes how people acquire new skills and knowledge. Our mission is to make quality education accessible, personalized, and engaging for everyone, regardless of their location or background.

πŸ“š Table of Contents

  1. πŸ“Š Status
  2. 🌐 Live Application Links
  3. πŸ“… Internal Project Timeline
  4. πŸ“ Problem Statement
  5. 🧩 System Overview and Architecture
  6. πŸ“‹ Requirements
  7. πŸ”§ Features
  8. πŸ› οΈ Tech Stack
  9. πŸ“¦ Setup Instructions
  10. πŸ‘₯ Team Roles
  11. πŸ“„ License

πŸ“Š Status

πŸ”¨ Build & Test
Build and Test Client Build and Test Server Build and Test GenAI
Client Server GenAI
🐳 Docker
Build and Push Docker Images
☸️ Kubernetes Deployment
Build, Push and Deploy to Kubernetes
☁️ AWS Deployment
Provision, Configure and Deploy to AWS

🌐 Live Application Links

Service Description URL
🎯 Main Application SkillForge.ai Frontend https://skillforge.student.k8s.aet.cit.tum.de
πŸ”Œ API Gateway Backend API Services https://api.skillforge.student.k8s.aet.cit.tum.de
πŸ€– GenAI GenAI Service https://api.genai.skillforge.student.k8s.aet.cit.tum.de
πŸ“ˆ Prometheus Metrics & Monitoring https://prometheus.skillforge.student.k8s.aet.cit.tum.de
πŸ“Š Grafana Dashboards & Analytics https://grafana.skillforge.student.k8s.aet.cit.tum.de
🚨 Alert Manager Alerts & Notifications https://alertmanager.skillforge.student.k8s.aet.cit.tum.de
πŸ“§ MailHog Email Testing Tool https://mailhog.skillforge.student.k8s.aet.cit.tum.de

πŸ“… Internal Project Timeline

See the weekly progress document for a detailed timeline of the project.

πŸ“ Problem Statement

See the problem statement document for a detailed description of the problem statement.

🧩 System Overview and Architecture

See the system overview and architecture document for a detailed description of the system overview and architecture.

For the Server, See the README file for a detailed description of the server. For the Client, See the README file for a detailed description of the client. For the GenAI, See the README file for a detailed description of the GenAI.

πŸ“‹ Requirements

πŸš€ Essential Requirements (Local Development)

  • Docker Desktop (with Docker Compose) Required for running and orchestrating all local containers
  • Git Required for cloning the repository and managing version control

πŸ’» Development Tools (Recommended)

  • Node.js (v18+ recommended) & npm or Yarn For building and running the frontend locally with hot-reload
  • Java JDK 21+ For building and running the backend services locally
  • Python (v3.10+ recommended) For running the GenAI service locally and database seeding

πŸ—„οΈ Local Services (Optional)

  • MongoDB For local development and testing (Docker version is used by default)
  • Weaviate For local development and testing (Docker version is used by default)

πŸ€– AI/ML Requirements

  • OpenAI API Key Required for using GenAI features with OpenAI models
  • LM Studio (Optional) For running local language models instead of using OpenAI

☁️ Infrastructure & Deployment (Optional)

  • Terraform For provisioning cloud infrastructure (Infrastructure as Code)
  • Ansible For automating configuration and server setup
  • kubectl For managing Kubernetes deployments
  • Helm For managing Kubernetes deployments and Helm charts
  • Helmfile For managing Helm charts and releases
  • AWS CLI For managing AWS resources

πŸ“Š Monitoring & Observability (Optional)

  • Prometheus For metrics collection and monitoring
  • Grafana For dashboards and analytics

πŸ’‘ Note: Most local development tasks require only Docker and Git. Other tools are needed for infrastructure automation, cloud deployment, or advanced development scenarios.

πŸ”§ Features

Built with cutting-edge technologies and modern development practices, SkillForge combines the power of artificial intelligence with comprehensive learning management to create a truly personalized educational experience. Our platform adapts to each learner's pace, preferences, and goals, ensuring maximum engagement and retention.

πŸ”₯ Current Features

  • ✨ AI-Curated Course Generation Create and explore dynamic courses powered by artificial intelligence.

  • πŸ’¬ Interactive AI Chat Assistant Get instant help and learning guidance from an intelligent AI tutor.

  • 🧭 Personalized Learning Paths Customized journeys tailored to your skills, pace, and goals.

  • πŸ† Achievement & Badge System Unlock milestones and collect badges as you learn.

  • πŸ“š Course Bookmarking Save and organize your favorite courses for quick access.

  • ⚑️ Real-time Progress Updates Track your learning progress instantly, every step of the way.


πŸš€ Planned Features

  • 🌐 Global Learning Community (Coming Soon) Connect, collaborate, and grow with learners worldwide.

  • 🈺 Multi-language Support (Coming Soon) Learn in your preferred language.

  • πŸ“Š Advanced Analytics Dashboard (Coming Soon) Dive deep into your learning stats and trends.

  • πŸ’» Interactive Code Playground (Coming Soon) Practice coding live within the platform.

  • πŸŽ“ Certification Programs (Coming Soon) Earn certificates to showcase your achievements.

πŸ› οΈ Tech Stack

  • 🎨 Frontend: React, Vite, Tailwind CSS, TypeScript
  • πŸ”— Backend: Java, Spring Boot
  • πŸ’Ύ Database: MongoDB, Weaviate
  • πŸ€– GenAI: LangChain, OpenAI, Python
  • βš™οΈ Infrastructure: Docker, Docker Compose, Terraform, Ansible, Kubernetes (k8s), Helm, Helmfile
  • πŸ“ˆ Monitoring: Prometheus, Grafana
  • πŸ—‚οΈ Version Control: Git, GitHub
  • ☁️ Cloud Provider: AWS (Amazon Web Services), AET Cluster on Rancher

πŸ“¦ Quick Start: Local Development Setup

1. Prerequisites

2. Clone the Repository

git clone https://github.com/AET-DevOps25/team-git-it-together.git
cd team-git-it-together

3. Configure Environment Variables

  • Copy the example environment file to .env in the root directory:
    • macOS/Linux:
      ./copy-env.sh .env.dev.example .env
    • Windows (PowerShell):
      .\copy-env.ps1 .env.dev.example .env
  • Edit .env and fill in all required secrets and configuration values.
  • Minimal example:
    MONGODB_DATABASE=skillforge_dev
    MONGODB_USERNAME=dev_user
    MONGODB_PASSWORD=dev_password
    JWT_SECRET=<secret-key>
    JWT_EXPIRATION_MS=3600000
    VITE_APP_VERSION=1.0.0
    VITE_API_VERSION=v1
    GENAI_APP_VERSION=1.0.0
    CORS_ALLOW_ORIGINS=*
    LLM_PROVIDER=openai
    OPENAI_API_BASE=https://api.openai.com/v1
    OPENAI_API_KEY=<secret-key>
    OPENAI_MODEL=gpt-4o-mini
  • Default Ports:
    Service Port
    mongo 27017
    weaviate-db 8080
    server-gateway 8081
    user-service 8082
    course-service 8083
    genai 8888
    mailhog 8025
    prometheus 9090
    grafana 3000
    alertmanager 9093
    client 3000

4. Build and Start All Services

docker compose up --build
  • To run in detached/background mode:
    docker compose up --build -d

5. (Optional) Seed the Database

cd seed
python seed_all.py
  • This will create a demo user and seed the database with sample courses.

6. Access the Application

Tip: For pretty URLs like client.localhost, server.localhost, and genai.localhost, add this to your /etc/hosts file:

echo "127.0.0.1 client.localhost server.localhost genai.localhost" | sudo tee -a /etc/hosts

ℹ️ Running Services Individually

To run a specific service (e.g., client, server, genai) on its own, see the README in that service's directory for detailed instructions:


8. Managing the Application

  • To stop all running containers:

    docker compose down
  • To stop and remove all containers, networks, and named volumes created by up, including orphans:

    docker compose down --remove-orphans --volumes

    Note: This will perform a hard reset, removing all data in volumes. Perform this only if you want to reset your local environment.

9. Troubleshooting & Tips

  • Check logs for any service:

    docker-compose logs <service-name>

    Listed services include:

    • client
    • server-gateway
    • user-service
    • course-service
    • weaviate-db
    • genai
    • mongo
  • See running containers:

    docker ps
  • If you change .env, rebuild containers:

    docker-compose up --build
  • To Try the production setup locally:

    • Create a .env.prod file based on .env.prod.example and fill in the required values.

    • Run the production setup with:

      docker compose --env-file .env.prod -f docker-compose.local.yaml up --build -d
    • To stop and delete all containers, networks, and volumes of the production setup:

      docker compose --env-file .env.prod -f docker-compose.local.yaml down --volumes --remove-orphans

πŸ‘₯ Team Roles

Achraf Labidi – Full Stack Software Developer

  • Backend Development - Java Spring Boot services (Gateway, User Service, Course Service)
  • Frontend Development - React/TypeScript application with Vite and Tailwind CSS
  • Deployment & Infrastructure - Docker containerization, Kubernetes deployment, AWS deployment, CI/CD pipelines

Mahdi Bayouli – Full Stack Software Developer

  • GenAI Development - Python-based AI services with LangChain and OpenAI integration
  • Monitoring & Observability - Prometheus, Grafana, Alert Manager setup and configuration
  • Deployment & Infrastructure - Kubernetes deployment and monitoring stack

πŸ“„ License

MIT License – see LICENSE for details.