Battlefield Portal Community
A Community that loves Battlefield portal, and create tools and utilities around it. We have over 17k users on website and 2k users in discord.
We also have many projects available to contribute to.
The organization uses python for most of the projects so some familiarly with the language will help.
Organization repository: https://github.com/battlefield-portal-community (opens in a new tab)
About the Mentors
Vibhakar (opens in a new tab) is a passionate full stack developer, learning data science and AI these days. He loves to work with backend technologies and is an avid supporter of open source software.
Connect with him at
Projects Available
-
Portal Library (opens in a new tab)
-
A PaaS that allows players to share custom game modes created in Battlefield Portal
-
Tasks Available
-
Fix Burger menu state on mobile
- Issue Tracker - #211 (opens in a new tab)
- On mobile devices the backdrop does not hide itself after the "Burger Menu" is closed.
-
States
- Open
- Error
- The backdrop must hide itself when the menu is closed.
-
All images must have good alt attribute
- Issue tracker - #171 (opens in a new tab)
As the website is in the process to be compliant of WCAG 2 (opens in a new tab) Standard, We must make sure all the images have good descriptive
alt
attribute inimg
tagsThis task has two parts which will determine the overall scope of the task.
- populating
alt
attribute of existingimg
tags. - Writing a pre-commit (opens in a new tab) hook that makes sure all the
img
tags in a change have goodalt
attribute- If you wish to do this too please open a new issue (opens in a new tab), then this task will be moved to
-
Create and design template for login cancelled page
- Issue Tracker - #168 (opens in a new tab)
Currently if a user cancels the login flow or the flow becomes corrupt, we show a bare bones html template.
In this task you will
- Design and create the UI in figma (link to org's figma will be provided).
- Implement the mock design in a template.
-
Remove
Waypoint.infinite
and use custom implementation- Issue Tracker - #129 (opens in a new tab)
Currently to achieve infinite scroll in various places the project uses
Waypoint
library, but the current implementation break a lot (especially on firefox), in this task you will- Identify all the places where infinite scroll is required
- Create a custom js library (or use a better one) to achieve the infinite scroll on all places required
-
Add a "More from Creator section" to Experience Page
- Issue Tracker - #152 (opens in a new tab)
In the community many people have create more than one Experience and it would be awesome if you could showcase some of the Experiences created by the user on the Experience Page
The Experiences created by the same user must be displayed at the bottom of the page.
-
Add Cache headers for Cloudflare to consume
Cloudflare provides free caching service to all users, but Currently we are not making use of it on the Frontend, this leads to more requests at server and more cpu cycles.
we can add caching to Frontend by making use of the
Cache-Control
http header. In this task you will- Identify all the points where we can use Cache
- Think of an efficient way to add headers for all points
- Set cache age accordingly
-
Add
Variants
to Experience Model- Issue Tracker - #108 (opens in a new tab)
A creator of a custom game mode almost always wants to publish their game mode on different settings as many players prefer to play a game mode on different "eras", So Currently the user submits many experiences which are essentially the same with some different settings, this leads to the home page becoming very cluttered. So we are looking add "Variants" of a experiences that the user can add and they wont be show on the page by default.
This task has major feature addition on both backend and frontend,
- Frontend
- Design or use the current decided UI to display that a experience has Variants
- Think of a good way to show variants.
- Come up with a workflow to submit/mark experiences as variants.
- Backend
- Create a relationship between the main and variant experience.
- Update the form builder accordingly.
- add a way to manage already existing experiences.
-
Migrate to
AbstractUser
When I started this project I made a grave mistake of using default user model for everything, fast forward to today we maintain two models
Users
andProfiles
which ideally should be one. In this task we will have to migrate every user to an CustomUser model that subclasses fromAbstractUser
. Tasks- Identify and replace every direct usage of
User
model withget_user_model
. - Create a new Custom user and define a relationship with
Profile
model. - Write migrate strategy to migrate all current users to the
AbstractUser
model
This is the basic overview of the task, a much detailed discussion must take place before starting with task.
- Identify and replace every direct usage of
-
Add an Experience logic backup service
Each experience has two things a
Share Code
and aPlaygroundID
, if a user provides theirPlaygroundID
we can retrieve all information about the experience using gametools api (opens in a new tab),Task: create a system or api where a user can provide
PlaygroundID
and we save the playground info and give them back a unique URL using which the user can later retrieve the infoThis is the basic overview of the task, a much detailed discussion must take place before starting with task.
-
Create a per-branch deployment system
Just like how vercel auto deploys feature branch on subdomains, it would be nice to have a system same as that in our project too.
This is the basic overview of the task, a much detailed discussion must take place before starting with task.
-
Propose your own idea
If you have some idea that you think is worth adding to the project, go ahead and create a new issue at project repo (opens in a new tab)
-
-
Tech Stack (django based)
- Backend
- Wagtail (A django based CMS)
- PostgreSQL
- DiscordAPI
- Frontend
- TailwindCSS
- JQuery
- DevOps
- Github Actions
- Docker
- Portainer
- Nginx
- Backend
-