Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Authentication with Firebase #8

Merged
merged 2 commits into from
Nov 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,23 @@ jobs:
with:
node-version: 18
cache: npm
cache-dependency-path: sb-docs/package-lock.json
cache-dependency-path: package-lock.json

- name: Install dependencies
run: |
cd sb-docs
npm ci
run: npm ci

- name: Build website
run: |
cd sb-docs
npm run build
env:
FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
FIREBASE_STORAGE_BUCKET: ${{ secrets.FIREBASE_STORAGE_BUCKET }}
run: npm run build

- name: Upload Build Artifact
uses: actions/upload-pages-artifact@v3
with:
path: sb-docs/build
path: build

deploy:
name: Deploy to GitHub Pages
Expand All @@ -55,4 +57,4 @@ jobs:
id: deployment
uses: actions/deploy-pages@v4
with:
path: sb-docs/build
path: build
16 changes: 9 additions & 7 deletions .github/workflows/pre-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ jobs:
with:
node-version: 18
cache: npm
cache-dependency-path: sb-docs/package-lock.json
cache-dependency-path: package-lock.json

- name: Install dependencies
run: |
cd sb-docs
npm ci
run: npm ci

- name: Test build website
run: |
cd sb-docs
npm run build
env:
FIREBASE_API_KEY: ${{ secrets.FIREBASE_API_KEY }}
FIREBASE_AUTH_DOMAIN: ${{ secrets.FIREBASE_AUTH_DOMAIN }}
FIREBASE_PROJECT_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
FIREBASE_STORAGE_BUCKET: ${{ secrets.FIREBASE_STORAGE_BUCKET }}
run: npm run build
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
.idea/
.history
node_modules/
.docusaurus/
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
.env

npm-debug.log*
yarn-debug.log*
yarn-error.log*

tmp
File renamed without changes.
29 changes: 18 additions & 11 deletions sb-docs/docs/02-onboarding/README.md → docs/02-onboarding.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
# Software Team On-boarding
# Onboarding

