Code for GovTech (C4GT) Open Source Program
π βWe believe open source is a public good and across every industry, we have a responsibility to come together to improve and support the security of open-source software we all depend on.β.ππ Code for GovTech (C4GT).
C4GT has been conceptualised as a summer coding program to create a community that can build and contribute to global digital public goods.
π An opportunity for 3rd/4th year engineering students from Tier 1/2 campuses in India to experience the GovTech space.
This repository is created to hold every documentation generated during C4GT.This website is built using Docusaurus 2, a modern static website generator.You Can ( Visit π )
If you have any queries or any suggestions then reach out to us at Mail.
In order to make a hassle-free environment, I implore you all (while contributing) to follow the instructions mentioned below! Happy Submissions π
Project Name | Description | Mentors Assigned |
---|---|---|
UCI Web Channel | UCI is an open source platform that enables exactly this - a configurable platform to enable personalised chatbot communication across channels such as WhatsApp, Telegram, SMS, email and more. With UCI you can plugin any federated set of users, any micro experience generating transformers and any distribution channel adapters. | Shruti&Chakshu |
Admin for Sunbird RC | Sunbird RC is an open-source software framework for rapidly building electronic registries, enable attestation capabilities, and build verifiable credentialing with minimal effort. X-Admin is an open-source, low-code framework to create internal admin tools for governance use cases. | Shruti&Chakshu |
UCI Signal Integration | UCI is an open source platform that enables exactly this - a configurable platform to enable personalised chatbot communication across channels such as WhatsApp, Telegram, SMS, email and more. With UCI you can plugin any federated set of users, any micro experience generating transformers and any distribution channel adapters. | Shruti&Chakshu |
Centralised Access Control | OAuth2 Proxy is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. This enables the creation of stateless microservices that can be verified through a network layer. The goal is to add FusionAuth as a provider that will enable all GovTech products to not include authentication-related code inside microservices, enabling the creation and management of ACL outside of a microservice in a reusable way. | Chakshu |
Competency Passbook | A competency ledger on a private blockchain network of schools for awarding badges and certificates to students can remain decentralised in the private blockchain network of schools and will always be one source of truth for authenticity. | Bharat |
Low-code Admin Console | X-Admin an open-source framework to create internal admin tools for governance use cases. | Bharat |
Workflow Management | The aim of this project is to enable GovTech workflows such as If This Then That (IFTTT), Escalations and Alerts to be configured in a reusable manner and run through a combination of open source products - n8n (workflow builder) and temporal (runner). | Ashish |
Machine Learning Platform | While there is a lot of data, itβs not easy to find people who can use that to good effect. The aim of this project is to build a platform that can be used by anyone to train models from these datasets, experiment between different models, deploy the better performing one and monitor the performance in production. | Ashish |
URL Shortener (YAUS) | YAUS is an open-source service for generating shortened URLs. | BACHI |
Doc Generator | Doc generator is a plugin-based service that will help in generating reports, docs, pdfs, from various data sources and in any required format and layout. The Design Doc can be found here. | BACHI |
Shiksha Postgres Adapter | This project aims to create a reference adapter which can interact with a Postgres database. This can be given as a reference implementation to deployers who may not have an existing backend.The project will involve creating a new adapter in Shiksha that uses Postgres as a backend. The schemas in Postgres can mimic the schemas from the Shiksha specification to make the implementation of the adapter simple. | Ashwin |
Shiksha CMS and Announcements Module | As Shiksha starts getting deployed, apart from the core functionalities like worksheets and attendance, there would be non-functional requirements like creating landing pages, welcome screens and content pages. Content pages would be useful to show information about the sponsoring ministry / authority, help and FAQ pages. Deployers will need to be able to create such content pages and also announcements (eg show announcements about events or updates).The project will allow 2 areas:Manage announcements and Manage content pages | Ashwin&Arun |
Shiksha Frontend Restructuring | The aim of Shiksha is to make highly configurable modules which can be embed and extend easily by developers in any of their application and used standalone by providing data points to it. | Ashwin&Arun |
Shiksha Design System | The aim of Shiksha is to make highly configurable modules which can be embed and extend easily by developers in any of their application and used standalone by providing data points to it. | Ashwin&Arun |
Sunbird QUML Player | Sunbird inQuiry Sunbird inQuiry is a building block, open sourced under MIT license, that enables setting up of question banks that can contain questions and question sets for various use cases such as practice, assessment, quiz, worksheet and many more. | Kartheek Palla |
Before we proceed, it's better to know the difference between Git and Github. Git is a version control system (VCS) that allows us to keep track of the history of our source code , whereas GitHub is a service that hosts Git projects.
We assume you have created an account on Github and installed Git on your System.
Now enter your name and E-mail (used on Github) address in Git, by using following command.
$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"
This is an important step to mark your commits to your name and email.
You can make a copy of the project to your account. This process is called forking a project to your Github account. On Upper right side of project page on Github, you can see -
Click on fork to create a copy of project to your account. This creates a separate copy for you to work on.You have forked the project you want to contribute to your github account. To get this project on your development machine we use clone command of git.
$ git clone https://github.com/Code4GovTech/C4GT.git
Now you have the project on your local machine.
Remote means the remote location of project on Github. By cloning, we have a remote called origin which points to your forked repository. Now we will add a remote to the original repository from where we had forked.
$ cd <your-forked-project-folder>
$ git remote add upstream https://github.com/Code4GovTech/C4GT
You will see the benefits of adding remote later.
Open Source projects have a number of contributors who can push code anytime. So it is necessary to make your forked copy equal with the original repository. The remote added above called Upstream helps in this.
$ git checkout main
$ git fetch upstream
$ git merge upstream/main
$ git push origin main
The last command pushes the latest code to your forked repository on Github. The origin is the remote pointing to your forked repository on github.
Usually, all repositories have a main branch that is regarded to be stable, and any new features should be developed on a separate branch before being merged into the main branch. As a result, we should establish a new branch for our feature or bugfix and go to work on the issue.
$ git checkout -b <feature-branch>
This will create a new branch out of master branch. Now start working on the problem and commit your changes.
$ git add --all
$ git commit -m "<commit message>"
The first command adds all the files or you can add specific files by removing -a and adding the file names. The second command gives a message to your changes so you can know in future what changes this commit makes. If you are solving an issue on original repository, you should add the issue number like #35 to your commit message. This will show the reference to commits in the issue.
You now have a new branch containing the modifications you want in the project you forked. Now, push your new branch to your remote github fork.
$ git push origin <feature-branch>
Now you are ready to help the project by opening a pull request means you now tell the project managers to add the feature or bug fix to original repository. You can open a pull request by clicking on green icon -
Remember your upstream base branch should be main and source should be your feature branch. Click on create pull request and add a name to your pull request. You can also describe your feature.
Congratulations! You've already made your first contribution.π₯³
Good Luck for your journey