Skip to content
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
55 changes: 0 additions & 55 deletions .github/workflows/authorized-changes-detection.yml

This file was deleted.

59 changes: 59 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,65 @@ jobs:
echo "Error: Close this PR and try again."
exit 1

Check-Sensitive-Files:
if: ${{ github.actor != 'dependabot[bot]' && !contains(github.event.pull_request.labels.*.name, 'ignore-sensitive-files-pr') }}
name: Checks if sensitive files have been changed without authorization
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get Changed Unauthorized files
id: changed-unauth-files
run: |
SENSITIVE_FILES=(
".github/"
"CNAME"
"static/CNAME"
"package.json"
"sidebar"
"docusaurus.config.js"
"babel.config.js"
"CODEOWNERS"
"LICENSE"
"./*.md"
"package-lock.json"
"tsconfig.json"
"pnpm.lock"
"static/.nojekyll"
".gitignore"
".prettierignore"
".prettierrc"
)
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
DELETED_FILES=$(git diff --name-only --diff-filter=D ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
SENSITIVE_CHANGED=false
ALL_CHANGED_FILES=""
for FILE in $CHANGED_FILES $DELETED_FILES; do
for PATTERN in "${SENSITIVE_FILES[@]}"; do
if [[ "$FILE" == "$PATTERN" || "$FILE" == "$PATTERN"* || "$FILE" == *"$PATTERN"* ]]; then
ALL_CHANGED_FILES+="$FILE "
SENSITIVE_CHANGED=true
fi
done
done
echo "all_changed_files=$ALL_CHANGED_FILES" >> $GITHUB_OUTPUT
echo "any_changed=$SENSITIVE_CHANGED" >> $GITHUB_OUTPUT
echo "any_deleted=$([ -n "$DELETED_FILES" ] && echo "true" || echo "false")" >> $GITHUB_OUTPUT

- name: List all changed unauthorized files
if: steps.changed-unauth-files.outputs.any_changed == 'true' || steps.changed-unauth-files.outputs.any_deleted == 'true'
env:
CHANGED_UNAUTH_FILES: ${{ steps.changed-unauth-files.outputs.all_changed_files }}
run: |
for file in ${CHANGED_UNAUTH_FILES}; do
echo "$file is unauthorized to change/delete"
done
echo "To override this, apply the 'ignore-sensitive-files-pr' label"
exit 1

Test-Docusaurus-Deployment:
name: Test Deployment to https://developer.palisadoes.org
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
# Contains the PDF file of the Tag as JSON string, thus does not need to be formatted
src/components/CheckIn/tagTemplate.ts
4 changes: 4 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"endOfLine": "auto"
}
143 changes: 143 additions & 0 deletions docs/internships/gsoc-previous/2022.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
---
id: gsoc-ideas-2022
title: 2022
sidebar_position: 1
---

Our GSoC 2022 ideas.

---

There are some well known areas of improvement that we have listed below. It is really important that we complete these over the summer and we would also welcome any other ideas that could use these as a foundation.

In general we would like to reduce the learning curve for new sysadmins. Our API documentation needs to be clearer, especially as we hope to launch an alpha version of the software this year. It is important that our online documentation is updated as any part of the project.

Please review the "Desired Features" section of this website for **even more ideas** and further necessary information.

## Important Note on Testing

**All code submitted must be tested.** We are working towards getting to 100% test code coverage on all Talawa repositories. This will mean that you will have to write tests for new code you write or modify.

The test percent code coverage requirement will incrementally rise with each pull request. In some cases you may have to write a few extra tests for code you may not have updated. We hope this will be rare.

## Primary Idea Areas

Here are the features we'd like to implement in the coming months.

### Cloud Service Capability

Talawa needs to be cloud capable to be universally accepted. This means we'll need to add suitable features to meet this goal. This section outlines some important focus areas.

#### Portal Plugin Architecture