## 1. Meet the team :busts_in_silhouette:
* A full list of the `Sunbird team` members is available on the Sunbird website [`about page`](https://sunbird.ai/about/#SBteam).

- A full list of the `Sunbird team` members is available on the Sunbird website [`about page`](https://sunbird.ai/about/#SBteam).

## 2. Meetings :calendar:
* Meetings are generally held every Monday, Wendesday and Friday, as detailed below:
* The Monday meeting is a `Technical sync`, a meeting for the tech team to discuss tech-related issues (e.g blockers).
* The Wednesday meeting is a `Reading group meeting` for the tech team and it is meant for research-related discussions (reading papers, writing research proposals etc).
* The Friday meeting is a `Sunbird sync`, a company-wide meeting including non-tech departments like Operations and Finance. It is used to present progress on ongoing work.
* Specific `Software Team` meetings are held once a week (details are added to each team member's Google calendar).

- Meetings are generally held every Monday, Wendesday and Friday, as detailed below:
- The Monday meeting is a `Technical sync`, a meeting for the tech team to discuss tech-related issues (e.g blockers).
- The Wednesday meeting is a `Reading group meeting` for the tech team and it is meant for research-related discussions (reading papers, writing research proposals etc).
- The Friday meeting is a `Sunbird sync`, a company-wide meeting including non-tech departments like Operations and Finance. It is used to present progress on ongoing work.
- Specific `Software Team` meetings are held once a week (details are added to each team member's Google calendar).

## 3. Projects and OKRs :chart_with_upwards_trend:

**Projects:**<br/>
For a detailed list of projects and their related repositories, refer to the [`Projects and repos`](https://github.com/SunbirdAI/sunbird-docs/tree/main/03-projects-and-repos#projects-and-repositories) section.<br/>

**OKRs (Objectives and Key Results):**<br/>
Sunbird uses OKRs to plan, manage and track projects. Our OKRs are discussed and documented at the beginning of each quarter.

## 4. Task tracking :outbox_tray:

Tasks are created from the OKRs mentioned above and the software-related ones are tracked using [`GitHub projects`](https://github.com/orgs/SunbirdAI/projects).

## 5. Tech stack & tools :computer:

Sunbird coding projects include Machine Learning (ML) models, backend, frontend and DevOps/MLOps. The main programming languages used are `Python` for ML and backend and `Javascript` for frontend. <br/>
For a more detailed breakdown of the languages and tech stack (including libraries, frameworks and tools/platforms), please refer to the [`Development Process`](https://github.com/SunbirdAI/sunbird-docs/tree/main/04-development-process) section.

## 6. Deployment processes :wrench:

Please refer to the [`Release and Deployment`](https://github.com/SunbirdAI/sunbird-docs/tree/main/05-release-and-deployment#release-and-deployment) section.

## 7. Other onboarding activities :mailbox:
* 1-on-1s for new engineers with the rest of the team to build rapport and share company culture
* Setting goals and expectations for each team member's role and what success looks like in the role
* Buddy system, in which each new engineer is assigned a buddy/buddies to help them onboard onto the team

- 1-on-1s for new engineers with the rest of the team to build rapport and share company culture
- Setting goals and expectations for each team member's role and what success looks like in the role
- Buddy system, in which each new engineer is assigned a buddy/buddies to help them onboard onto the team
74 changes: 74 additions & 0 deletions docs/03-projects-and-repositories.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Projects and Repositories

This page provides an organized way to find all of Sunbird AI's repositories for different projects.
For a description of the projects (including details about the project aims and execution), please refer to the [Projects](https://sunbird.ai/projects/) page on the [Sunbird AI website](https://sunbird.ai/).

## African Language Technology

#### 1. Language translation

- [Translation portal (front end) - ReactJS](https://github.com/SunbirdAI/translation-portal-react)
- [Exploratory analysis, data preparation & training](https://github.com/SunbirdAI/parallel-text-EDA)
- [SALT Dataset](https://github.com/SunbirdAI/salt)
- [Sunbird AI SALT Inference server](https://github.com/SunbirdAI/sunbirdai-model-inferences)
- [Sunbird AI API](https://github.com/SunbirdAI/sunbird-ai-api)
- Datasets related to the use of [HuggingFace](https://huggingface.co/):
- [Sunbird HuggingFace datasets](https://github.com/SunbirdAI/datasets)
- [Test datasets](https://github.com/SunbirdAI/toy-hf-datasets)
- [Named Entity Recognition exploratory code](https://github.com/SunbirdAI/sunbird-ner)

#### 2. Speech-to-text

- [Data collection tool](https://github.com/SunbirdAI/speech-data-collection-twilio-whatsapp)
- [Model training](https://github.com/SunbirdAI/sunbird-speech)

#### 3. Text-to-speech

- [Data collection tool](https://github.com/SunbirdAI/sunbird-prompt-reader)
- [Model training](https://github.com/SunbirdAI/sunbird-speech)

#### 4. COVID 19 analysis & Text classification

- [COVID 19 Twitter data analysis](https://github.com/SunbirdAI/covid19-uganda-twitter-data-analysis)
- [COVID-19 Facebook data analysis](https://github.com/SunbirdAI/covid19-uganda-facebook-data-analysis)
- [Social media data dashboard (Streamlit)](https://github.com/SunbirdAI/social-media-data-dashboard)
- [SunBERT text classification model](https://github.com/SunbirdAI/SunBERT)
- [Text classification code](https://github.com/SunbirdAI/text-classification)
- [Radio advert analysis for COVID 19](https://github.com/SunbirdAI/radio-data-analysis)
- [Youtube text data collection](https://github.com/SunbirdAI/youtube-data-collection)
- [Web scraper for Ugandan news](https://github.com/SunbirdAI/ug-news-data-collection)

## Environmental Sensing (Noise Pollution Sensing)

#### 1. Noise Sensors Monitoring

- [Noise sensors monitoring (backend) - Django app](https://github.com/SunbirdAI/noise-sensors-monitoring)
- [Noise portal (front end) - ReactJS](https://github.com/SunbirdAI/noise-portal)
- [AWS IoT backend - Django app](https://github.com/SunbirdAI/aws-iot-noise-monitoring)

#### 2. Hardware (sensors)

- [Updated firmware with AWS communication](https://github.com/SunbirdAI/sb-generation2-stm32-firmware)
- [Generation 2 firmware](https://github.com/SunbirdAI/sbgen2firmware-clean)
- [Generation 1 firmware](https://github.com/SunbirdAI/sb-generation1-firmware)
- [Device audio upload 4G](https://github.com/SunbirdAI/audio-file-upload-4G)
- [Device audio upload 2G](https://github.com/SunbirdAI/audio-file-upload-2G)
- [TinyML experiment on Arduino](https://github.com/SunbirdAI/sb-tiny-ml-arduino-nano-33-ble)

#### 3. Noise data collection on mobile phones

- [Map of noise phone-collected data](https://github.com/SunbirdAI/noise-data-mapping)
- [Data pipeline for phone-collected data](https://github.com/SunbirdAI/odk-noise-data-pipeline) and [related exploratory code](https://github.com/SunbirdAI/odk-api-calls)

## Rural electrification planning

#### 1. Mini-grid site identification

- [Mini-grid site identification portal](https://github.com/SunbirdAI/mini-grid-site-identification)
- [Rural electrification project](https://github.com/SunbirdAI/lamwo-electrification)
- [Rural electrification project (front end)](https://github.com/SunbirdAI/lamwo-electrification-project)

## SEMA project

- [Device management/monitoring](https://github.com/SunbirdAI/sunbird-sema)
- [Device sound capture](https://github.com/SunbirdAI/sbgeneration1audiofeedback)
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
# Development Process

## High level (planning phase) :bookmark_tabs:

### 1. OKR planning

OKR planning is done at the beginning of every quarter and enables us to scope out what we want to achieve for a given quarter. We lay out the projects to be worked on, then we break down the work into features and tasks to be carried out by different teams.

### 2. System design document
Ideally, each major project (maybe even feature) should have a system design document. This helps us plan for the project and understand what kind of work needs to be done.

Ideally, each major project (maybe even feature) should have a system design document. This helps us plan for the project and understand what kind of work needs to be done.

This document should contain:

- Introduction of what the project is about.
- Requirements (functional and non-functional).
- Propose solution / Architecture
Expand All @@ -18,30 +22,39 @@ This document should contain:
Check out [this article](https://www.freecodecamp.org/news/how-to-write-a-good-software-design-document-66fcf019569c/) for a detailed explanation of what goes into each section.<br/><br/>

## Low level (development phase) :computer:

### 1. Task tracking
Once the system design document is done, the requirements should be clear enough to allow us to break down the work into tasks. Software tasks are tracked using [`GitHub projects`](https://github.com/orgs/SunbirdAI/projects).

Once the system design document is done, the requirements should be clear enough to allow us to break down the work into tasks. Software tasks are tracked using [GitHub projects](https://github.com/orgs/SunbirdAI/projects).

### 2. Development tools

Software projects fall into four main categories: `Machine Learning (ML) models`, `backend`, `frontend` and `DevOps/MLOps`.<br/>

**Tech Stacks**:
* ML models: `Python` (pandas, numpy, pytorch etc), Jupyter Notebooks and Google Colabs
* Backend: `Python` (Django, FastAPI)
* Frontend: `Javascript` (ReactJS)
* DevOps/MLOps: `Python` (pandas), AWS (S3, Lambda, API Gateway, IoT, Sagemaker), GCP, Twilio, HuggingFace

- ML models: `Python` (pandas, numpy, pytorch etc), Jupyter Notebooks and Google Colabs
- Backend: `Python` (Django, FastAPI)
- Frontend: `Javascript` (ReactJS)
- DevOps/MLOps: `Python` (pandas), AWS (S3, Lambda, API Gateway, IoT, Sagemaker), GCP, Twilio, HuggingFace

**Tools/Platforms**:<br/>
We use a number of software platforms/tools that all new software team members will be onboarded onto, including `Google Workspace` (email, calendar, chat, drive), `GitHub`, `AWS`, `GCP`, `Heroku`, and others (`HuggingFace`, `Weights & Biases`, `Heroku`, `Twilio` etc).

### 3. Coding, collaboration and review
We use [`GitHub`](https://github.com/SunbirdAI) to store and track our coding work.<br/><br/>

We use [GitHub](https://github.com/SunbirdAI) to store and track our coding work.<br/><br/>
Our repositories follow a simple repository convention laid out in this [document](https://docs.google.com/document/d/1a4QsLAKhew-5YyAtDO3dTyMsAM3yTDSkgSAPfg_-bFM/edit?usp=sharing), while the code itself follows general well-known coding conventions ([PEP Style Guide](https://peps.python.org/pep-0008/) for Python code and [Mozilla Developer Guidelines](https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide/JavaScript) for Javascript).<br/><br/>
When working with other team members on the same repository, start by pulling the latest changes from the repository (assuming you have cloned the repository already. Create a new branch from the default branch (usually `main`). After doing your task, create a pull request and link it to the related `GitHub projects task` in order to automate the task tracking process.<br/><br/>
When done, you can assign a reviewer to your pull request to review it and possibly give feedback/comments.

### 4. Documentation

Documentation is done in two ways:
* Detailed, specific technical documentation in the `README` file of the specific project repository
* General documentation in this ([`Sunbird docs`](https://github.com/SunbirdAI/sunbird-docs)) repository

- Detailed, specific technical documentation in the `README` file of the specific project repository
- General documentation in this [Sunbird docs](https://github.com/SunbirdAI/sunbird-docs) repository

### 5. Deployment
Please refer to the [`Release and Deployment`](https://github.com/SunbirdAI/sunbird-docs/tree/main/05-release-and-deployment#release-and-deployment) section.

Please refer to the [Release and Deployment](https://github.com/SunbirdAI/sunbird-docs/tree/main/05-release-and-deployment#release-and-deployment) section.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Release and Deployment

## API Deployment

For deploying and releasing the api in production, see the deployment process [here](https://github.com/SunbirdAI/sunbird-ai-api/blob/main/api-deployment-docs.md)

## Model Inference Deployment

The model inference deployment process can be found [here](https://github.com/SunbirdAI/sunbirdai-model-inferences/tree/main/deploy-docs)
8 changes: 8 additions & 0 deletions docs/06-design-docs/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"label": "Sunbird Design Documents",
"link": {
"type": "generated-index",
"description": "Contains design documentations for all projects"
}
}

Loading