๐Ÿ“ฆ keyurkhant / gitcolab

โ˜… 1 stars โ‘‚ 0 forks ๐Ÿ‘ 1 watching
๐Ÿ“ฅ Clone https://github.com/keyurkhant/gitcolab.git
HTTPS git clone https://github.com/keyurkhant/gitcolab.git
SSH git clone git@github.com:keyurkhant/gitcolab.git
CLI gh repo clone keyurkhant/gitcolab
Keyur Khant Keyur Khant Update application.properties a57fda1 4 months ago ๐Ÿ“ History
๐Ÿ“‚ master View all commits โ†’
๐Ÿ“ gc-client
๐Ÿ“ gc-server
๐Ÿ“„ .DS_Store
๐Ÿ“„ package-lock.json
๐Ÿ“„ Readme.md
๐Ÿ“„ README.md

GitHub Colab

Project Overview

GitHub Colab is a project aimed at enhancing the experience of open-source developers. More than 90% of developers use GitHub for their open-source projects, and integrating various productivity and developer tools with GitHub can enhance their overall experience and productivity. Our application offers an all-in-one platform to start new projects, invite skilled contributors, and explore other open-source projects from developers across the globe.

Our primary target users are open-source developers who seek a unified platform that seamlessly integrates various development tools and services, thereby making the management of open-source projects easier and more efficient.

Application Workflow and Features

1. User Authentication

The system supports new user registration and existing user login. It has a forget password functionality for recovering access. Repository owners can invite contributors through the system, sending an invitation link to the contributor via email. Developers can access a project's dashboard if they are existing users on our application. Otherwise, they need to follow the necessary registration steps first.

2. User Profile and Role Management

Users can maintain their profiles, view and update user information, and manage system access based on roles. The roles include Repository Owner and Contributor, and a user can be both a repository owner as well as a project contributor. Users have access to all repositories and dashboards for which they are contributors.

3. Integration

The system provides OAuth support for integrating GitHub and Atlassian accounts. Users can create a new repository from our system and integrate the repository with Jira and Confluence. The workflow allows for creating Jira issues or tickets when an issue is raised in a GitHub repository.

4. Analytics Dashboard

Our system provides a comprehensive analytics dashboard displaying various statistics of the GitHub repository and Jira board. Depending on the user's role, they can access relevant repository statistics. The dashboard presents various graphs and plots for a visual presentation of the data.

5. Explore

Users can explore active open-source repositories from other users who deviate by 1 to 3 degree connections from them. Users can also request a repository owner to become a collaborator of the project via the explore page.

Running the Project

The front-end of the project is built using React. To run the front-end, navigate to the gc-client directory and run the following commands:
npm install
npm start
This will start the front-end on localhost:3000.

The backend is developed using Java Spring Boot. To run the back-end, navigate to the gc-server directory and run the following commands:

mvn compile
mvn spring-boot:run
This will start the back-end server.

To run tests for the front-end, use the following command in the gc-client directory:

npm test
For back-end tests, use the following command in the gc-server directory:
mvn test

CI/CD Pipeline Overview

GitHub Colab uses GitLab CI/CD for continuous integration and continuous deployment. The pipeline consists of three stages: Test, Build, and Deploy.

  • Test: This stage ensures all unit tests pass. It runs mvn test for the back-end and npm test for the front-end.
  • Build: This stage compiles and prepares the project for deployment. It runs mvn compile for the back-end and npm run build for the front-end.
  • Deploy: This stage deploys the application. It uses npx netlify deploy to deploy the front-end to Netlify.
The pipeline ensures every code push or merge request is tested and built before deployment, increasing the reliability of the deployed code and facilitating continuous improvement.

Our CI/CD pipeline deploys the project to Netlify. The deployed application can be found here.

CI/CD Pipeline Caching

Caching in our CI/CD pipeline boosts build speeds by storing and reusing heavy-to-fetch data.

Configured within the gitlab-ci.yml file, we cache the following paths:

  • .m2/repository: Holds Maven project dependencies, avoiding repeated internet downloads.
  • gc-client/node_modules: Contains Node.js dependencies of our front-end application, eliminating the need for constant downloads.
  • gc-client/build: Stores the compiled front-end code, expediting the deployment process.
This approach promotes pipeline efficiency by limiting unnecessary recompilation and redownloading, thus conserving time and bandwidth.

Technologies Used Till now

  • Java Spring Boot
  • JUnit
  • React
  • React-Bootstrap
  • HTML & CSS
  • GitLab CI/CD