Tìm kiếm


    Phân Tích Lượng Truy Cập và Clone Repository Trên GitHub với ASP.NET Core và ReactJS


    GitHub là một nền tảng mã nguồn mở phổ biến, nơi hàng triệu lập trình viên và tổ chức chia sẻ mã nguồn và các dự án phần mềm.

    Với lượng người dùng và dự án khổng lồ như vậy, việc phân tích các hoạt động và thống kê về các repository của bạn trên GitHub có thể giúp bạn hiểu rõ hơn về mức độ phổ biến của dự án, xu hướng sử dụng và các yếu tố ảnh hưởng đến sự phát triển của mã nguồn.

    Project này cung cấp một công cụ phân tích dữ liệu truy cập và clone cho các repository GitHub của bạn, đồng thời giúp bạn trực quan hóa các thống kê này thông qua các biểu đồ sinh động.

    Project được xây dựng với ASP.NET Core cho phần backend và ReactJS cho frontend, đồng thời sử dụng GitHub API để lấy dữ liệu trực tiếp từ các repository của bạn.

    Mục Tiêu Dự Án

    Mục tiêu của dự án là cung cấp một công cụ dễ sử dụng để theo dõi và phân tích các chỉ số quan trọng liên quan đến các repository GitHub của bạn:

    • - Lượng truy cập (views) vào repository.
    • - Lượng clone (clones) của repository.
    • - Thống kê tổng quan và chi tiết theo từng repository.
    • - Tự động đồng bộ dữ liệu từ GitHub 4 tiếng 1 lần.

    Các Tính Năng Chính

    • - Xem thống kê truy cập và clone: Người dùng có thể xem các chỉ số liên quan đến lượt truy cập và lượt clone cho từng repository của mình trên GitHub.
    • - Xem tất cả các repository: Hệ thống hỗ trợ xem tất cả các repository mà bạn có trên GitHub, từ đó phân tích các chỉ số trên từng repository.
    • - Tự động đồng bộ dữ liệu: Dự án sử dụng cơ chế đồng bộ tự động mỗi ngày để lấy và cập nhật dữ liệu mới nhất từ GitHub API.

    Screenshots

    Cấu Trúc Dự Án

    • - Backend: ASP.NET Core Web API  sử dụng GitHub API để lấy dữ liệu và xử lý.
    • - Quartz.AspNetCore: Thư viện để lập lịch tự đống sync dữ liệu hàng ngày từ Github.
    • - Frontend: ReactJS cung cấp giao diện người dùng để hiển thị các dữ liệu thống kê dưới dạng biểu đồ và bảng.
    • - Cơ sở dữ liệu: Dự án sử dụng MySQL để lưu trữ các dữ liệu thống kê từ GitHub.

    Yêu Cầu Cài Đặt

    Trước khi bắt đầu cài đặt và chạy dự án, bạn cần chuẩn bị một số công cụ và thông tin sau:

    • - .NET 8+
    • - Node.js và npm
    • - GitHub Personal Access Token
    • - MySQL

    Hoặc chỉ cần Docker & Docker Compose

    Tạo Access Token

    Truy cấp https://github.com/settings/apps và tạo Personal Access Token (Classic)

    dsa

    Chạy Project

    Có 2 cách để chạy project

    Cách 1:

    Sử dụng Editor (VS Code,...) hoặc Command line.

    Đối với Backend cần chỉnh sửa thông tin ConnectionString, và GithubConfig trong file appsettings.json

      "ConnectionStrings": {
        "DefaultConnection": "Server=127.0.0.1;Port=3307;Database=GithubAnalyzeDB;Uid=root;Pwd=123456789Aa;"
      },
      "GithubConfig": {
        "Token": "YOUR_TOKEN",
        "Username": "YOUR_USERNAME",
        "BaseAddress": "https://api.github.com"
      },

    Sau đó chạy project bằng các câu lệnh sau:

    Backend :

    Tại thư mục backend chạy lệnh

    dotnet run

    Frontend:

    Tại thư mục frontend chạy lệnh

    npm install
    npm start

    Cách 2: Sử dụng Docker Compose

    Tại thư mục chính của project

    Chỉnh sửa lại file .env với các thông tin như ở cách 1

    MYSQL_IMAGE_NAME=mysql:8.3
    MYSQL_ROOT_PASSWORD=123456789Aa
    MYSQL_PORT=3317
    
    FE_PORT=3000
    API_PORT=5051
    
    GITHUB_TOKEN=YOUR_TOKEN
    GITHUB_USERNAME=YOUR_USERNAME

    Schedule

    Tool sẽ tự động sync dữ liệu từ Github về 4 tiếng 1 lần. Bạn có thể chỉnh lại thời gian sync tại file backend/Extensions/JobExtensions.cs

    services.AddQuartz(q =>
    {
        var jobKey = new JobKey("GithubJobSyncService");
        q.AddJob<GithubJobSyncService>(opts => opts.WithIdentity(jobKey));
    
        q.AddTrigger(opts => opts
            .ForJob(jobKey)
            .WithIdentity("GithubJobSyncService-trigger")
            .WithCronSchedule("0 0 */4 * * ?")
        );
    });

    Chỉnh sửa tại dòng WithCronSchedule("0 0 */4 * * ?") sử dụng cron expression để đặt lại thời gian lặp.

    Kiểm tra kết quả

    • Mở trình duyệt và truy cập vào http://localhost:5051 (đây là URL của backend ASP.NET Core).
    • Truy cập vào http://localhost:3000 để kiểm tra giao diện người dùng.

    Kết Luận

    Dự án này không chỉ giúp bạn theo dõi và phân tích lượng truy cập và clone của các repository trên GitHub mà còn cung cấp một giao diện dễ dàng sử dụng để trực quan hóa các dữ liệu thống kê này.

    Được xây dựng bằng ASP.NET Core và ReactJS, dự án giúp bạn kết hợp sức mạnh của backend và frontend để tạo ra một công cụ phân tích mạnh mẽ và dễ sử dụng.

    Hy vọng bài viết này giúp bạn dễ dàng triển khai và sử dụng công cụ phân tích GitHub này. Nếu có bất kỳ câu hỏi nào hoặc cần hỗ trợ, đừng ngần ngại liên hệ với mình nhé!


    Tiểu sử
    Are you one or zero?


    Bình luận