Submissions from 2023 students will have much higher priority than submissions from 2022, SAP, or higher students.
Please take note of this before planning to attempt this freepass challenge.
Embracing the digital era, we recognize the need for transparent and efficient information management in elections. We're embarking on a groundbreaking project to redefine the democratic process and we want you on board!
We aim to create an innovative election platform with features like candidate campaign forums, user participation, and administrative control. Your expertise is vital, and we're eager to hear your ideas.
Join us on this exciting journey to reshape the future of elections. Your contribution is key!
As we have mentioned earlier, we need technology that can support BCC Election in the future. Please consider these features below:
- New user can register account to the system ✔️
- User can login to the system ✔️
- User can edit their profile account ✔️
- User can view the candidate's posts ✔️
- User can comment on candidate’s posts ✔️
- Users can view information about the candidates ✔️
- Users can cast their votes for candidates during the specified election period ✔️
- Admin can promote user to candidate ✔️
- Admin can view the candidate’s posts ✔️
- Admin can set the start and end dates for the election period ✔️
- Admin can delete the user/candidate ✔️
- Admin can delete the candidate's posts ✔️
- Admin can delete user comment ✔️
- Candidate can create, update, delete a post ✔️
🌎 Service Implementation
GIVEN => I am a new user
WHEN => I register to the system
THEN => System will record and return the visitor's username
GIVEN => I am a user
WHEN => I log in to the system
THEN => System will authenticate and grant access based on user credentials
GIVEN => I am a user
WHEN => I edit my profile account
THEN => The system will update my account with the new details
GIVEN => I am a user
WHEN => I view a candidate's post
THEN => System will display the selected candidate's post along with its details
GIVEN => I am a user
WHEN => I comment on a candidate’s post
THEN => System will record my comment and return it under the candidate’s post
GIVEN => I am a user
WHEN => I took an action to view candidate's posts
THEN => System will show a candidate's post
GIVEN => I am a user
WHEN => I cast my vote for a candidate during the specified election period
THEN => System will register my vote for the selected candidate
GIVEN => I am an admin
WHEN => I promote a user to a candidate
THEN => System will update the user's status to candidate
GIVEN => I am an admin
WHEN => I view a candidate’s posts
THEN => System will display the posts created by the candidate
GIVEN => I am an admin
WHEN => I set the start and end dates for the election period
THEN => System will update the election period accordingly
GIVEN => I am an admin
WHEN => I delete a user or candidate
THEN => System will remove the user/candidate from the system
GIVEN => I am an admin
WHEN => I delete a candidate’s post
THEN => System will show a deletion status message and delete relevant post
GIVEN => I am an admin
WHEN => I delete a user comment
THEN => System will remove the user comment from the candidate's post
GIVEN => I am a candidate
WHEN => I create a new post
THEN => System will record and show the creation status message
GIVEN => I am a candidate
WHEN => I update my post
THEN => System will apply the changes and show an update status message
GIVEN => I am a candidate
WHEN => I delete one of my posts
THEN => System will show a deletion status message and delete relevant post
We want to see your perspective about these problems. You can define various types of entities or actors. One thing for sure, there is no true or false statement to define the entities. As long as the results are understandable, then go for it! 🚀
You might be overwhelmed by these requirements. Don’t worry, here’s a list of some tools that you could use (it’s not required to use all of them nor any of them):
- Example Project
- Git
- Cheatsheets
- REST API
- Insomnia REST Client
- Test-Driven Development
- Clean Architecture
- GraphQL
- gRPC
- Docker Compose
BEFORE CHOOSING YOUR LANGUAGE, PLEASE VISIT OUR CONVENTION ON THIS PROJECT
Any code that did not follow the convention will be rejected!
- Golang (preferred)
- Java (preferred)
- NodeJS
- PHP
You are welcome to use any libraries or frameworks, but we appreciate if you use the popular ones.
The implementation of this project MUST be in the form of a REST, gRPC, or GraphQL API (choose AT LEAST one type).
- Fork this repository
- Follow the project convention
- Finish all service implementations
- Write the installation guide of your back-end service in the section below
Write how to run your service in local or development environment here. If you use Docker to serve your DBMS or your server, you will receive bonus points for your submission.
📞 Contact
Have any questions? You can contact either Vinncent or Izra.
Please follow the instructions on the Contributing guide.
This is not the only way to join us.
But, this is the one and only way to instantly pass.