Skip to main content

Midterm Project

Develop a Website using Django Web Framework (in groups)


Learning Objectives

  1. Design web pages
  2. Build a website using Django web framework that follows MTV (Model-Template-View) architectural pattern
  3. Use a CSS framework or toolkit to implement Responsive Web Design
  4. Write unit tests and deployment (bonus)

Notes

In addition to the learning objectives above, you must also learn several scholarly aspects expected from potential bachelor graduates. Among those that are relevant in this course are grit, independence, rigor, and metacognition. In other words, you are expected to have the ability to set learning strategies that suit oneself including planning, monitoring, and evaluating their independent learning process. This includes the ability to understand, communicate problems, discuss, and ask questions.

You also need to have a positive attitude when dealing with various circumstances that may affect you in positive or negative way. Although it may be difficult to be always in positive attitude, try to strive for it so any circumstances can be beneficial in regards to achieving the previously mentioned scholarly aspects.

A negative attitude will only make things worse and eliminate the benefits of this project as a learning experience that will be useful in the future. The teaching team (lecturers and teaching assistants) will try their best to assist you in the learning process so you can keep pace with the course and learn as much as possible.

As an intermezzo, there is a video (attached below) that is quite popular and hopefully can entice you to keep working hard and practising for your success in the future:



Good luck and have a great time working on the project! 😄

General Rules of the Project

  1. Each group comprises of 4-5 person. Group members assignment can be seen on SCELE.
  2. Each group should create a single Git repository on one GitHub organization that all group members use to collaborate. Share the link to your group's Git repository through a submission slot on SCELE.
  3. Each group may propose their own ideas for the application they are building. The theme for the application is books and literacy. This theme was chosen for three reasons:
    • To raise our awareness of the importance of literacy.
    • This theme aligns with the theme of the 12th Indonesian Language Congress, which will be held from October 25 to 28, 2023, titled "Literacy in Diversity for the Progress of the Nation." The Indonesian Language Congress is the highest forum discussing language and literary issues in Indonesia. The Indonesian Language Congress is held every five years by the Language Development and Fostering Agency, Ministry of Education, Culture, Research, and Technology. https://kbi.kemdikbud.go.id/.
    • This theme is in line with the commemoration of Language and Literature Month, which is commemorated every October in Indonesia to remember the history of the birth of Bahasa Indonesia.
  4. Each group implements a book catalog in the form of class models and stores data from the dataset into the Django database. The book catalog dataset must contain a minimum of 100 books. The source of the book catalog dataset can come from anywhere, for example, from Project Gutenberg, Google Books API, Kaggle, and LONTAR Thesis Data." Here are some examples of dataset URLs that can be used:
  5. Each group member should work individually on a module. The modules will be decided by the group during project planning in the group and should be suitable for implementing the project idea.
  6. The midterm project is submitted as a unified web application.

Specific Rules for Each Group Member

  1. Implement models by writing their own models, reusing models provided by Django, or using models developed by other group members in separate module.
  2. Implement views to handle incoming requests and produce HTML/JSON-based responses.
  3. Implement HTML templates with a systematic and efficient structure, such as base.html, header.html, and footer.html.
  4. Implement templates using CSS framework/toolkit that assist in implementing responsive design (such as Bootstrap or Tailwind).
  5. Implement a page with a form that accepts user input that shall be processed by views. Examples of processing by views include inserting data into the model, querying data from the model, and updating data in the model.
  6. Implement client-side scripting and asynchronous data loading (AJAX) using JavaScript.
  7. Implement authentication and authorisation on a certain part of the functionality implemented in the module. For example, a menu is only visible when the user has logged in and authorised to view the hidden menu.
  8. Implement filters on the displayed book catalog dataset. For example, displaying a list of books based on the author's name.

Project Timeline

Milestones and DeliverablesDue Dates and Remarks
Milestone I (40%)
  • A Git repository on GitHub for the group project
  • A README.md in the group project repository that describes:
    1. Group name and members
    2. The story of the application and its benefits
    3. List of modules (or, features) that will be implemented
    4. The source of the book catalog dataset
  • Defined the possible user roles in the app (for implementing role-based access control)
Due Date: Wednesday, 11 October 2023, at 23:55 (11:55 P.M.) WIB.Submit the link to your group project's GitHub page to the submission slot in SCELE.
Milestone II (60%)

(Implemented feature modules)

  • Integrated modules from each group member
  • Implemented URL routing
  • Implemented data models
  • Implemented the Django's views
  • Integrated as a unified web application.
  • Delivered the features according to the proposed ideas and design documents
Due Date: Sunday, 29 October 2023, at 23.55 (11:55 P.M.) WIB

Submission Criteria: All modules are integrated and can be used by user when using the Django Project

Bonus (5%)
  • Write unit tests that verify the implementation correctness, and ensure the overall code coverage of the project reached at least 80%
  • Implement continuous integration (CI) and continuous deployment (CD) using GitHub Actions.
  • Display the status badges of the GitHub Actions in README.md. For example: status badge that reports whether the app is successfully deployed by GitHub Actions, status badge that reports code coverage