Submissions from 2022 students will have much higher priority than submissions from 2021, SAP, or higher students.
Please take note of this before planning to attempt this freepass challenge.
In this digital age, transparency and management of information is greatly needed, especially in the field of education. At some point, there is an investor who establishes a university, while the university requires a system for managing information from its students.
This application is intended for university students to be able to access information provided by the university. To accomplish this quickly, BCC will need help. By this letter, we humbly invite you to join us on this journey to figure out the best solution. We cannot wait to see your ideas to overcome this problem.
As we have mentioned earlier, we need technology that can support BCC University in the future. Please consider these features below:
- A new user can register account to the system ✔
- A new user can login to the system ✔
- User can edit their profile account ✔
- User can view a list of classes ✔
- User can add class and has maximum of 24 sks. ✔
- User can drop class ✔
- User can view participants of the classes they have taken ✔
- Admin can remove user from class ✔
- Admin can add user to class ✔
- Admin can get all class which has a difference course ✔
- Admin can create new class with specific course ✔
- Admin can edit the name of the class and the type of course that is owned ✔
- Admin can delete the class ✔
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 took an action to edit my account
THEN => System will show a "successfully edited" notification
GIVEN => I am a user
WHEN => I took an action to see my account
THEN => System will show the user's profile
GIVEN => I am a user
WHEN => I took an action to view all class
THEN => System will show all classes
GIVEN => I am a user
WHEN => I took an action to add new class
THEN => System will show a "successfully added new class" notification
GIVEN => I am a user
WHEN => I took an action to drop class
THEN => System will show a "successfully dropped a class" notification
GIVEN => I am a user
WHEN => I took an action to view participants of the classes they have taken
THEN => System will show all participants from the class
GIVEN => I am an admin
WHEN => I took an action to delete an user from class
THEN => System will show a "successfully deleted an user" notification
GIVEN => I am an admin
WHEN => I took an action to add an user to class
THEN => System will show a "successfully added new user" notification
GIVEN => I am an admin
WHEN => I took an action to delete a class
THEN => System will show a "successfully deleted" notification
GIVEN => I am an admin
WHEN => I took an action to create a class
THEN => System will record and return the class identity number
GIVEN => I am an admin
WHEN => I took an action to edit a class
THEN => System will show a "successfully edited" notification
GIVEN => I am an admin
WHEN => I took an action to view all classes
THEN => System will show all classes
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)
- NodeJS
- PHP
- Java
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 backend 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.
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.