We need the ability to control the functionality of the API, and by extension the mobile app, via plugins. The API would need to detect the existence of a plugin, and automatically query the plugin for authorization to do some action.

The plugins would need to be:

1. Easy to install and remove either online or the uploading of code
1. Able to be installed, activated and configured at the global and/or per-organization level served by the API.
1. Easy to configure in the Talawa-Admin portal.

We need to create a working architecture to do this.

##### Desired Plugins

We also need specific standard plugins to be created:

1. A plugin to allow organization administrators to create advertising from local companies and add it to the mobile app news feed. This would require ways to launch and track simple campaigns for fixed periods of time for advertising customers.
1. A plugin to accept donations or membership fees via the mobile app.
1. If Talawa were to be launched as a cloud service, then the ability to install a plugin to define and enforce tiers of service with associated billing would be needed.

GSoC Proposal Tags: talawa-api, plugins

We have many areas in which we need good ideas. This section highlights some primary areas of focus.

### API Dataloaders

The Talawa API uses a GraphQL API to interact with a MongoDB database. GraphQL has a well-known issue with making repetitive database queries. This is known as `the N+1 problem`. A common solution is to use Dataloaders. These increase efficiency by batching queries and optionally caching the results.

We need to find a way to adjust all our GraphQL resolvers to take advantage of this feature and cache the results where appropriate.

Here are some good resources that provide more background.

1. [GraphQL N+1 Problem](https://www.youtube.com/watch?v=uCbFMZYQbxE)
1. [Using dataloaders](https://sayasuhendra.github.io/graphql-js/7-using-data-loaders/)
1. [GraphQL DataLoader with Node.js](https://www.youtube.com/watch?v=2cSVIWDUSn4)
1. [What is the N+1 Problem in GraphQL?](https://medium.com/the-marcy-lab-school/what-is-the-n-1-problem-in-graphql-dd4921cb3c1a)
1. [How to use DataLoaders in GraphQL](https://medium.com/the-marcy-lab-school/how-to-use-dataloader-js-9727c527efd0)

### API Multi-tennancy

As the talawa app will be used by a number of different individuals, it is worth asking: how best can we separate different user instances to best optimise resources? This is at the heart of a concept called Multitenancy. There are in general two ways to go about doing this, namely, instance replication and data segregation. We want to focus on the data segregation method.

In the data segregation model, the application is shared between tenants but the data of each tenant is stored in separate data stores. Separate data stores could be separate databases or separate schema within the same database. How would you implement this?

### Event Management

Community organizations often have many events that need to be managed. Here are some small ideas of what could be done. Expand on these if you can.

#### Volunteer and Attendee Checkins for Events

An organization may rely on volunteers for manage events. It would be good to have a simple system for users to be able to let the event coordinators know that they are on site and available.

The system could also be used to have attendees confirm that they are actually at the event. This would help with capacity planning.

#### Event Registrations

There could be a need to limit the number of persons attending an event by setting a maximum number for registrations when they are created. Event organizers would then know who to admit to the event if space were limited.

#### Facilities Registrations

Just like with event registrations, there may be a need to reserve a room, building, hall or field for an event. Reserving these areas would be an interesting feature to consider.

### Membership Management

There needs to be a way to add members to a group in a trusted way. Many persons in developing regions don't have access to email services, and the organizations may not have the funds to invest in a text based authentication scheme. Also, person may not be literate enough to read detailed instructions. There needs to be a way, that is universally available on all modern feature and smart phones, to allow persons to authenticate themselves when joining an organization. Some mobile apps use a QR code system for example, there could be other methods too.

### Groups Management

Groups won't be just for chats and communication. They may also arrange activities and events together. There should be a way to help them do this. For example, automatically inviting all members of a group to a group event. There are many other areas for improvement

### Notifications and Reminders

It would be good to be able to send notifications and reminders to selected groups of persons such as:

1. All members of an organization
1. All persons registered for an event
1. All members of a group

These could be sent directly and/or part of their news feed.

### Talawa-Admin Multilingual Support

We need to ensure that all the functionality in the admin portal have multilingual support. We will need ways for persons to easily switch between languages at installation, on login, on registration and at any time during the operation of the software. A thorough review of how this and more could be implemented will be required.

A thorough review of the mobile app is needed to make sure that all screens have multilingual support.

### Donation and Membership Fee Management

Organizations may need simple ways to track donations and membership fees

### Multisite Security

New organizations can only be created using the Talawa-Admin portal. We need to think of ways that this:
1. Can only be done by super-administrator users
1. Can only be done using the Talawa-Admin portal

GSoC Proposal Tags: multisite

## Secondary Idea Areas

We have other areas that need good ideas. This section highlights some primary areas of focus.

### Backend Improvements

Take a look at the [Desired Features](https://palisadoesfoundation.github.io/talawa-docs/docs/features/features-introduction) section for guidance on what we'd like to achieve. Use these to create a unique vision of what you think Talawa could become.

Don't be limited by our desired features. Think of new areas of functionality for the various repos. How could it be better for both the end user and administrators?

Remember, preparing the backend for future features and creating intuitive ways of user interaction with the backend will be important.

### Operational Considerations

Many community hosting their own solution won't have the funds to pay for additional services. They will be using slower, older equipment with limited storage. There will be low technical ability too. In many cases the users may not have completed schooling. Ideas on how to resolve these issues will be helpful.
4 changes: 3 additions & 1 deletion docs/internships/gsoc-previous/2023.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
---
id: gsoc-ideas-2023
title: 2023
sidebar_position: 1
sidebar_position: 2
---

Our GSoC 2023 ideas.

---

## General - Primary Idea Areas

This section outlines the primary features we'd like to implement in the coming months with impacts on all the applications.
Expand Down
4 changes: 3 additions & 1 deletion docs/internships/gsoc-previous/2024.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
---
id: gsoc-ideas-2024
title: 2024
sidebar_position: 2
sidebar_position: 3
---

Our GSoC 2024 ideas.

---

## Idea Areas

This section outlines the primary features we'd like to implement in the coming months with impacts on all the applications.
Expand Down
4 changes: 3 additions & 1 deletion docs/internships/gsoc-previous/2025.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
---
id: gsoc-ideas-2025
title: 2025
sidebar_position: 3
sidebar_position: 4
---

Our GSoC 2025 ideas.

---

## Talawa Areas

Talawa is a suite of applications that is aimed at managing the memberships of community based organizations. This concept may be new to you, and we suggest you research non-profit organization and open source software project management software as a starting point. Talawa needs to have a broader reach and your additions to our ideas will make the difference. We have included links to YouTube videos on this page that will be useful in improving your understanding.
Expand Down
49 changes: 49 additions & 0 deletions docs/internships/gsoc-previous/_2026.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@

## Introdduction

1. Add ideas at the ***very bottom*** of this document
2. Use this as an example:
1. https://github.com/PalisadoesFoundation/developer-docs/blob/main/docs/internships/gsoc-previous/2025.md
3. Here is the markdown template

### Repository Name: Add project idea title here

1. **Description:** Add a description of the project here.
1. **Sub Project #1**:
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Feature 1**
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Feature 2**
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Sub Project #2**:
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Feature 1**
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Feature 2**
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Expected Outcomes:**
1. Add description 1 here.
1. Add description 2 here.
1. Add description N here.
1. **Repos to update:** Talawa, Talawa-API, Talawa-Admin
1. **Skills Required:** Code stacks related to repos above. See introduction section.
1. **Depends on Project:** None
1. **Project Size:** 350 hours (Large)
2. **Possible Mentors:** TBD
3. **Difficulty:** Hard
4. **Impact Definition:** "Low-hanging fruit" OR "Risky/Exploratory" OR "Fun/Peripheral" OR "Core development" OR "Infrastructure/Automation"

---
## ADD IDEAS HERE
Loading
Loading